From a7a8c142abdc9dffa55e1c8ca07ee21d717d8c8b Mon Sep 17 00:00:00 2001 From: Debbie Matthews Date: Wed, 23 Aug 2023 02:23:13 -0700 Subject: [PATCH 1/5] Add documentation for `st.status` (#783) * Create st.status page * Update API cards & docstrings * Update st.status API card summary * Add st.status to chat elements in API index --- content/library/api/api-reference.md | 28 + content/library/api/chat/chat.md | 16 +- content/library/api/status/index.md | 216 + content/library/api/status/status.md | 203 +- content/menu.md | 3 + public/images/api/progress.jpg | Bin 5252 -> 60875 bytes public/images/api/spinner.jpg | Bin 50128 -> 44152 bytes public/images/api/status.jpg | Bin 0 -> 61247 bytes python/streamlit.json | 12037 +++++++++++++++++++++++++ 9 files changed, 12304 insertions(+), 199 deletions(-) create mode 100644 content/library/api/status/index.md create mode 100644 public/images/api/status.jpg diff --git a/content/library/api/api-reference.md b/content/library/api/api-reference.md index 13a9e382b..53a0621b4 100644 --- a/content/library/api/api-reference.md +++ b/content/library/api/api-reference.md @@ -1424,6 +1424,20 @@ if prompt: st.write(f"The user has sent: {prompt}") ``` + + + +screenshot + +#### Status container + +Display output of long-running tasks in a container. + +```python +with st.status('Running'): + do_something_slow() +``` + @@ -1458,6 +1472,20 @@ with st.spinner("Please wait..."): do_something_slow() ``` + + + +screenshot + +#### Status container + +Display output of long-running tasks in a container. + +```python +with st.status('Running'): + do_something_slow() +``` + diff --git a/content/library/api/chat/chat.md b/content/library/api/chat/chat.md index 1783a01b0..24719f1d1 100644 --- a/content/library/api/chat/chat.md +++ b/content/library/api/chat/chat.md @@ -7,7 +7,7 @@ slug: /library/api-reference/chat Streamlit provides a few commands to help you build conversational apps. These chat elements are designed to be used in conjunction with each other, but you can also use them separately. -`st.chat_message` lets you insert a chat message container into the app so you can display messages from the user or the app. Chat containers can contain other Streamlit elements, including charts, tables, text, and more. `st.chat_input` lets you display a chat input widget so the user can type in a message. +`st.chat_message` lets you insert a chat message container into the app so you can display messages from the user or the app. Chat containers can contain other Streamlit elements, including charts, tables, text, and more. `st.chat_input` lets you display a chat input widget so the user can type in a message. Remeber to check out `st.status` to display output from long-running processes and external API calls. @@ -40,5 +40,19 @@ if prompt: st.write(f"The user has sent: {prompt}") ``` + + + +screenshot + +#### Status container + +Display output of long-running tasks in a container. + +```python +with st.status('Running'): + do_something_slow() +``` + diff --git a/content/library/api/status/index.md b/content/library/api/status/index.md new file mode 100644 index 000000000..0faebfddf --- /dev/null +++ b/content/library/api/status/index.md @@ -0,0 +1,216 @@ +--- +title: Display progress and status +slug: /library/api-reference/status +--- + +# Display progress and status + +Streamlit provides a few methods that allow you to add animation to your +apps. These animations include progress bars, status messages (like +warnings), and celebratory balloons. + + + + +screenshot + +#### Progress bar + +Display a progress bar. + +```python +for i in range(101): + st.progress(i) + do_something_slow() +``` + + + + +screenshot + +#### Spinner + +Temporarily displays a message while executing a block of code. + +```python +with st.spinner("Please wait..."): + do_something_slow() +``` + + + + +screenshot + +#### Status container + +Display output of long-running tasks in a container. + +```python +with st.status('Running'): + do_something_slow() +``` + + + + +screenshot + +#### Toast + +Briefly displays a toast message in the bottom-right corner. + +```python +st.toast('Butter!', icon='🧈') +``` + + + + +screenshot + +#### Balloons + +Display celebratory balloons! + +```python +st.balloons() +``` + + + + +screenshot + +#### Snowflakes + +Display celebratory snowflakes! + +```python +st.snow() +``` + + + + +screenshot + +#### Error box + +Display error message. + +```python +st.error("We encountered an error") +``` + + + + +screenshot + +#### Warning box + +Display warning message. + +```python +st.warning("Unable to fetch image. Skipping...") +``` + + + + +screenshot + +#### Info box + +Display an informational message. + +```python +st.info("Dataset is updated every day at midnight.") +``` + + + + +screenshot + +#### Success box + +Display a success message. + +```python +st.success("Match found!") +``` + + + + +screenshot + +#### Exception output + +Display an exception. + +```python +e = RuntimeError("This is an exception of type RuntimeError") +st.exception(e) +``` + + + + + + + + +screenshot + +#### Stqdm + +The simplest way to handle a progress bar in streamlit app. Created by [@Wirg](https://github.com/Wirg). + +```python +from stqdm import stqdm + +for _ in stqdm(range(50)): + sleep(0.5) +``` + + + + + +screenshot + +#### Custom notification box + +A custom notification box with the ability to close it out. Created by [@Socvest](https://github.com/Socvest). + +```python +from streamlit_custom_notification_box import custom_notification_box + +styles = {'material-icons':{'color': 'red'}, 'text-icon-link-close-container': {'box-shadow': '#3896de 0px 4px'}, 'notification-text': {'':''}, 'close-button':{'':''}, 'link':{'':''}} +custom_notification_box(icon='info', textDisplay='We are almost done with your registration...', externalLink='more info', url='#', styles=styles, key="foo") +``` + + + + + +screenshot + +#### Streamlit Extras + +A library with useful Streamlit extras. Created by [@arnaudmiribel](https://github.com/arnaudmiribel/). + +```python +from streamlit_extras.let_it_rain import rain + +rain(emoji="🎈", font_size=54, + falling_speed=5, animation_length="infinite",) +``` + + + + diff --git a/content/library/api/status/status.md b/content/library/api/status/status.md index 0661a19a8..d134bb308 100644 --- a/content/library/api/status/status.md +++ b/content/library/api/status/status.md @@ -1,202 +1,9 @@ --- -title: Display progress and status -slug: /library/api-reference/status +title: st.status +slug: /library/api-reference/status/st.status +description: st.status inserts a mutable expander element --- -# Display progress and status + -Streamlit provides a few methods that allow you to add animation to your -apps. These animations include progress bars, status messages (like -warnings), and celebratory balloons. - - - - -screenshot - -#### Progress bar - -Display a progress bar. - -```python -for i in range(101): - st.progress(i) - do_something_slow() -``` - - - - -screenshot - -#### Spinner - -Temporarily displays a message while executing a block of code. - -```python -with st.spinner("Please wait..."): - do_something_slow() -``` - - - - -screenshot - -#### Toast - -Briefly displays a toast message in the bottom-right corner. - -```python -st.toast('Butter!', icon='🧈') -``` - - - - -screenshot - -#### Balloons - -Display celebratory balloons! - -```python -st.balloons() -``` - - - - -screenshot - -#### Snowflakes - -Display celebratory snowflakes! - -```python -st.snow() -``` - - - - -screenshot - -#### Error box - -Display error message. - -```python -st.error("We encountered an error") -``` - - - - -screenshot - -#### Warning box - -Display warning message. - -```python -st.warning("Unable to fetch image. Skipping...") -``` - - - - -screenshot - -#### Info box - -Display an informational message. - -```python -st.info("Dataset is updated every day at midnight.") -``` - - - - -screenshot - -#### Success box - -Display a success message. - -```python -st.success("Match found!") -``` - - - - -screenshot - -#### Exception output - -Display an exception. - -```python -e = RuntimeError("This is an exception of type RuntimeError") -st.exception(e) -``` - - - - - - - - -screenshot - -#### Stqdm - -The simplest way to handle a progress bar in streamlit app. Created by [@Wirg](https://github.com/Wirg). - -```python -from stqdm import stqdm - -for _ in stqdm(range(50)): - sleep(0.5) -``` - - - - - -screenshot - -#### Custom notification box - -A custom notification box with the ability to close it out. Created by [@Socvest](https://github.com/Socvest). - -```python -from streamlit_custom_notification_box import custom_notification_box - -styles = {'material-icons':{'color': 'red'}, 'text-icon-link-close-container': {'box-shadow': '#3896de 0px 4px'}, 'notification-text': {'':''}, 'close-button':{'':''}, 'link':{'':''}} -custom_notification_box(icon='info', textDisplay='We are almost done with your registration...', externalLink='more info', url='#', styles=styles, key="foo") -``` - - - - - -screenshot - -#### Streamlit Extras - -A library with useful Streamlit extras. Created by [@arnaudmiribel](https://github.com/arnaudmiribel/). - -```python -from streamlit_extras.let_it_rain import rain - -rain(emoji="🎈", font_size=54, - falling_speed=5, animation_length="infinite",) -``` - - - - + diff --git a/content/menu.md b/content/menu.md index f9cc7fda6..4e13273ed 100644 --- a/content/menu.md +++ b/content/menu.md @@ -252,6 +252,9 @@ site_menu: - category: Streamlit library / API reference / Status elements / st.spinner url: /library/api-reference/status/st.spinner isVersioned: true + - category: Streamlit library / API reference / Status elements / st.status + url: /library/api-reference/status/st.status + isVersioned: true - category: Streamlit library / API reference / Status elements / st.toast url: /library/api-reference/status/st.toast isVersioned: true diff --git a/public/images/api/progress.jpg b/public/images/api/progress.jpg index 4a0b4c478718a460512b5e6ccdf11e828213755f..b8f8055da63a482c66eeedcb696266c5edd2943b 100644 GIT binary patch literal 60875 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 literal 5252 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�TCDRpIV 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
vJJ!*#JRZxocPgjXC|(Aai1M!nN0LrnYH7e|d5F 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\n

\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n", + "description": "

Display a chart using the Altair library.

\n", + "args": [ + { + "name": "altair_chart", + "type_name": "altair.Chart", + "is_optional": false, + "description": "

The Altair chart object to display.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L766" + }, + "streamlit.area_chart": { + "name": "area_chart", + "signature": "st.area_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns = ['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A', 'B', 'C'], 20)\n})\n\nst.area_chart(\n    chart_data,\n    x = 'col1',\n    y = 'col2',\n    color = 'col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple series with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['col1', 'col2', 'col3'])\n\nst.area_chart(\n    chart_data,\n    x='col1',\n    y=['col2', 'col3'],\n    color=['#FF0000','#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For an area chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L409" + }, + "streamlit.audio": { + "name": "audio", + "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", + "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", + "description": "

Display an audio player.

\n", + "args": [ + { + "name": "data", + "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", + "is_optional": false, + "description": "

Raw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", + "default": "channel" + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", + "default": "s" + }, + { + "name": "start_time", + "type_name": "int", + "is_optional": false, + "description": "

The time from which this element should start playing.

\n", + "default": null + }, + { + "name": "sample_rate", + "type_name": "int or None", + "is_optional": false, + "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/media.py#L42" + }, + "streamlit.balloons": { + "name": "balloons", + "signature": "st.balloons()", + "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", + "description": "

Draw celebratory balloons.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/balloons.py#L25" + }, + "streamlit.bar_chart": { + "name": "bar_chart", + "signature": "st.bar_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A','B','C'],20)\n})\n\nst.bar_chart(\n    chart_data,\n    x='col1',\n    y='col2',\n    color='col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple series with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['col1', 'col2', 'col3'])\n\nst.bar_chart(\n    chart_data,\n    x='col1',\n    y=['col2', 'col3'],\n    color=['#FF0000','#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For a bar chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L587" + }, + "streamlit.bokeh_chart": { + "name": "bokeh_chart", + "signature": "st.bokeh_chart(figure, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", + "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", + "args": [ + { + "name": "figure", + "type_name": "bokeh.plotting.figure.Figure", + "is_optional": false, + "description": "

A Bokeh figure to plot.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/bokeh_chart.py#L36" + }, + "streamlit.button": { + "name": "button", + "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\n\nst.button("Reset", type="primary")\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", + "description": "

Display a button widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", + "default": null + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/button.py#L61" + }, + "streamlit.cache": { + "name": "cache", + "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", + "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", + "description": "

Function decorator to memoize function executions.

\n", + "args": [ + { + "name": "func", + "type_name": "callable", + "is_optional": false, + "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", + "default": null + }, + { + "name": "persist", + "type_name": "boolean", + "is_optional": false, + "description": "

Whether to persist the cache on disk.

\n", + "default": null + }, + { + "name": "allow_output_mutation", + "type_name": "boolean", + "is_optional": false, + "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", + "default": null + }, + { + "name": "show_spinner", + "type_name": "boolean", + "is_optional": false, + "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", + "default": "True" + }, + { + "name": "suppress_st_warning", + "type_name": "boolean", + "is_optional": false, + "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", + "default": null + }, + { + "name": "hash_funcs", + "type_name": "dict or None", + "is_optional": false, + "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", + "default": null + }, + { + "name": "max_entries", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", + "default": "None" + }, + { + "name": "ttl", + "type_name": "float or None", + "is_optional": false, + "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" + }, + "streamlit.cache_data": { + "name": "cache_data", + "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets, hash_funcs=None)", + "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. datetime.datetime) to a hash\nfunction (lambda dt: dt.isoformat()) like this:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={datetime.datetime: lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "datetime.datetime") to the hash function instead:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={"datetime.datetime": lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n
\n", + "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", + "args": [ + { + "name": "func", + "type_name": "callable", + "is_optional": false, + "description": "

The function to cache. Streamlit hashes the function's source code.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, timedelta, str, or None", + "is_optional": false, + "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", + "default": null + }, + { + "name": "max_entries", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", + "default": "None" + }, + { + "name": "show_spinner", + "type_name": "boolean or string", + "is_optional": false, + "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", + "default": "True" + }, + { + "name": "persist", + "type_name": "\"disk\", boolean, or None", + "is_optional": false, + "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", + "default": "None" + }, + { + "name": "experimental_allow_widgets", + "type_name": "boolean", + "is_optional": false, + "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", + "default": "False" + }, + { + "name": "hash_funcs", + "type_name": "dict or None", + "is_optional": false, + "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_data_api.py#L384" + }, + "streamlit.cache_resource": { + "name": "cache_resource", + "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets, hash_funcs=None)", + "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. Person) to a hash\nfunction (str) like this:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={Person: str})\ndef get_person_name(person: Person):\n    return person.name\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "__main__.Person") to the hash function instead:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={"__main__.Person": str})\ndef get_person_name(person: Person):\n    return person.name\n
\n
\n", + "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", + "args": [ + { + "name": "func", + "type_name": "callable", + "is_optional": false, + "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, timedelta, str, or None", + "is_optional": false, + "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", + "default": null + }, + { + "name": "max_entries", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", + "default": "None" + }, + { + "name": "show_spinner", + "type_name": "boolean or string", + "is_optional": false, + "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", + "default": "True" + }, + { + "name": "validate", + "type_name": "callable or None", + "is_optional": false, + "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", + "default": null + }, + { + "name": "experimental_allow_widgets", + "type_name": "boolean", + "is_optional": false, + "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", + "default": "False" + }, + { + "name": "hash_funcs", + "type_name": "dict or None", + "is_optional": false, + "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_resource_api.py#L264" + }, + "streamlit.camera_input": { + "name": "camera_input", + "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", + "description": "

Display a widget that returns pictures from the user's webcam.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

A tooltip that gets displayed next to the camera input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "None or UploadedFile", + "is_generator": false, + "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/camera_input.py#L78" + }, + "streamlit.caption": { + "name": "caption", + "signature": "st.caption(body, unsafe_allow_html=False, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", + "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the caption.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L146" + }, + "streamlit.chat_input": { + "name": "chat_input", + "signature": "st.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", + "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", + "args": [ + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", + "default": "s" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", + "default": null + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

Whether the chat input should be disabled. Defaults to False.

\n", + "default": "False" + }, + { + "name": "on_submit", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when the chat input's value is submitted.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "str or None", + "is_generator": false, + "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/chat.py#L214" + }, + "streamlit.chat_message": { + "name": "chat_message", + "signature": "st.chat_message(name, *, avatar=None)", + "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", + "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", + "args": [ + { + "name": "name", + "type_name": "\"user\", \"assistant\", \"ai\", \"human\", or str", + "is_optional": false, + "description": "

The name of the message author. Can be "human"/"user" or\n"ai"/"assistant" to enable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", + "default": null + }, + { + "name": "avatar", + "type_name": "str, numpy.ndarray, or BytesIO", + "is_optional": false, + "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user",\n"assistant", "ai", "human" or the first letter of the name value.

\n", + "default": "icons" + } + ], + "returns": [ + { + "type_name": "Container", + "is_generator": false, + "description": "

A single container that can hold multiple elements.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/chat.py#L121" + }, + "streamlit.checkbox": { + "name": "checkbox", + "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", + "description": "

Display a checkbox widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "bool", + "is_optional": false, + "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this checkbox's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

Whether or not the checkbox is checked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/checkbox.py#L53" + }, + "streamlit.code": { + "name": "code", + "signature": "st.code(body, language=\"python\", line_numbers=False)", + "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", + "description": "

Display a code block with optional syntax highlighting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as code.

\n", + "default": null + }, + { + "name": "language", + "type_name": "str or None", + "is_optional": false, + "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", + "default": "s" + }, + { + "name": "line_numbers", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/code.py#L27" + }, + "streamlit.color_picker": { + "name": "color_picker", + "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", + "description": "

Display a color picker widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "str", + "is_optional": false, + "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", + "default": "black" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the color picker.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The selected color as a hex string.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/color_picker.py#L53" + }, + "streamlit.columns": { + "name": "columns", + "signature": "st.columns(spec, *, gap=\"small\")", + "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", + "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", + "args": [ + { + "name": "spec", + "type_name": "int or iterable of numbers", + "is_optional": false, + "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", + "default": null + }, + { + "name": "gap", + "type_name": "\"small\", \"medium\", or \"large\"", + "is_optional": false, + "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", + "default": "s" + } + ], + "returns": [ + { + "type_name": "list of containers", + "is_generator": false, + "description": "

A list of container objects.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L79" + }, + "streamlit.container": { + "name": "container", + "signature": "st.container()", + "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", + "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L31" + }, + "streamlit.data_editor": { + "name": "data_editor", + "signature": "st.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", + "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", + "is_optional": false, + "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", + "default": "False" + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + }, + { + "name": "num_rows", + "type_name": "\"fixed\" or \"dynamic\"", + "is_optional": false, + "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool or iterable of str", + "is_optional": false, + "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this data_editor's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", + "is_generator": false, + "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/data_editor.py#L529" + }, + "streamlit.dataframe": { + "name": "dataframe", + "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", + "default": "height" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L44" + }, + "streamlit.date_input": { + "name": "date_input", + "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, format=\"YYYY/MM/DD\", disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input("When's your birthday", datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\nimport datetime\nimport streamlit as st\n\ntoday = datetime.datetime.now()\nnext_year = today.year + 1\njan_1 = datetime.date(next_year, 1, 1)\ndec_31 = datetime.date(next_year, 12, 31)\n\nd = st.date_input(\n    "Select your vacation for next year",\n    (jan_1, datetime.date(next_year, 1, 7)),\n    jan_1,\n    dec_31,\n    format="MM.DD.YYYY",\n)\nd\n
\n\n \n
\n", + "description": "

Display a date input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", + "is_optional": false, + "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", + "default": "today" + }, + { + "name": "min_value", + "type_name": "datetime.date or datetime.datetime", + "is_optional": false, + "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", + "default": "value" + }, + { + "name": "max_value", + "type_name": "datetime.date or datetime.datetime", + "is_optional": false, + "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", + "default": "value" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this date_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

A format string controlling how the interface should display dates.\nSupports \u201cYYYY/MM/DD\u201d (default), \u201cDD/MM/YYYY\u201d, or \u201cMM/DD/YYYY\u201d.\nYou may also use a period (.) or hyphen (-) as separators.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "datetime.date or a tuple with 0-2 dates", + "is_generator": false, + "description": "

The current value of the date input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/time_widgets.py#L415" + }, + "streamlit.divider": { + "name": "divider", + "signature": "st.divider()", + "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", + "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L258" + }, + "streamlit.download_button": { + "name": "download_button", + "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", + "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "data", + "type_name": "str or bytes or file", + "is_optional": false, + "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", + "default": null + }, + { + "name": "file_name", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", + "default": null + }, + { + "name": "mime", + "type_name": "str or None", + "is_optional": false, + "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", + "default": "s" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", + "default": null + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/button.py#L170" + }, + "streamlit.echo": { + "name": "echo", + "signature": "st.echo(code_location=\"above\")", + "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", + "description": "

Use in a with block to draw some code on the app, then execute it.

\n", + "args": [ + { + "name": "code_location", + "type_name": "\"above\" or \"below\"", + "is_optional": false, + "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/echo.py#L28" + }, + "streamlit.empty": { + "name": "empty", + "signature": "st.empty()", + "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", + "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/empty.py#L24" + }, + "streamlit.error": { + "name": "error", + "signature": "st.error(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", + "description": "

Display error message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The error text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L27" + }, + "streamlit.exception": { + "name": "exception", + "signature": "st.exception(exception)", + "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", + "description": "

Display an exception.

\n", + "args": [ + { + "name": "exception", + "type_name": "Exception", + "is_optional": false, + "description": "

The exception to display.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/exception.py#L50" + }, + "streamlit.expander": { + "name": "expander", + "signature": "st.expander(label, expanded=False)", + "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", + "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L319" + }, + "streamlit.experimental_connection": { + "name": "experimental_connection", + "signature": "st.experimental_connection(name, type=None, max_entries=None, ttl=None, **kwargs)", + "examples": "
\n

The easiest way to create a first-party (SQL or Snowpark) connection is to use their\ndefault names and define corresponding sections in your secrets.toml file.

\n
\nimport streamlit as st\nconn = st.experimental_connection("sql") # Config section defined in [connections.sql] in secrets.toml.\n
\n

Creating a SQLConnection with a custom name requires you to explicitly specify the\ntype. If type is not passed as a kwarg, it must be set in the appropriate section of\nsecrets.toml.

\n
\nimport streamlit as st\nconn1 = st.experimental_connection("my_sql_connection", type="sql") # Config section defined in [connections.my_sql_connection].\nconn2 = st.experimental_connection("my_other_sql_connection") # type must be set in [connections.my_other_sql_connection].\n
\n

Passing the full module path to the connection class that you want to use can be\nuseful, especially when working with a custom connection:

\n
\nimport streamlit as st\nconn = st.experimental_connection("my_sql_connection", type="streamlit.connections.SQLConnection")\n
\n

Finally, you can pass the connection class to use directly to this function. Doing\nso allows static type checking tools such as mypy to infer the exact return\ntype of st.experimental_connection.

\n
\nimport streamlit as st\nfrom streamlit.connections import SQLConnection\nconn = st.experimental_connection("my_sql_connection", type=SQLConnection)\n
\n
\n", + "description": "

Create a new connection to a data store or API, or return an existing one.

\n

Config options, credentials, secrets, etc. for connections are taken from various\nsources:

\n
    \n
  • Any connection-specific configuration files.
  • \n
  • An app's secrets.toml files.
  • \n
  • The kwargs passed to this function.
  • \n
\n", + "args": [ + { + "name": "name", + "type_name": "str", + "is_optional": false, + "description": "

The connection name used for secrets lookup in [connections.<name>].\nType will be inferred from passing "sql" or "snowpark".

\n", + "default": null + }, + { + "name": "type", + "type_name": "str, connection class, or None", + "is_optional": false, + "description": "

The type of connection to create. It can be a keyword ("sql" or "snowpark"),\na path to an importable class, or an imported class reference. All classes\nmust extend st.connections.ExperimentalBaseConnection and implement the\n_connect() method. If the type kwarg is None, a type field must be set\nin the connection's section in secrets.toml.

\n", + "default": null + }, + { + "name": "max_entries", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of connections to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", + "default": "None" + }, + { + "name": "ttl", + "type_name": "float, timedelta, or None", + "is_optional": false, + "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", + "default": "None" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Additional connection specific kwargs that are passed to the Connection's\n_connect() method. Learn more from the specific Connection's documentation.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "Connection object", + "is_generator": false, + "description": "

An initialized Connection object of the specified type.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/connection_factory.py#L170" + }, + "streamlit.experimental_data_editor": { + "name": "experimental_data_editor", + "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", + "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", + "is_optional": false, + "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", + "default": "False" + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + }, + { + "name": "num_rows", + "type_name": "\"fixed\" or \"dynamic\"", + "is_optional": false, + "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool or iterable of str", + "is_optional": false, + "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this data_editor's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", + "is_generator": false, + "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/data_editor.py#L529" + }, + "streamlit.experimental_get_query_params": { + "name": "experimental_get_query_params", + "signature": "st.experimental_get_query_params()", + "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", + "description": "

Return the query parameters that is currently showing in the browser's URL bar.

\n", + "args": [], + "returns": [ + { + "type_name": "dict", + "is_generator": false, + "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/commands/query_params.py#L29" + }, + "streamlit.experimental_memo": { + "name": "experimental_memo", + "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets, hash_funcs=None)", + "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. datetime.datetime) to a hash\nfunction (lambda dt: dt.isoformat()) like this:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={datetime.datetime: lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "datetime.datetime") to the hash function instead:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={"datetime.datetime": lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n
\n", + "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", + "args": [ + { + "name": "func", + "type_name": "callable", + "is_optional": false, + "description": "

The function to cache. Streamlit hashes the function's source code.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, timedelta, str, or None", + "is_optional": false, + "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", + "default": null + }, + { + "name": "max_entries", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", + "default": "None" + }, + { + "name": "show_spinner", + "type_name": "boolean or string", + "is_optional": false, + "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", + "default": "True" + }, + { + "name": "persist", + "type_name": "\"disk\", boolean, or None", + "is_optional": false, + "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", + "default": "None" + }, + { + "name": "experimental_allow_widgets", + "type_name": "boolean", + "is_optional": false, + "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", + "default": "False" + }, + { + "name": "hash_funcs", + "type_name": "dict or None", + "is_optional": false, + "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_data_api.py#L384" + }, + "streamlit.experimental_rerun": { + "name": "experimental_rerun", + "signature": "st.experimental_rerun()", + "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/commands/execution_control.py#L47" + }, + "streamlit.experimental_set_query_params": { + "name": "experimental_set_query_params", + "signature": "st.experimental_set_query_params(**query_params)", + "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", + "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", + "args": [ + { + "name": "**query_params", + "type_name": "dict", + "is_optional": false, + "description": "

The query parameters to set, as key-value pairs.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/commands/query_params.py#L65" + }, + "streamlit.experimental_singleton": { + "name": "experimental_singleton", + "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets, hash_funcs=None)", + "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. Person) to a hash\nfunction (str) like this:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={Person: str})\ndef get_person_name(person: Person):\n    return person.name\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "__main__.Person") to the hash function instead:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={"__main__.Person": str})\ndef get_person_name(person: Person):\n    return person.name\n
\n
\n", + "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", + "args": [ + { + "name": "func", + "type_name": "callable", + "is_optional": false, + "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, timedelta, str, or None", + "is_optional": false, + "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", + "default": null + }, + { + "name": "max_entries", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", + "default": "None" + }, + { + "name": "show_spinner", + "type_name": "boolean or string", + "is_optional": false, + "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", + "default": "True" + }, + { + "name": "validate", + "type_name": "callable or None", + "is_optional": false, + "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", + "default": null + }, + { + "name": "experimental_allow_widgets", + "type_name": "boolean", + "is_optional": false, + "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", + "default": "False" + }, + { + "name": "hash_funcs", + "type_name": "dict or None", + "is_optional": false, + "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_resource_api.py#L264" + }, + "streamlit.file_uploader": { + "name": "file_uploader", + "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", + "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "type", + "type_name": "str or list of str or None", + "is_optional": false, + "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", + "default": "None" + }, + { + "name": "accept_multiple_files", + "type_name": "bool", + "is_optional": false, + "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", + "default": "False" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

A tooltip that gets displayed next to the file uploader.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "None or UploadedFile or list of UploadedFile", + "is_generator": false, + "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/file_uploader.py#L222" + }, + "streamlit.form": { + "name": "form", + "signature": "st.form(key, clear_on_submit=False)", + "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n\n \n
\n", + "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
  • Within a form, the only widget that can have a callback function is\nst.form_submit_button.
  • \n
\n", + "args": [ + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", + "default": null + }, + { + "name": "clear_on_submit", + "type_name": "bool", + "is_optional": false, + "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", + "default": "values" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/form.py#L118" + }, + "streamlit.form_submit_button": { + "name": "form_submit_button", + "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", + "default": "s" + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", + "default": "None" + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/form.py#L218" + }, + "streamlit.get_option": { + "name": "get_option", + "signature": "st.get_option(key)", + "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", + "args": [ + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/config.py#L131" + }, + "streamlit.graphviz_chart": { + "name": "graphviz_chart", + "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", + "description": "

Display a graph using the dagre-d3 library.

\n", + "args": [ + { + "name": "figure_or_dot", + "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", + "is_optional": false, + "description": "

The Graphlib graph object or dot string to display

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/graphviz_chart.py#L39" + }, + "streamlit.header": { + "name": "header", + "signature": "st.header(body, anchor=None, *, help=None, divider=False)", + "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header with a divider', divider='rainbow')\nst.header('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in header formatting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the header.

\n", + "default": null + }, + { + "name": "divider", + "type_name": "bool or \u201cblue\u201d, \u201cgreen\u201d, \u201corange\u201d, \u201cred\u201d, \u201cviolet\u201d, \u201cgray\u201d/\"grey\", or \u201crainbow\u201d", + "is_optional": false, + "description": "

Shows a colored divider below the header. If True, successive\nheaders will cycle through divider colors. That is, the first\nheader will have a blue line, the second header will have a\ngreen line, and so on. If a string, the color can be set to one of\nthe following: blue, green, orange, red, violet, gray/grey, or\nrainbow.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L41" + }, + "streamlit.help": { + "name": "help", + "signature": "st.help(obj=)", + "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", + "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", + "args": [ + { + "name": "obj", + "type_name": "any", + "is_optional": false, + "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/doc_string.py#L48" + }, + "streamlit.image": { + "name": "image", + "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", + "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", + "description": "

Display an image or list of images.

\n", + "args": [ + { + "name": "image", + "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", + "is_optional": false, + "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", + "default": null + }, + { + "name": "caption", + "type_name": "str or list of str", + "is_optional": false, + "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", + "default": "image" + }, + { + "name": "use_column_width", + "type_name": "\"auto\", \"always\", \"never\", or bool", + "is_optional": false, + "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", + "default": null + }, + { + "name": "clamp", + "type_name": "bool", + "is_optional": false, + "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", + "default": null + }, + { + "name": "channels", + "type_name": "\"RGB\" or \"BGR\"", + "is_optional": false, + "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", + "default": "s" + }, + { + "name": "output_format", + "type_name": "\"JPEG\", \"PNG\", or \"auto\"", + "is_optional": false, + "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/image.py#L87" + }, + "streamlit.info": { + "name": "info", + "signature": "st.info(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", + "description": "

Display an informational message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The info text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L91" + }, + "streamlit.json": { + "name": "json", + "signature": "st.json(body, *, expanded=True)", + "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", + "description": "

Display object or string as a pretty-printed JSON string.

\n", + "args": [ + { + "name": "body", + "type_name": "object or str", + "is_optional": false, + "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", + "default": "True" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/json.py#L35" + }, + "streamlit.latex": { + "name": "latex", + "signature": "st.latex(body, *, help=None)", + "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", + "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", + "args": [ + { + "name": "body", + "type_name": "str or SymPy expression", + "is_optional": false, + "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L210" + }, + "streamlit.line_chart": { + "name": "line_chart", + "signature": "st.line_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A','B','C'], 20)\n})\n\nst.line_chart(\n    chart_data,\n    x = 'col1',\n    y = 'col2',\n    color = 'col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple lines with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns = ['col1', 'col2', 'col3'])\n\nst.line_chart(\n    chart_data,\n    x = 'col1',\n    y = ['col2', 'col3'],\n    color = ['#FF0000', '#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different lines in this chart. This argument\ncan only be supplied by keyword.

\n

For a line chart with just one line, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto lines of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby", then\nthose 1000 datapoints will be grouped into three lines, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into three lines, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe lines in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L231" + }, + "streamlit.map": { + "name": "map", + "signature": "st.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n

You can also customize the size and color of the datapoints:

\n
\nst.map(df, size=20, color='#0044ff')\n
\n

And finally, you can choose different columns to use for the latitude\nand longitude components, as well as set size and color of each\ndatapoint dynamically based on other columns:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame({\n    "col1": np.random.randn(1000) / 50 + 37.76,\n    "col2": np.random.randn(1000) / 50 + -122.4,\n    "col3": np.random.randn(1000) * 100,\n    "col4": np.random.rand(1000, 4).tolist(),\n})\n\nst.map(df,\n    latitude='col1',\n    longitude='col2',\n    size='col3',\n    color='col4')\n
\n\n \n
\n", + "description": "

Display a map with a scatterplot overlaid onto it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The data to be plotted.

\n", + "default": null + }, + { + "name": "latitude", + "type_name": "str or None", + "is_optional": false, + "description": "

The name of the column containing the latitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the latitude data will come from any column named 'lat',\n'latitude', 'LAT', or 'LATITUDE'.

\n", + "default": null + }, + { + "name": "longitude", + "type_name": "str or None", + "is_optional": false, + "description": "

The name of the column containing the longitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the longitude data will come from any column named 'lon',\n'longitude', 'LON', or 'LONGITUDE'.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str or tuple or None", + "is_optional": false, + "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", + "default": "color" + }, + { + "name": "size", + "type_name": "str or float or None", + "is_optional": false, + "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", + "default": "size" + }, + { + "name": "zoom", + "type_name": "int", + "is_optional": false, + "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/map.py#L91" + }, + "streamlit.markdown": { + "name": "markdown", + "signature": "st.markdown(body, unsafe_allow_html=False, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.markdown("*Streamlit* is **really** ***cool***.")\nst.markdown('''\n    :red[Streamlit] :orange[can] :green[write] :blue[text] :violet[in]\n    :gray[pretty] :rainbow[colors].''')\nst.markdown("Here's a bouquet &mdash;\\\n            :tulip::cherry_blossom::rose::hibiscus::sunflower::blossom:")\n\nmulti = '''If you end a line with two spaces,\na soft return is used for the next line.\n\nTwo (or more) newline characters in a row will result in a hard return.\n'''\nst.markdown(multi)\n
\n\n \n
\n", + "description": "

Display string formatted as Markdown.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L31" + }, + "streamlit.metric": { + "name": "metric", + "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", + "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "value", + "type_name": "int, float, str, or None", + "is_optional": false, + "description": "

Value of the metric. None is rendered as a long dash.

\n", + "default": null + }, + { + "name": "delta", + "type_name": "int, float, str, or None", + "is_optional": false, + "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", + "default": null + }, + { + "name": "delta_color", + "type_name": "\"normal\", \"inverse\", or \"off\"", + "is_optional": false, + "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the metric label.

\n", + "default": null + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/metric.py#L46" + }, + "streamlit.multiselect": { + "name": "multiselect", + "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder=\"Choose an option\", disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", + "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", + "default": null + }, + { + "name": "default", + "type_name": "[V], V, or None", + "is_optional": false, + "description": "

List of default values. Can also be a single value.

\n", + "default": "values" + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this multiselect's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "max_selections", + "type_name": "int", + "is_optional": false, + "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A string to display when no options are selected. Defaults to 'Choose an option'.

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "list", + "is_generator": false, + "description": "

A list with the selected options

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/multiselect.py#L146" + }, + "streamlit.number_input": { + "name": "number_input", + "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", + "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", + "default": null + }, + { + "name": "value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", + "default": "min_value" + }, + { + "name": "step", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", + "default": "1" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this number_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "int or float", + "is_generator": false, + "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/number_input.py#L67" + }, + "streamlit.plotly_chart": { + "name": "plotly_chart", + "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", + "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", + "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", + "args": [ + { + "name": "figure_or_data", + "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", + "is_optional": false, + "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", + "default": null + }, + { + "name": "sharing", + "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", + "is_optional": false, + "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + }, + { + "name": "**kwargs", + "type_name": null, + "is_optional": null, + "description": "

Any argument accepted by Plotly's plot() function.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/plotly_chart.py#L81" + }, + "streamlit.progress": { + "name": "progress", + "signature": "st.progress(value, text=None)", + "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", + "description": "

Display a progress bar.

\n", + "args": [ + { + "name": "value", + "type_name": "int or float", + "is_optional": false, + "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", + "default": null + }, + { + "name": "text", + "type_name": "str or None", + "is_optional": false, + "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/progress.py#L66" + }, + "streamlit.pydeck_chart": { + "name": "pydeck_chart", + "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", + "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", + "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", + "args": [ + { + "name": "pydeck_obj", + "type_name": "pydeck.Deck or None", + "is_optional": false, + "description": "

Object specifying the PyDeck chart to draw.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/deck_gl_json_chart.py#L37" + }, + "streamlit.pyplot": { + "name": "pyplot", + "signature": "st.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", + "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", + "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", + "description": "

Display a matplotlib.pyplot figure.

\n", + "args": [ + { + "name": "fig", + "type_name": "Matplotlib Figure", + "is_optional": false, + "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", + "default": null + }, + { + "name": "clear_figure", + "type_name": "bool", + "is_optional": false, + "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", + "default": "based" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. Defaults to True.

\n", + "default": "s" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Arguments to pass to Matplotlib's savefig function.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/pyplot.py#L38" + }, + "streamlit.radio": { + "name": "radio", + "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, captions=None, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What's your favorite movie genre",\n    [":rainbow[Comedy]", "***Drama***", "Documentary :movie_camera:"],\n    captions = ["Laugh out loud.", "Get the popcorn.", "Never stop learning."])\n\nif genre == ':rainbow[Comedy]':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", + "description": "

Display a radio button widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the radio options. Labels can include markdown as\ndescribed in the label parameter and will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", + "default": null + }, + { + "name": "index", + "type_name": "int", + "is_optional": false, + "description": "

The index of the preselected option on first render.

\n", + "default": null + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the radio.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this radio's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "horizontal", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", + "default": "false" + }, + { + "name": "captions", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

A list of captions to show below each radio button. If None (default),\nno captions are shown.

\n", + "default": null + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any", + "is_generator": false, + "description": "

The selected option.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/radio.py#L76" + }, + "streamlit.select_slider": { + "name": "select_slider", + "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", + "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", + "default": null + }, + { + "name": "value", + "type_name": "a supported type or a tuple/list of supported types or None", + "is_optional": false, + "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", + "default": "first" + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the select slider.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this select_slider's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any value or tuple of any value", + "is_generator": false, + "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/select_slider.py#L107" + }, + "streamlit.selectbox": { + "name": "selectbox", + "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=\"Select...\", disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", + "description": "

Display a select widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", + "default": null + }, + { + "name": "index", + "type_name": "int", + "is_optional": false, + "description": "

The index of the preselected option on first render.

\n", + "default": null + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this selectbox's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A string to display when no options are selected. Defaults to 'Select...'.

\n

A selectbox can't be empty, so a placeholder only displays while a\nuser's cursor is in a selectbox after manually deleting the current\nselection. A future update will allow selectboxes to be empty.

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any", + "is_generator": false, + "description": "

The selected option

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/selectbox.py#L72" + }, + "streamlit.set_option": { + "name": "set_option", + "signature": "st.set_option(key, value)", + "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", + "args": [ + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", + "default": null + }, + { + "name": "value", + "type_name": null, + "is_optional": null, + "description": "

The new value to assign to this config option.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/config.py#L92" + }, + "streamlit.set_page_config": { + "name": "set_page_config", + "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", + "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", + "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used on an app page, and must only\nbe set once per page.

\n
\n", + "args": [ + { + "name": "page_title", + "type_name": "str or None", + "is_optional": false, + "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", + "default": "the" + }, + { + "name": "page_icon", + "type_name": "Anything supported by st.image or str or None", + "is_optional": false, + "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", + "default": null + }, + { + "name": "layout", + "type_name": "\"centered\" or \"wide\"", + "is_optional": false, + "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", + "default": "s" + }, + { + "name": "initial_sidebar_state", + "type_name": "\"auto\", \"expanded\", or \"collapsed\"", + "is_optional": false, + "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", + "default": "s" + }, + { + "name": "menu_items", + "type_name": "dict", + "is_optional": false, + "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", + "default": "About" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/commands/page_config.py#L114" + }, + "streamlit.slider": { + "name": "slider", + "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", + "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "a supported type or None", + "is_optional": false, + "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", + "default": "0" + }, + { + "name": "max_value", + "type_name": "a supported type or None", + "is_optional": false, + "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", + "default": "100" + }, + { + "name": "value", + "type_name": "a supported type or a tuple/list of supported types or None", + "is_optional": false, + "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", + "default": "min_value" + }, + { + "name": "step", + "type_name": "int, float, timedelta, or None", + "is_optional": false, + "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", + "default": "1" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the slider.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this slider's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", + "is_generator": false, + "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/slider.py#L173" + }, + "streamlit.snow": { + "name": "snow", + "signature": "st.snow()", + "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", + "description": "

Draw celebratory snowfall.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/snow.py#L25" + }, + "streamlit.spinner": { + "name": "spinner", + "signature": "st.spinner(text=\"In progress...\")", + "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", + "description": "

Temporarily displays a message while executing a block of code.

\n", + "args": [ + { + "name": "text", + "type_name": "str", + "is_optional": false, + "description": "

A message to display while executing that block

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/spinner.py#L23" + }, + "streamlit.status": { + "name": "status", + "signature": "st.status(label, *, expanded=False, state=\"running\")", + "examples": "
\n

You can use with notation to insert any element into an status container:

\n
\nimport time\nimport streamlit as st\n\nwith st.status("Downloading data..."):\n    st.write("Searching for data...")\n    time.sleep(2)\n    st.write("Found URL.")\n    time.sleep(1)\n    st.write("Downloading data...")\n    time.sleep(1)\n\nst.button('Rerun')\n
\n\n \n

You can also use .update() on the container to change the label, state,\nor expanded state:

\n
\nimport time\nimport streamlit as st\n\nwith st.status("Downloading data...", expanded=True) as status:\n    st.write("Searching for data...")\n    time.sleep(2)\n    st.write("Found URL.")\n    time.sleep(1)\n    st.write("Downloading data...")\n    time.sleep(1)\n    status.update(label="Download complete!", state="complete", expanded=False)\n\nst.button('Rerun')\n
\n\n \n
\n", + "description": "

Insert a status container to display output from long-running tasks.

\n

Inserts a container into your app that is typically used to show the status and\ndetails of a process or task. The container can hold multiple elements and can\nbe expanded or collapsed by the user similar to st.expander.\nWhen collapsed, all that is visible is the status icon and label.

\n

The label, state, and expanded state can all be updated by calling .update()\non the returned object. To add elements to the returned container, you can\nuse "with" notation (preferred) or just call methods directly on the returned\nobject.

\n

By default, st.status() initializes in the "running" state. When called using\n"with" notation, it automatically updates to the "complete" state at the end\nof the "with" block. See examples below for more details.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

The initial label of the status container. The label can optionally\ncontain Markdown and supports the following elements: Bold,\nItalics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents)\nrender. Display unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

If True, initializes the status container in "expanded" state. Defaults to\nFalse (collapsed).

\n", + "default": "s" + }, + { + "name": "state", + "type_name": "\"running\", \"complete\", or \"error\"", + "is_optional": false, + "description": "

The initial state of the status container which determines which icon is\nshown:

\n
    \n
  • running (default): A spinner icon is shown.
  • \n
  • complete: A checkmark icon is shown.
  • \n
  • error: An error icon is shown.
  • \n
\n", + "default": null + } + ], + "returns": [ + { + "type_name": "StatusContainer", + "is_generator": false, + "description": "

A mutable status container that can hold multiple elements. The label, state,\nand expanded state can be updated after creation via .update().

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L414" + }, + "streamlit.stop": { + "name": "stop", + "signature": "st.stop()", + "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", + "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/commands/execution_control.py#L26" + }, + "streamlit.subheader": { + "name": "subheader", + "signature": "st.subheader(body, anchor=None, *, help=None, divider=False)", + "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader with a divider', divider='rainbow')\nst.subheader('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in subheader formatting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the subheader.

\n", + "default": null + }, + { + "name": "divider", + "type_name": "bool or \u201cblue\u201d, \u201cgreen\u201d, \u201corange\u201d, \u201cred\u201d, \u201cviolet\u201d, \u201cgray\u201d/\"grey\", or \u201crainbow\u201d", + "is_optional": false, + "description": "

Shows a colored divider below the header. If True, successive\nheaders will cycle through divider colors. That is, the first\nheader will have a blue line, the second header will have a\ngreen line, and so on. If a string, the color can be set to one of\nthe following: blue, green, orange, red, violet, gray/grey, or\nrainbow.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L111" + }, + "streamlit.success": { + "name": "success", + "signature": "st.success(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", + "description": "

Display a success message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The success text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L124" + }, + "streamlit.table": { + "name": "table", + "signature": "st.table(data=None)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", + "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L193" + }, + "streamlit.tabs": { + "name": "tabs", + "signature": "st.tabs(tabs)", + "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", + "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", + "args": [ + { + "name": "tabs", + "type_name": "list of strings", + "is_optional": false, + "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "list of containers", + "is_generator": false, + "description": "

A list of container objects.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L207" + }, + "streamlit.text": { + "name": "text", + "signature": "st.text(body, *, help=None)", + "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", + "description": "

Write fixed-width and preformatted text.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the text.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/text.py#L27" + }, + "streamlit.text_area": { + "name": "text_area", + "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", + "description": "

Display a multi-line text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "object", + "is_optional": false, + "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", + "default": "height" + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

Maximum number of characters allowed in text area.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the textarea.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this text_area's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The current value of the text input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/text_widgets.py#L288" + }, + "streamlit.text_input": { + "name": "text_input", + "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", + "description": "

Display a single-line text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "object", + "is_optional": false, + "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", + "default": null + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

Max number of characters allowed in text input.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"default\" or \"password\"", + "is_optional": false, + "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", + "default": "s" + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "autocomplete", + "type_name": "str", + "is_optional": false, + "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this text input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The current value of the text input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/text_widgets.py#L72" + }, + "streamlit.time_input": { + "name": "time_input", + "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", + "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", + "description": "

Display a time input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "datetime.time/datetime.datetime", + "is_optional": false, + "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", + "default": "the" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this time_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + }, + { + "name": "step", + "type_name": "int or timedelta", + "is_optional": false, + "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", + "default": "900" + } + ], + "returns": [ + { + "type_name": "datetime.time", + "is_generator": false, + "description": "

The current value of the time input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/time_widgets.py#L219" + }, + "streamlit.title": { + "name": "title", + "signature": "st.title(body, anchor=None, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the title.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L181" + }, + "streamlit.toast": { + "name": "toast", + "signature": "st.toast(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.toast('Your edited image was saved!', icon='\ud83d\ude0d')\n
\n
\n", + "description": "

Display a short message, known as a notification "toast".

\n

The toast appears in the app's bottom-right corner and disappears after four seconds.

\n
\n

Warning

\n

st.toast is not compatible with Streamlit's caching and\ncannot be called within a cached function.

\n
\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the toast. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/toast.py#L37" + }, + "streamlit.toggle": { + "name": "toggle", + "signature": "st.toggle(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\non = st.toggle('Activate feature')\n\nif on:\n    st.write('Feature activated!')\n
\n\n \n
\n", + "description": "

Display a toggle widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this toggle is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "bool", + "is_optional": false, + "description": "

Preselect the toggle when it first renders. This will be\ncast to bool internally.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the toggle.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this toggle's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the toggle if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

Whether or not the toggle is checked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/checkbox.py#L156" + }, + "streamlit.vega_lite_chart": { + "name": "vega_lite_chart", + "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", + "description": "

Display a chart using the Vega-Lite library.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", + "is_optional": false, + "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "spec", + "type_name": "dict or None", + "is_optional": false, + "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Same as spec, but as keywords.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L819" + }, + "streamlit.video": { + "name": "video", + "signature": "st.video(data, format=\"video/mp4\", start_time=0)", + "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", + "description": "

Display a video player.

\n", + "args": [ + { + "name": "data", + "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", + "is_optional": false, + "description": "

Raw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", + "default": "s" + }, + { + "name": "start_time", + "type_name": "int", + "is_optional": false, + "description": "

The time from which this element should start playing.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/media.py#L115" + }, + "streamlit.warning": { + "name": "warning", + "signature": "st.warning(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", + "description": "

Display warning message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The warning text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L59" + }, + "streamlit.write": { + "name": "write", + "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", + "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", + "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", + "args": [ + { + "name": "*args", + "type_name": "any", + "is_optional": false, + "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": "False" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/write.py#L49" + }, + "streamlit.experimental_memo.clear": { + "name": "experimental_memo.clear", + "signature": "st.experimental_memo.clear()", + "description": "

Clear all in-memory and on-disk data caches.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_data_api.py#L587" + }, + "streamlit.cache_data.clear": { + "name": "cache_data.clear", + "signature": "st.cache_data.clear()", + "description": "

Clear all in-memory and on-disk data caches.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_data_api.py#L587" + }, + "streamlit.experimental_singleton.clear": { + "name": "experimental_singleton.clear", + "signature": "st.experimental_singleton.clear()", + "description": "

Clear all cache_resource caches.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_resource_api.py#L449" + }, + "streamlit.cache_resource.clear": { + "name": "cache_resource.clear", + "signature": "st.cache_resource.clear()", + "description": "

Clear all cache_resource caches.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/runtime/caching/cache_resource_api.py#L449" + }, + "streamlit.connections.ExperimentalBaseConnection": { + "name": "ExperimentalBaseConnection", + "signature": "st.connections.ExperimentalBaseConnection(connection_name, **kwargs)", + "is_class": true, + "methods": [ + { + "name": "reset", + "signature": "st.connections.reset.reset()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", + "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L137" + } + ], + "properties": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L25", + "description": "

The abstract base class that all Streamlit Connections must inherit from.

\n

This base class provides connection authors with a standardized way to hook into the\nst.experimental_connection() factory function: connection authors are required to\nprovide an implementation for the abstract method _connect in their subclasses.

\n

Additionally, it also provides a few methods/properties designed to make\nimplementation of connections more convenient. See the docstrings for each of the\nmethods of this class for more information

\n
\n

Note

\n

While providing an implementation of _connect is technically all that's\nrequired to define a valid connection, connections should also provide the user\nwith context-specific ways of interacting with the underlying connection object.\nFor example, the first-party SQLConnection provides a query() method for\nreads and a session property for more complex operations.

\n
\n", + "args": [], + "returns": [] + }, + "streamlit.connections.SQLConnection": { + "name": "SQLConnection", + "signature": "st.connections.SQLConnection(connection_name, **kwargs)", + "is_class": true, + "methods": [ + { + "name": "query", + "signature": "st.connections.query.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", + "description": "

Run a read-only query.

", + "args": [ + { + "name": "sql", + "type_name": "str", + "is_optional": false, + "description": "

The read-only SQL query to execute.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, int, timedelta or None", + "is_optional": false, + "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", + "default": "None" + }, + { + "name": "index_col", + "type_name": "str, list of str, or None", + "is_optional": false, + "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", + "default": "None" + }, + { + "name": "chunksize", + "type_name": "int or None", + "is_optional": false, + "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", + "default": "None" + }, + { + "name": "params", + "type_name": "list, tuple, dict or None", + "is_optional": false, + "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", + "default": "None" + }, + { + "name": "**kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pd.DataFrame", + "is_generator": false, + "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/sql_connection.py#L121" + }, + { + "name": "reset", + "signature": "st.connections.reset.reset()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", + "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L137" + } + ], + "properties": [ + { + "name": "session", + "signature": "st.connections.session.session", + "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", + "description": "

Return a SQLAlchemy Session.

", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/sql_connection.py#L226" + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/sql_connection.py#L45", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", + "description": "

A connection to a SQL database using a SQLAlchemy Engine. Initialize using st.experimental_connection("<name>", type="sql").

\n

SQLConnection provides the query() convenience method, which can be used to\nrun simple read-only queries with both caching and simple error handling/retries.\nMore complex DB interactions can be performed by using the .session property\nto receive a regular SQLAlchemy Session.

\n

SQLConnections should always be created using st.experimental_connection(),\nnot initialized directly. Connection parameters for a SQLConnection can be\nspecified using either st.secrets or **kwargs. Some frequently used\nparameters include:

\n
    \n
  • url or arguments for sqlalchemy.engine.URL.create().\nMost commonly it includes a dialect, host, database, username and password.
  • \n
  • create_engine_kwargs can be passed via st.secrets, such as for\nsnowflake-sqlalchemy\nor Google BigQuery.\nThese can also be passed directly as **kwargs to experimental_connection().
  • \n
  • autocommit=True to run with isolation level AUTOCOMMIT. Default is False.
  • \n
\n", + "args": [], + "returns": [] + }, + "streamlit.connections.SnowparkConnection": { + "name": "SnowparkConnection", + "signature": "st.connections.SnowparkConnection(connection_name, **kwargs)", + "is_class": true, + "methods": [ + { + "name": "query", + "signature": "st.connections.query.query(sql, ttl=None)", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", + "description": "

Run a read-only SQL query.

", + "args": [ + { + "name": "sql", + "type_name": "str", + "is_optional": false, + "description": "

The read-only SQL query to execute.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, int, timedelta or None", + "is_optional": false, + "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", + "default": "None" + } + ], + "returns": [ + { + "type_name": "pd.DataFrame", + "is_generator": false, + "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L123" + }, + { + "name": "reset", + "signature": "st.connections.reset.reset()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", + "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L137" + }, + { + "name": "safe_session", + "signature": "st.connections.safe_session.safe_session()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", + "description": "

Grab the underlying Snowpark session in a thread-safe manner.

", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L207" + } + ], + "properties": [ + { + "name": "session", + "signature": "st.connections.session.session", + "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", + "description": "

Access the underlying Snowpark session.

", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L184" + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L70", + "description": "

A connection to Snowpark using snowflake.snowpark.session.Session. Initialize using

\n

st.experimental_connection("<name>", type="snowpark").

\n

In addition to accessing the Snowpark Session, SnowparkConnection supports direct SQL querying using\nquery("...") and thread safe access using with conn.safe_session():. See methods\nbelow for more information. SnowparkConnections should always be created using\nst.experimental_connection(), not initialized directly.

\n
\n

Note

\n

We don't expect this iteration of SnowparkConnection to be able to scale\nwell in apps with many concurrent users due to the lock contention that will occur\nover the single underlying Session object under high load.

\n
\n", + "args": [], + "returns": [] + }, + "streamlit.connections.SQLConnection.query": { + "name": "query", + "signature": "SQLConnection.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", + "description": "

Run a read-only query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n

Aside from the ttl kwarg, all kwargs passed to this function are passed down\nto pd.read_sql\nand have the behavior described in the pandas documentation.

\n", + "args": [ + { + "name": "sql", + "type_name": "str", + "is_optional": false, + "description": "

The read-only SQL query to execute.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, int, timedelta or None", + "is_optional": false, + "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", + "default": "None" + }, + { + "name": "index_col", + "type_name": "str, list of str, or None", + "is_optional": false, + "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", + "default": "None" + }, + { + "name": "chunksize", + "type_name": "int or None", + "is_optional": false, + "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", + "default": "None" + }, + { + "name": "params", + "type_name": "list, tuple, dict or None", + "is_optional": false, + "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", + "default": "None" + }, + { + "name": "**kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pd.DataFrame", + "is_generator": false, + "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/sql_connection.py#L121" + }, + "streamlit.connections.SQLConnection.reset": { + "name": "reset", + "signature": "SQLConnection.reset()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", + "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L137" + }, + "streamlit.connections.SQLConnection.session": { + "name": "session", + "signature": "SQLConnection.session", + "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", + "description": "

Return a SQLAlchemy Session.

\n

Users of this connection should use the contextmanager pattern for writes,\ntransactions, and anything more complex than simple read queries.

\n

See the usage example below, which assumes we have a table numbers with a\nsingle integer column val. The SQLAlchemy docs also contain\nmuch more information on the usage of sessions.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/sql_connection.py#L226" + }, + "streamlit.connections.SnowparkConnection.query": { + "name": "query", + "signature": "SnowparkConnection.query(sql, ttl=None)", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", + "description": "

Run a read-only SQL query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n", + "args": [ + { + "name": "sql", + "type_name": "str", + "is_optional": false, + "description": "

The read-only SQL query to execute.

\n", + "default": null + }, + { + "name": "ttl", + "type_name": "float, int, timedelta or None", + "is_optional": false, + "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", + "default": "None" + } + ], + "returns": [ + { + "type_name": "pd.DataFrame", + "is_generator": false, + "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L123" + }, + "streamlit.connections.SnowparkConnection.reset": { + "name": "reset", + "signature": "SnowparkConnection.reset()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", + "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L137" + }, + "streamlit.connections.SnowparkConnection.safe_session": { + "name": "safe_session", + "signature": "SnowparkConnection.safe_session()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", + "description": "

Grab the underlying Snowpark session in a thread-safe manner.

\n

As operations on a Snowpark session are not thread safe, we need to take care\nwhen using a session in the context of a Streamlit app where each script run\noccurs in its own thread. Using the contextmanager pattern to do this ensures\nthat access on this connection's underlying Session is done in a thread-safe\nmanner.

\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L207" + }, + "streamlit.connections.SnowparkConnection.session": { + "name": "session", + "signature": "SnowparkConnection.session", + "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", + "description": "

Access the underlying Snowpark session.

\n
\n

Note

\n

Snowpark sessions are not thread safe. Users of this method are\nresponsible for ensuring that access to the session returned by this method is\ndone in a thread-safe manner. For most users, we recommend using the thread-safe\nsafe_session() method and a with block.

\n
\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/snowpark_connection.py#L184" + }, + "streamlit.connections.ExperimentalBaseConnection.reset": { + "name": "reset", + "signature": "ExperimentalBaseConnection.reset()", + "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", + "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/connections/base_connection.py#L137" + }, + "streamlit.column_config.BarChartColumn": { + "name": "BarChartColumn", + "signature": "st.column_config.BarChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.BarChartColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a bar chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "y_min", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", + "default": null + }, + { + "name": "y_max", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L746" + }, + "streamlit.column_config.CheckboxColumn": { + "name": "CheckboxColumn", + "signature": "st.column_config.CheckboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n        "favorite": [True, False, False, True],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "favorite": st.column_config.CheckboxColumn(\n            "Your favorite?",\n            help="Select your **favorite** widgets",\n            default=False,\n        )\n    },\n    disabled=["widgets"],\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a checkbox column in st.dataframe or st.data_editor.

\n

This is the default column type for boolean values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a checkbox widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "bool or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L565" + }, + "streamlit.column_config.Column": { + "name": "Column", + "signature": "st.column_config.Column(label=None, *, width=None, help=None, disabled=None, required=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.Column(\n            "Streamlit Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            width="medium",\n            required=True,\n        )\n    },\n    hide_index=True,\n    num_rows="dynamic",\n)\n
\n\n \n
\n", + "description": "

Configure a generic column in st.dataframe or st.data_editor.

\n

The type of the column will be automatically inferred from the data type.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n

To change the type of the column and enable type-specific configuration options,\nuse one of the column types in the st.column_config namespace,\ne.g. st.column_config.NumberColumn.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L187" + }, + "streamlit.column_config.DateColumn": { + "name": "DateColumn", + "signature": "st.column_config.DateColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", + "examples": "
\n
\nfrom datetime import date\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "birthday": [\n            date(1980, 1, 1),\n            date(1990, 5, 3),\n            date(1974, 5, 19),\n            date(2001, 8, 17),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "birthday": st.column_config.DateColumn(\n            "Birthday",\n            min_value=date(1900, 1, 1),\n            max_value=date(2005, 1, 1),\n            format="DD.MM.YYYY",\n            step=1,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a date column in st.dataframe or st.data_editor.

\n

This is the default column type for date values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When used\nwith st.data_editor, editing will be enabled with a date picker widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "datetime.date or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "datetime.date or None", + "is_optional": false, + "description": "

The minimum date that can be entered.\nIf None (default), there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "datetime.date or None", + "is_optional": false, + "description": "

The maximum date that can be entered.\nIf None (default), there will be no maximum.

\n", + "default": null + }, + { + "name": "step", + "type_name": "int or None", + "is_optional": false, + "description": "

The stepping interval in days. If None (default), the step will be 1 day.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L1278" + }, + "streamlit.column_config.DatetimeColumn": { + "name": "DatetimeColumn", + "signature": "st.column_config.DatetimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None, timezone=None)", + "examples": "
\n
\nfrom datetime import datetime\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            datetime(2024, 2, 5, 12, 30),\n            datetime(2023, 11, 10, 18, 0),\n            datetime(2024, 3, 11, 20, 10),\n            datetime(2023, 9, 12, 3, 0),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.DatetimeColumn(\n            "Appointment",\n            min_value=datetime(2023, 6, 1),\n            max_value=datetime(2025, 1, 1),\n            format="D MMM YYYY, h:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a datetime column in st.dataframe or st.data_editor.

\n

This is the default column type for datetime values. This command needs to be\nused in the column_config parameter of st.dataframe or\nst.data_editor. When used with st.data_editor, editing will be enabled\nwith a datetime picker widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "datetime.datetime or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A momentJS format string controlling how datetimes are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD HH:mm:ss.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "datetime.datetime or None", + "is_optional": false, + "description": "

The minimum datetime that can be entered.\nIf None (default), there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "datetime.datetime or None", + "is_optional": false, + "description": "

The maximum datetime that can be entered.\nIf None (default), there will be no maximum.

\n", + "default": null + }, + { + "name": "step", + "type_name": "int, float, datetime.timedelta, or None", + "is_optional": false, + "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", + "default": null + }, + { + "name": "timezone", + "type_name": "str or None", + "is_optional": false, + "description": "

The timezone of this column. If None (default),\nthe timezone is inferred from the underlying data.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L1043" + }, + "streamlit.column_config.ImageColumn": { + "name": "ImageColumn", + "signature": "st.column_config.ImageColumn(label=None, *, width=None, help=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/5435b8cb-6c6c-490b-9608-799b543655d3/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/ef9a7627-13f2-47e5-8f65-3f69bb38a5c2/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/31b99099-8eae-4ff8-aa89-042895ed3843/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/6a399b09-241e-4ae7-a31f-7640dc1d181e/Home_Page.png",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.ImageColumn(\n            "Preview Image", help="Streamlit app preview screenshots"\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure an image column in st.dataframe or st.data_editor.

\n

The cell values need to be one of:

\n
    \n
  • A URL to fetch the image from. This can also be a relative URL of an image\ndeployed via static file serving.\nNote that you can NOT use an arbitrary local image if it is not available through\na public URL.
  • \n
  • A data URL containing an SVG XML like data:image/svg+xml;utf8,<svg xmlns=...</svg>.
  • \n
  • A data URL containing a Base64 encoded image like data:image/png;base64,iVBO....
  • \n
\n

Image columns are not editable at the moment. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L907" + }, + "streamlit.column_config.LineChartColumn": { + "name": "LineChartColumn", + "signature": "st.column_config.LineChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.LineChartColumn(\n            "Sales (last 6 months)",\n            width="medium",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n         ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a line chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "y_min", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", + "default": null + }, + { + "name": "y_max", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L826" + }, + "streamlit.column_config.LinkColumn": { + "name": "LinkColumn", + "signature": "st.column_config.LinkColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://roadmap.streamlit.app",\n            "https://extras.streamlit.app",\n            "https://issues.streamlit.app",\n            "https://30days.streamlit.app",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.LinkColumn(\n            "Trending apps",\n            help="The top trending Streamlit apps",\n            validate="^https://[a-z]+\\.streamlit\\.app$",\n            max_chars=100,\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a link column in st.dataframe or st.data_editor.

\n

The cell values need to be string and will be shown as clickable links.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor. When used with st.data_editor, editing will be enabled\nwith a text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "str or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", + "default": null + }, + { + "name": "validate", + "type_name": "str or None", + "is_optional": false, + "description": "

A regular expression (JS flavor, e.g. "^https://.+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L466" + }, + "streamlit.column_config.ListColumn": { + "name": "ListColumn", + "signature": "st.column_config.ListColumn(label=None, *, width=None, help=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ListColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            width="medium",\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a list column in st.dataframe or st.data_editor.

\n

This is the default column type for list-like values. List columns are not editable\nat the moment. This command needs to be used in the column_config parameter of\nst.dataframe or st.data_editor.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L978" + }, + "streamlit.column_config.NumberColumn": { + "name": "NumberColumn", + "signature": "st.column_config.NumberColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "price": [20, 950, 250, 500],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "price": st.column_config.NumberColumn(\n            "Price (in USD)",\n            help="The price of the product in USD",\n            min_value=0,\n            max_value=1000,\n            step=1,\n            format="$%d",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a number column in st.dataframe or st.data_editor.

\n

This is the default column type for integer and float values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a numeric input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how numbers are displayed.\nThis does not impact the return value. Valid formatters: %d %e %f %g %i %u.\nYou can also add prefixes and suffixes, e.g. "$ %.2f" to show a dollar prefix.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum value that can be entered.\nIf None (default), there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The maximum value that can be entered.\nIf None (default), there will be no maximum.

\n", + "default": null + }, + { + "name": "step", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The stepping interval. Specifies the precision of numbers that can be entered.\nIf None (default), uses 1 for integers and unrestricted precision for floats.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L262" + }, + "streamlit.column_config.ProgressColumn": { + "name": "ProgressColumn", + "signature": "st.column_config.ProgressColumn(label=None, *, width=None, help=None, format=None, min_value=None, max_value=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [200, 550, 1000, 80],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ProgressColumn(\n            "Sales volume",\n            help="The sales volume in USD",\n            format="$%f",\n            min_value=0,\n            max_value=1000,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a progress column in st.dataframe or st.data_editor.

\n

Cells need to contain a number. Progress columns are not editable at the moment.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how numbers are displayed.\nValid formatters: %d %e %f %g %i %u. You can also add prefixes and suffixes,\ne.g. "$ %.2f" to show a dollar prefix.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum value of the progress bar.\nIf None (default), will be 0.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum value of the progress bar. If None (default), will be 100 for\ninteger values and 1 for float values.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L1391" + }, + "streamlit.column_config.SelectboxColumn": { + "name": "SelectboxColumn", + "signature": "st.column_config.SelectboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, options=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "category": [\n            "\ud83d\udcca Data Exploration",\n            "\ud83d\udcc8 Data Visualization",\n            "\ud83e\udd16 LLM",\n            "\ud83d\udcca Data Exploration",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "category": st.column_config.SelectboxColumn(\n            "App Category",\n            help="The category of the app",\n            width="medium",\n            options=[\n                "\ud83d\udcca Data Exploration",\n                "\ud83d\udcc8 Data Visualization",\n                "\ud83e\udd16 LLM",\n            ],\n            required=True,\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a selectbox column in st.dataframe or st.data_editor.

\n

This is the default column type for Pandas categorical values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a selectbox widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "str, int, float, bool, or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "options", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

The options that can be selected during editing. If None (default), this will be\ninferred from the underlying dataframe column if its dtype is \u201ccategory\u201d\n(see Pandas docs on categorical data).

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L647" + }, + "streamlit.column_config.TextColumn": { + "name": "TextColumn", + "signature": "st.column_config.TextColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", + "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.TextColumn(\n            "Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            default="st.",\n            max_chars=50,\n            validate="^st\\.[a-z_]+$",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a text column in st.dataframe or st.data_editor.

\n

This is the default column type for string values. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor. When used with\nst.data_editor, editing will be enabled with a text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "str or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", + "default": null + }, + { + "name": "validate", + "type_name": "str or None", + "is_optional": false, + "description": "

A regular expression (JS flavor, e.g. "^[a-z]+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L372" + }, + "streamlit.column_config.TimeColumn": { + "name": "TimeColumn", + "signature": "st.column_config.TimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", + "examples": "
\n
\nfrom datetime import time\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            time(12, 30),\n            time(18, 0),\n            time(9, 10),\n            time(16, 25),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.TimeColumn(\n            "Appointment",\n            min_value=time(8, 0, 0),\n            max_value=time(19, 0, 0),\n            format="hh:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Configure a time column in st.dataframe or st.data_editor.

\n

This is the default column type for time values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When\nused with st.data_editor, editing will be enabled with a time picker widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", + "default": null + }, + { + "name": "width", + "type_name": "\"small\", \"medium\", \"large\", or None", + "is_optional": false, + "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", + "default": "False" + }, + { + "name": "required", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", + "default": "False" + }, + { + "name": "default", + "type_name": "datetime.time or None", + "is_optional": false, + "description": "

Specifies the default value in this column when a new row is added by the user.

\n", + "default": "value" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses HH:mm:ss.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "datetime.time or None", + "is_optional": false, + "description": "

The minimum time that can be entered.\nIf None (default), there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "datetime.time or None", + "is_optional": false, + "description": "

The maximum time that can be entered.\nIf None (default), there will be no maximum.

\n", + "default": null + }, + { + "name": "step", + "type_name": "int, float, datetime.timedelta, or None", + "is_optional": false, + "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/column_types.py#L1164" + }, + "streamlit.components.v1.declare_component": { + "name": "declare_component", + "signature": "st.components.v1.declare_component(name, path=None, url=None)", + "description": "

Create and register a custom component.

\n", + "args": [ + { + "name": "name", + "type_name": "str", + "is_optional": false, + "description": "

A short, descriptive name for the component. Like, "slider".

\n", + "default": null + }, + { + "name": "path", + "type_name": "str or None", + "is_optional": false, + "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", + "default": null + }, + { + "name": "url", + "type_name": "str or None", + "is_optional": false, + "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "CustomComponent", + "is_generator": false, + "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/components/v1/components.py#L262" + }, + "streamlit.components.v1.html": { + "name": "html", + "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", + "description": "

Display an HTML string in an iframe.

\n", + "args": [ + { + "name": "html", + "type_name": "str", + "is_optional": false, + "description": "

The HTML string to embed in the iframe.

\n", + "default": null + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", + "default": "the" + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", + "default": "150" + }, + { + "name": "scrolling", + "type_name": "bool", + "is_optional": false, + "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", + "default": "False" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/iframe.py#L59" + }, + "streamlit.components.v1.iframe": { + "name": "iframe", + "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", + "description": "

Load a remote URL in an iframe.

\n", + "args": [ + { + "name": "src", + "type_name": "str", + "is_optional": false, + "description": "

The URL of the page to embed.

\n", + "default": null + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", + "default": "the" + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", + "default": "150" + }, + { + "name": "scrolling", + "type_name": "bool", + "is_optional": false, + "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", + "default": "False" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/iframe.py#L25" + }, + "DeltaGenerator.add_rows": { + "name": "add_rows", + "signature": "element.add_rows(data=None, **kwargs)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", + "description": "

Concatenate a dataframe to the bottom of the current one.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", + "is_optional": false, + "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "**kwargs", + "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", + "is_optional": false, + "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L894" + }, + "DeltaGenerator.altair_chart": { + "name": "altair_chart", + "signature": "element.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", + "description": "

Display a chart using the Altair library.

\n", + "args": [ + { + "name": "altair_chart", + "type_name": "altair.Chart", + "is_optional": false, + "description": "

The Altair chart object to display.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L766" + }, + "DeltaGenerator.area_chart": { + "name": "area_chart", + "signature": "element.area_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns = ['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A', 'B', 'C'], 20)\n})\n\nst.area_chart(\n    chart_data,\n    x = 'col1',\n    y = 'col2',\n    color = 'col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple series with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['col1', 'col2', 'col3'])\n\nst.area_chart(\n    chart_data,\n    x='col1',\n    y=['col2', 'col3'],\n    color=['#FF0000','#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For an area chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L409" + }, + "DeltaGenerator.audio": { + "name": "audio", + "signature": "element.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", + "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", + "description": "

Display an audio player.

\n", + "args": [ + { + "name": "data", + "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", + "is_optional": false, + "description": "

Raw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", + "default": "channel" + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", + "default": "s" + }, + { + "name": "start_time", + "type_name": "int", + "is_optional": false, + "description": "

The time from which this element should start playing.

\n", + "default": null + }, + { + "name": "sample_rate", + "type_name": "int or None", + "is_optional": false, + "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/media.py#L42" + }, + "DeltaGenerator.balloons": { + "name": "balloons", + "signature": "element.balloons()", + "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", + "description": "

Draw celebratory balloons.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/balloons.py#L25" + }, + "DeltaGenerator.bar_chart": { + "name": "bar_chart", + "signature": "element.bar_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A','B','C'],20)\n})\n\nst.bar_chart(\n    chart_data,\n    x='col1',\n    y='col2',\n    color='col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple series with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['col1', 'col2', 'col3'])\n\nst.bar_chart(\n    chart_data,\n    x='col1',\n    y=['col2', 'col3'],\n    color=['#FF0000','#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For a bar chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L587" + }, + "DeltaGenerator.bokeh_chart": { + "name": "bokeh_chart", + "signature": "element.bokeh_chart(figure, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", + "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", + "args": [ + { + "name": "figure", + "type_name": "bokeh.plotting.figure.Figure", + "is_optional": false, + "description": "

A Bokeh figure to plot.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/bokeh_chart.py#L36" + }, + "DeltaGenerator.button": { + "name": "button", + "signature": "element.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\n\nst.button("Reset", type="primary")\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", + "description": "

Display a button widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", + "default": null + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/button.py#L61" + }, + "DeltaGenerator.camera_input": { + "name": "camera_input", + "signature": "element.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", + "description": "

Display a widget that returns pictures from the user's webcam.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

A tooltip that gets displayed next to the camera input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "None or UploadedFile", + "is_generator": false, + "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/camera_input.py#L78" + }, + "DeltaGenerator.caption": { + "name": "caption", + "signature": "element.caption(body, unsafe_allow_html=False, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", + "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the caption.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L146" + }, + "DeltaGenerator.chat_input": { + "name": "chat_input", + "signature": "element.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", + "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", + "args": [ + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", + "default": "s" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", + "default": null + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

Whether the chat input should be disabled. Defaults to False.

\n", + "default": "False" + }, + { + "name": "on_submit", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when the chat input's value is submitted.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "str or None", + "is_generator": false, + "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/chat.py#L214" + }, + "DeltaGenerator.chat_message": { + "name": "chat_message", + "signature": "element.chat_message(name, *, avatar=None)", + "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", + "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", + "args": [ + { + "name": "name", + "type_name": "\"user\", \"assistant\", \"ai\", \"human\", or str", + "is_optional": false, + "description": "

The name of the message author. Can be "human"/"user" or\n"ai"/"assistant" to enable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", + "default": null + }, + { + "name": "avatar", + "type_name": "str, numpy.ndarray, or BytesIO", + "is_optional": false, + "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user",\n"assistant", "ai", "human" or the first letter of the name value.

\n", + "default": "icons" + } + ], + "returns": [ + { + "type_name": "Container", + "is_generator": false, + "description": "

A single container that can hold multiple elements.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/chat.py#L121" + }, + "DeltaGenerator.checkbox": { + "name": "checkbox", + "signature": "element.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", + "description": "

Display a checkbox widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "bool", + "is_optional": false, + "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this checkbox's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

Whether or not the checkbox is checked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/checkbox.py#L53" + }, + "DeltaGenerator.code": { + "name": "code", + "signature": "element.code(body, language=\"python\", line_numbers=False)", + "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", + "description": "

Display a code block with optional syntax highlighting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as code.

\n", + "default": null + }, + { + "name": "language", + "type_name": "str or None", + "is_optional": false, + "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", + "default": "s" + }, + { + "name": "line_numbers", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/code.py#L27" + }, + "DeltaGenerator.color_picker": { + "name": "color_picker", + "signature": "element.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", + "description": "

Display a color picker widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "str", + "is_optional": false, + "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", + "default": "black" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the color picker.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The selected color as a hex string.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/color_picker.py#L53" + }, + "DeltaGenerator.columns": { + "name": "columns", + "signature": "element.columns(spec, *, gap=\"small\")", + "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", + "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", + "args": [ + { + "name": "spec", + "type_name": "int or iterable of numbers", + "is_optional": false, + "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", + "default": null + }, + { + "name": "gap", + "type_name": "\"small\", \"medium\", or \"large\"", + "is_optional": false, + "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", + "default": "s" + } + ], + "returns": [ + { + "type_name": "list of containers", + "is_generator": false, + "description": "

A list of container objects.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L79" + }, + "DeltaGenerator.container": { + "name": "container", + "signature": "element.container()", + "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", + "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L31" + }, + "DeltaGenerator.data_editor": { + "name": "data_editor", + "signature": "element.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", + "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", + "is_optional": false, + "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", + "default": "False" + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + }, + { + "name": "num_rows", + "type_name": "\"fixed\" or \"dynamic\"", + "is_optional": false, + "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool or iterable of str", + "is_optional": false, + "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this data_editor's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", + "is_generator": false, + "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/data_editor.py#L529" + }, + "DeltaGenerator.dataframe": { + "name": "dataframe", + "signature": "element.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", + "default": "height" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L44" + }, + "DeltaGenerator.date_input": { + "name": "date_input", + "signature": "element.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, format=\"YYYY/MM/DD\", disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input("When's your birthday", datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\nimport datetime\nimport streamlit as st\n\ntoday = datetime.datetime.now()\nnext_year = today.year + 1\njan_1 = datetime.date(next_year, 1, 1)\ndec_31 = datetime.date(next_year, 12, 31)\n\nd = st.date_input(\n    "Select your vacation for next year",\n    (jan_1, datetime.date(next_year, 1, 7)),\n    jan_1,\n    dec_31,\n    format="MM.DD.YYYY",\n)\nd\n
\n\n \n
\n", + "description": "

Display a date input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", + "is_optional": false, + "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", + "default": "today" + }, + { + "name": "min_value", + "type_name": "datetime.date or datetime.datetime", + "is_optional": false, + "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", + "default": "value" + }, + { + "name": "max_value", + "type_name": "datetime.date or datetime.datetime", + "is_optional": false, + "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", + "default": "value" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this date_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

A format string controlling how the interface should display dates.\nSupports \u201cYYYY/MM/DD\u201d (default), \u201cDD/MM/YYYY\u201d, or \u201cMM/DD/YYYY\u201d.\nYou may also use a period (.) or hyphen (-) as separators.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "datetime.date or a tuple with 0-2 dates", + "is_generator": false, + "description": "

The current value of the date input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/time_widgets.py#L415" + }, + "DeltaGenerator.dg": { + "name": "dg", + "signature": "element.dg", + "description": "

Get our DeltaGenerator.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L156" + }, + "DeltaGenerator.divider": { + "name": "divider", + "signature": "element.divider()", + "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", + "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L258" + }, + "DeltaGenerator.download_button": { + "name": "download_button", + "signature": "element.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", + "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "data", + "type_name": "str or bytes or file", + "is_optional": false, + "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", + "default": null + }, + { + "name": "file_name", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", + "default": null + }, + { + "name": "mime", + "type_name": "str or None", + "is_optional": false, + "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", + "default": "s" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", + "default": null + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/button.py#L170" + }, + "DeltaGenerator.empty": { + "name": "empty", + "signature": "element.empty()", + "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", + "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/empty.py#L24" + }, + "DeltaGenerator.error": { + "name": "error", + "signature": "element.error(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", + "description": "

Display error message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The error text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L27" + }, + "DeltaGenerator.exception": { + "name": "exception", + "signature": "element.exception(exception)", + "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", + "description": "

Display an exception.

\n", + "args": [ + { + "name": "exception", + "type_name": "Exception", + "is_optional": false, + "description": "

The exception to display.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/exception.py#L50" + }, + "DeltaGenerator.expander": { + "name": "expander", + "signature": "element.expander(label, expanded=False)", + "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", + "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L319" + }, + "DeltaGenerator.experimental_data_editor": { + "name": "experimental_data_editor", + "signature": "element.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", + "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", + "is_optional": false, + "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", + "default": "False" + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + }, + { + "name": "num_rows", + "type_name": "\"fixed\" or \"dynamic\"", + "is_optional": false, + "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool or iterable of str", + "is_optional": false, + "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this data_editor's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", + "is_generator": false, + "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/data_editor.py#L529" + }, + "DeltaGenerator.file_uploader": { + "name": "file_uploader", + "signature": "element.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", + "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "type", + "type_name": "str or list of str or None", + "is_optional": false, + "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", + "default": "None" + }, + { + "name": "accept_multiple_files", + "type_name": "bool", + "is_optional": false, + "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", + "default": "False" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

A tooltip that gets displayed next to the file uploader.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "None or UploadedFile or list of UploadedFile", + "is_generator": false, + "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/file_uploader.py#L222" + }, + "DeltaGenerator.form": { + "name": "form", + "signature": "element.form(key, clear_on_submit=False)", + "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n\n \n
\n", + "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
  • Within a form, the only widget that can have a callback function is\nst.form_submit_button.
  • \n
\n", + "args": [ + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", + "default": null + }, + { + "name": "clear_on_submit", + "type_name": "bool", + "is_optional": false, + "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", + "default": "values" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/form.py#L118" + }, + "DeltaGenerator.form_submit_button": { + "name": "form_submit_button", + "signature": "element.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", + "default": "s" + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", + "default": "None" + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/form.py#L218" + }, + "DeltaGenerator.graphviz_chart": { + "name": "graphviz_chart", + "signature": "element.graphviz_chart(figure_or_dot, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", + "description": "

Display a graph using the dagre-d3 library.

\n", + "args": [ + { + "name": "figure_or_dot", + "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", + "is_optional": false, + "description": "

The Graphlib graph object or dot string to display

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/graphviz_chart.py#L39" + }, + "DeltaGenerator.header": { + "name": "header", + "signature": "element.header(body, anchor=None, *, help=None, divider=False)", + "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header with a divider', divider='rainbow')\nst.header('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in header formatting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the header.

\n", + "default": null + }, + { + "name": "divider", + "type_name": "bool or \u201cblue\u201d, \u201cgreen\u201d, \u201corange\u201d, \u201cred\u201d, \u201cviolet\u201d, \u201cgray\u201d/\"grey\", or \u201crainbow\u201d", + "is_optional": false, + "description": "

Shows a colored divider below the header. If True, successive\nheaders will cycle through divider colors. That is, the first\nheader will have a blue line, the second header will have a\ngreen line, and so on. If a string, the color can be set to one of\nthe following: blue, green, orange, red, violet, gray/grey, or\nrainbow.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L41" + }, + "DeltaGenerator.help": { + "name": "help", + "signature": "element.help(obj=)", + "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", + "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", + "args": [ + { + "name": "obj", + "type_name": "any", + "is_optional": false, + "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/doc_string.py#L48" + }, + "DeltaGenerator.id": { + "name": "id", + "signature": "element.id" + }, + "DeltaGenerator.image": { + "name": "image", + "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", + "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", + "description": "

Display an image or list of images.

\n", + "args": [ + { + "name": "image", + "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", + "is_optional": false, + "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", + "default": null + }, + { + "name": "caption", + "type_name": "str or list of str", + "is_optional": false, + "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", + "default": "image" + }, + { + "name": "use_column_width", + "type_name": "\"auto\", \"always\", \"never\", or bool", + "is_optional": false, + "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", + "default": null + }, + { + "name": "clamp", + "type_name": "bool", + "is_optional": false, + "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", + "default": null + }, + { + "name": "channels", + "type_name": "\"RGB\" or \"BGR\"", + "is_optional": false, + "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", + "default": "s" + }, + { + "name": "output_format", + "type_name": "\"JPEG\", \"PNG\", or \"auto\"", + "is_optional": false, + "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/image.py#L87" + }, + "DeltaGenerator.info": { + "name": "info", + "signature": "element.info(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", + "description": "

Display an informational message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The info text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L91" + }, + "DeltaGenerator.json": { + "name": "json", + "signature": "element.json(body, *, expanded=True)", + "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", + "description": "

Display object or string as a pretty-printed JSON string.

\n", + "args": [ + { + "name": "body", + "type_name": "object or str", + "is_optional": false, + "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", + "default": "True" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/json.py#L35" + }, + "DeltaGenerator.latex": { + "name": "latex", + "signature": "element.latex(body, *, help=None)", + "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", + "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", + "args": [ + { + "name": "body", + "type_name": "str or SymPy expression", + "is_optional": false, + "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L210" + }, + "DeltaGenerator.line_chart": { + "name": "line_chart", + "signature": "element.line_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A','B','C'], 20)\n})\n\nst.line_chart(\n    chart_data,\n    x = 'col1',\n    y = 'col2',\n    color = 'col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple lines with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns = ['col1', 'col2', 'col3'])\n\nst.line_chart(\n    chart_data,\n    x = 'col1',\n    y = ['col2', 'col3'],\n    color = ['#FF0000', '#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different lines in this chart. This argument\ncan only be supplied by keyword.

\n

For a line chart with just one line, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto lines of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby", then\nthose 1000 datapoints will be grouped into three lines, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into three lines, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe lines in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L231" + }, + "DeltaGenerator.map": { + "name": "map", + "signature": "element.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n

You can also customize the size and color of the datapoints:

\n
\nst.map(df, size=20, color='#0044ff')\n
\n

And finally, you can choose different columns to use for the latitude\nand longitude components, as well as set size and color of each\ndatapoint dynamically based on other columns:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame({\n    "col1": np.random.randn(1000) / 50 + 37.76,\n    "col2": np.random.randn(1000) / 50 + -122.4,\n    "col3": np.random.randn(1000) * 100,\n    "col4": np.random.rand(1000, 4).tolist(),\n})\n\nst.map(df,\n    latitude='col1',\n    longitude='col2',\n    size='col3',\n    color='col4')\n
\n\n \n
\n", + "description": "

Display a map with a scatterplot overlaid onto it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The data to be plotted.

\n", + "default": null + }, + { + "name": "latitude", + "type_name": "str or None", + "is_optional": false, + "description": "

The name of the column containing the latitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the latitude data will come from any column named 'lat',\n'latitude', 'LAT', or 'LATITUDE'.

\n", + "default": null + }, + { + "name": "longitude", + "type_name": "str or None", + "is_optional": false, + "description": "

The name of the column containing the longitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the longitude data will come from any column named 'lon',\n'longitude', 'LON', or 'LONGITUDE'.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str or tuple or None", + "is_optional": false, + "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", + "default": "color" + }, + { + "name": "size", + "type_name": "str or float or None", + "is_optional": false, + "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", + "default": "size" + }, + { + "name": "zoom", + "type_name": "int", + "is_optional": false, + "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/map.py#L91" + }, + "DeltaGenerator.markdown": { + "name": "markdown", + "signature": "element.markdown(body, unsafe_allow_html=False, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.markdown("*Streamlit* is **really** ***cool***.")\nst.markdown('''\n    :red[Streamlit] :orange[can] :green[write] :blue[text] :violet[in]\n    :gray[pretty] :rainbow[colors].''')\nst.markdown("Here's a bouquet &mdash;\\\n            :tulip::cherry_blossom::rose::hibiscus::sunflower::blossom:")\n\nmulti = '''If you end a line with two spaces,\na soft return is used for the next line.\n\nTwo (or more) newline characters in a row will result in a hard return.\n'''\nst.markdown(multi)\n
\n\n \n
\n", + "description": "

Display string formatted as Markdown.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L31" + }, + "DeltaGenerator.metric": { + "name": "metric", + "signature": "element.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", + "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "value", + "type_name": "int, float, str, or None", + "is_optional": false, + "description": "

Value of the metric. None is rendered as a long dash.

\n", + "default": null + }, + { + "name": "delta", + "type_name": "int, float, str, or None", + "is_optional": false, + "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", + "default": null + }, + { + "name": "delta_color", + "type_name": "\"normal\", \"inverse\", or \"off\"", + "is_optional": false, + "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the metric label.

\n", + "default": null + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/metric.py#L46" + }, + "DeltaGenerator.multiselect": { + "name": "multiselect", + "signature": "element.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder=\"Choose an option\", disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", + "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", + "default": null + }, + { + "name": "default", + "type_name": "[V], V, or None", + "is_optional": false, + "description": "

List of default values. Can also be a single value.

\n", + "default": "values" + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this multiselect's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "max_selections", + "type_name": "int", + "is_optional": false, + "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A string to display when no options are selected. Defaults to 'Choose an option'.

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "list", + "is_generator": false, + "description": "

A list with the selected options

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/multiselect.py#L146" + }, + "DeltaGenerator.number_input": { + "name": "number_input", + "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", + "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", + "default": null + }, + { + "name": "value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", + "default": "min_value" + }, + { + "name": "step", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", + "default": "1" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this number_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "int or float", + "is_generator": false, + "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/number_input.py#L67" + }, + "DeltaGenerator.plotly_chart": { + "name": "plotly_chart", + "signature": "element.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", + "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", + "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", + "args": [ + { + "name": "figure_or_data", + "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", + "is_optional": false, + "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", + "default": null + }, + { + "name": "sharing", + "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", + "is_optional": false, + "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + }, + { + "name": "**kwargs", + "type_name": null, + "is_optional": null, + "description": "

Any argument accepted by Plotly's plot() function.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/plotly_chart.py#L81" + }, + "DeltaGenerator.progress": { + "name": "progress", + "signature": "element.progress(value, text=None)", + "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", + "description": "

Display a progress bar.

\n", + "args": [ + { + "name": "value", + "type_name": "int or float", + "is_optional": false, + "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", + "default": null + }, + { + "name": "text", + "type_name": "str or None", + "is_optional": false, + "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/progress.py#L66" + }, + "DeltaGenerator.pydeck_chart": { + "name": "pydeck_chart", + "signature": "element.pydeck_chart(pydeck_obj=None, use_container_width=False)", + "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", + "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", + "args": [ + { + "name": "pydeck_obj", + "type_name": "pydeck.Deck or None", + "is_optional": false, + "description": "

Object specifying the PyDeck chart to draw.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/deck_gl_json_chart.py#L37" + }, + "DeltaGenerator.pyplot": { + "name": "pyplot", + "signature": "element.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", + "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", + "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", + "description": "

Display a matplotlib.pyplot figure.

\n", + "args": [ + { + "name": "fig", + "type_name": "Matplotlib Figure", + "is_optional": false, + "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", + "default": null + }, + { + "name": "clear_figure", + "type_name": "bool", + "is_optional": false, + "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", + "default": "based" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. Defaults to True.

\n", + "default": "s" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Arguments to pass to Matplotlib's savefig function.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/pyplot.py#L38" + }, + "DeltaGenerator.radio": { + "name": "radio", + "signature": "element.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, captions=None, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What's your favorite movie genre",\n    [":rainbow[Comedy]", "***Drama***", "Documentary :movie_camera:"],\n    captions = ["Laugh out loud.", "Get the popcorn.", "Never stop learning."])\n\nif genre == ':rainbow[Comedy]':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", + "description": "

Display a radio button widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the radio options. Labels can include markdown as\ndescribed in the label parameter and will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", + "default": null + }, + { + "name": "index", + "type_name": "int", + "is_optional": false, + "description": "

The index of the preselected option on first render.

\n", + "default": null + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the radio.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this radio's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "horizontal", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", + "default": "false" + }, + { + "name": "captions", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

A list of captions to show below each radio button. If None (default),\nno captions are shown.

\n", + "default": null + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any", + "is_generator": false, + "description": "

The selected option.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/radio.py#L76" + }, + "DeltaGenerator.select_slider": { + "name": "select_slider", + "signature": "element.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", + "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", + "default": null + }, + { + "name": "value", + "type_name": "a supported type or a tuple/list of supported types or None", + "is_optional": false, + "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", + "default": "first" + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the select slider.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this select_slider's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any value or tuple of any value", + "is_generator": false, + "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/select_slider.py#L107" + }, + "DeltaGenerator.selectbox": { + "name": "selectbox", + "signature": "element.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=\"Select...\", disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", + "description": "

Display a select widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", + "default": null + }, + { + "name": "index", + "type_name": "int", + "is_optional": false, + "description": "

The index of the preselected option on first render.

\n", + "default": null + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this selectbox's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A string to display when no options are selected. Defaults to 'Select...'.

\n

A selectbox can't be empty, so a placeholder only displays while a\nuser's cursor is in a selectbox after manually deleting the current\nselection. A future update will allow selectboxes to be empty.

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any", + "is_generator": false, + "description": "

The selected option

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/selectbox.py#L72" + }, + "DeltaGenerator.slider": { + "name": "slider", + "signature": "element.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", + "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "a supported type or None", + "is_optional": false, + "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", + "default": "0" + }, + { + "name": "max_value", + "type_name": "a supported type or None", + "is_optional": false, + "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", + "default": "100" + }, + { + "name": "value", + "type_name": "a supported type or a tuple/list of supported types or None", + "is_optional": false, + "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", + "default": "min_value" + }, + { + "name": "step", + "type_name": "int, float, timedelta, or None", + "is_optional": false, + "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", + "default": "1" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the slider.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this slider's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", + "is_generator": false, + "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/slider.py#L173" + }, + "DeltaGenerator.snow": { + "name": "snow", + "signature": "element.snow()", + "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", + "description": "

Draw celebratory snowfall.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/snow.py#L25" + }, + "DeltaGenerator.status": { + "name": "status", + "signature": "element.status(label, *, expanded=False, state=\"running\")", + "examples": "
\n

You can use with notation to insert any element into an status container:

\n
\nimport time\nimport streamlit as st\n\nwith st.status("Downloading data..."):\n    st.write("Searching for data...")\n    time.sleep(2)\n    st.write("Found URL.")\n    time.sleep(1)\n    st.write("Downloading data...")\n    time.sleep(1)\n\nst.button('Rerun')\n
\n\n \n

You can also use .update() on the container to change the label, state,\nor expanded state:

\n
\nimport time\nimport streamlit as st\n\nwith st.status("Downloading data...", expanded=True) as status:\n    st.write("Searching for data...")\n    time.sleep(2)\n    st.write("Found URL.")\n    time.sleep(1)\n    st.write("Downloading data...")\n    time.sleep(1)\n    status.update(label="Download complete!", state="complete", expanded=False)\n\nst.button('Rerun')\n
\n\n \n
\n", + "description": "

Insert a status container to display output from long-running tasks.

\n

Inserts a container into your app that is typically used to show the status and\ndetails of a process or task. The container can hold multiple elements and can\nbe expanded or collapsed by the user similar to st.expander.\nWhen collapsed, all that is visible is the status icon and label.

\n

The label, state, and expanded state can all be updated by calling .update()\non the returned object. To add elements to the returned container, you can\nuse "with" notation (preferred) or just call methods directly on the returned\nobject.

\n

By default, st.status() initializes in the "running" state. When called using\n"with" notation, it automatically updates to the "complete" state at the end\nof the "with" block. See examples below for more details.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

The initial label of the status container. The label can optionally\ncontain Markdown and supports the following elements: Bold,\nItalics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents)\nrender. Display unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

If True, initializes the status container in "expanded" state. Defaults to\nFalse (collapsed).

\n", + "default": "s" + }, + { + "name": "state", + "type_name": "\"running\", \"complete\", or \"error\"", + "is_optional": false, + "description": "

The initial state of the status container which determines which icon is\nshown:

\n
    \n
  • running (default): A spinner icon is shown.
  • \n
  • complete: A checkmark icon is shown.
  • \n
  • error: An error icon is shown.
  • \n
\n", + "default": null + } + ], + "returns": [ + { + "type_name": "StatusContainer", + "is_generator": false, + "description": "

A mutable status container that can hold multiple elements. The label, state,\nand expanded state can be updated after creation via .update().

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L414" + }, + "DeltaGenerator.subheader": { + "name": "subheader", + "signature": "element.subheader(body, anchor=None, *, help=None, divider=False)", + "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader with a divider', divider='rainbow')\nst.subheader('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in subheader formatting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the subheader.

\n", + "default": null + }, + { + "name": "divider", + "type_name": "bool or \u201cblue\u201d, \u201cgreen\u201d, \u201corange\u201d, \u201cred\u201d, \u201cviolet\u201d, \u201cgray\u201d/\"grey\", or \u201crainbow\u201d", + "is_optional": false, + "description": "

Shows a colored divider below the header. If True, successive\nheaders will cycle through divider colors. That is, the first\nheader will have a blue line, the second header will have a\ngreen line, and so on. If a string, the color can be set to one of\nthe following: blue, green, orange, red, violet, gray/grey, or\nrainbow.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L111" + }, + "DeltaGenerator.success": { + "name": "success", + "signature": "element.success(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", + "description": "

Display a success message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The success text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L124" + }, + "DeltaGenerator.table": { + "name": "table", + "signature": "element.table(data=None)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", + "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L193" + }, + "DeltaGenerator.tabs": { + "name": "tabs", + "signature": "element.tabs(tabs)", + "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", + "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", + "args": [ + { + "name": "tabs", + "type_name": "list of strings", + "is_optional": false, + "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "list of containers", + "is_generator": false, + "description": "

A list of container objects.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L207" + }, + "DeltaGenerator.text": { + "name": "text", + "signature": "element.text(body, *, help=None)", + "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", + "description": "

Write fixed-width and preformatted text.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the text.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/text.py#L27" + }, + "DeltaGenerator.text_area": { + "name": "text_area", + "signature": "element.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", + "description": "

Display a multi-line text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "object", + "is_optional": false, + "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", + "default": "height" + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

Maximum number of characters allowed in text area.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the textarea.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this text_area's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The current value of the text input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/text_widgets.py#L288" + }, + "DeltaGenerator.text_input": { + "name": "text_input", + "signature": "element.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", + "description": "

Display a single-line text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "object", + "is_optional": false, + "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", + "default": null + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

Max number of characters allowed in text input.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"default\" or \"password\"", + "is_optional": false, + "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", + "default": "s" + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "autocomplete", + "type_name": "str", + "is_optional": false, + "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this text input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The current value of the text input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/text_widgets.py#L72" + }, + "DeltaGenerator.time_input": { + "name": "time_input", + "signature": "element.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", + "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", + "description": "

Display a time input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "datetime.time/datetime.datetime", + "is_optional": false, + "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", + "default": "the" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this time_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + }, + { + "name": "step", + "type_name": "int or timedelta", + "is_optional": false, + "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", + "default": "900" + } + ], + "returns": [ + { + "type_name": "datetime.time", + "is_generator": false, + "description": "

The current value of the time input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/time_widgets.py#L219" + }, + "DeltaGenerator.title": { + "name": "title", + "signature": "element.title(body, anchor=None, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the title.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L181" + }, + "DeltaGenerator.toast": { + "name": "toast", + "signature": "element.toast(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.toast('Your edited image was saved!', icon='\ud83d\ude0d')\n
\n
\n", + "description": "

Display a short message, known as a notification "toast".

\n

The toast appears in the app's bottom-right corner and disappears after four seconds.

\n
\n

Warning

\n

st.toast is not compatible with Streamlit's caching and\ncannot be called within a cached function.

\n
\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the toast. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/toast.py#L37" + }, + "DeltaGenerator.toggle": { + "name": "toggle", + "signature": "element.toggle(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\non = st.toggle('Activate feature')\n\nif on:\n    st.write('Feature activated!')\n
\n\n \n
\n", + "description": "

Display a toggle widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this toggle is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "bool", + "is_optional": false, + "description": "

Preselect the toggle when it first renders. This will be\ncast to bool internally.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the toggle.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this toggle's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the toggle if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

Whether or not the toggle is checked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/checkbox.py#L156" + }, + "DeltaGenerator.vega_lite_chart": { + "name": "vega_lite_chart", + "signature": "element.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", + "description": "

Display a chart using the Vega-Lite library.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", + "is_optional": false, + "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "spec", + "type_name": "dict or None", + "is_optional": false, + "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Same as spec, but as keywords.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L819" + }, + "DeltaGenerator.video": { + "name": "video", + "signature": "element.video(data, format=\"video/mp4\", start_time=0)", + "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", + "description": "

Display a video player.

\n", + "args": [ + { + "name": "data", + "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", + "is_optional": false, + "description": "

Raw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", + "default": "s" + }, + { + "name": "start_time", + "type_name": "int", + "is_optional": false, + "description": "

The time from which this element should start playing.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/media.py#L115" + }, + "DeltaGenerator.warning": { + "name": "warning", + "signature": "element.warning(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", + "description": "

Display warning message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The warning text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L59" + }, + "DeltaGenerator.write": { + "name": "write", + "signature": "element.write(*args, unsafe_allow_html=False, **kwargs)", + "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", + "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", + "args": [ + { + "name": "*args", + "type_name": "any", + "is_optional": false, + "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": "False" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/write.py#L49" + }, + "StatusContainer.add_rows": { + "name": "add_rows", + "signature": "StatusContainer.add_rows(data=None, **kwargs)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", + "description": "

Concatenate a dataframe to the bottom of the current one.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", + "is_optional": false, + "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "**kwargs", + "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", + "is_optional": false, + "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L894" + }, + "StatusContainer.altair_chart": { + "name": "altair_chart", + "signature": "StatusContainer.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", + "description": "

Display a chart using the Altair library.

\n", + "args": [ + { + "name": "altair_chart", + "type_name": "altair.Chart", + "is_optional": false, + "description": "

The Altair chart object to display.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L766" + }, + "StatusContainer.area_chart": { + "name": "area_chart", + "signature": "StatusContainer.area_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns = ['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A', 'B', 'C'], 20)\n})\n\nst.area_chart(\n    chart_data,\n    x = 'col1',\n    y = 'col2',\n    color = 'col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple series with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['col1', 'col2', 'col3'])\n\nst.area_chart(\n    chart_data,\n    x='col1',\n    y=['col2', 'col3'],\n    color=['#FF0000','#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For an area chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L409" + }, + "StatusContainer.audio": { + "name": "audio", + "signature": "StatusContainer.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", + "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", + "description": "

Display an audio player.

\n", + "args": [ + { + "name": "data", + "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", + "is_optional": false, + "description": "

Raw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", + "default": "channel" + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", + "default": "s" + }, + { + "name": "start_time", + "type_name": "int", + "is_optional": false, + "description": "

The time from which this element should start playing.

\n", + "default": null + }, + { + "name": "sample_rate", + "type_name": "int or None", + "is_optional": false, + "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/media.py#L42" + }, + "StatusContainer.balloons": { + "name": "balloons", + "signature": "StatusContainer.balloons()", + "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", + "description": "

Draw celebratory balloons.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/balloons.py#L25" + }, + "StatusContainer.bar_chart": { + "name": "bar_chart", + "signature": "StatusContainer.bar_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A','B','C'],20)\n})\n\nst.bar_chart(\n    chart_data,\n    x='col1',\n    y='col2',\n    color='col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple series with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['col1', 'col2', 'col3'])\n\nst.bar_chart(\n    chart_data,\n    x='col1',\n    y=['col2', 'col3'],\n    color=['#FF0000','#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For a bar chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L587" + }, + "StatusContainer.bokeh_chart": { + "name": "bokeh_chart", + "signature": "StatusContainer.bokeh_chart(figure, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", + "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", + "args": [ + { + "name": "figure", + "type_name": "bokeh.plotting.figure.Figure", + "is_optional": false, + "description": "

A Bokeh figure to plot.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/bokeh_chart.py#L36" + }, + "StatusContainer.button": { + "name": "button", + "signature": "StatusContainer.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\n\nst.button("Reset", type="primary")\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", + "description": "

Display a button widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", + "default": null + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/button.py#L61" + }, + "StatusContainer.camera_input": { + "name": "camera_input", + "signature": "StatusContainer.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", + "description": "

Display a widget that returns pictures from the user's webcam.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

A tooltip that gets displayed next to the camera input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "None or UploadedFile", + "is_generator": false, + "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/camera_input.py#L78" + }, + "StatusContainer.caption": { + "name": "caption", + "signature": "StatusContainer.caption(body, unsafe_allow_html=False, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", + "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the caption.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L146" + }, + "StatusContainer.chat_input": { + "name": "chat_input", + "signature": "StatusContainer.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", + "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", + "args": [ + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", + "default": "s" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", + "default": null + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

Whether the chat input should be disabled. Defaults to False.

\n", + "default": "False" + }, + { + "name": "on_submit", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when the chat input's value is submitted.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "str or None", + "is_generator": false, + "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/chat.py#L214" + }, + "StatusContainer.chat_message": { + "name": "chat_message", + "signature": "StatusContainer.chat_message(name, *, avatar=None)", + "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", + "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", + "args": [ + { + "name": "name", + "type_name": "\"user\", \"assistant\", \"ai\", \"human\", or str", + "is_optional": false, + "description": "

The name of the message author. Can be "human"/"user" or\n"ai"/"assistant" to enable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", + "default": null + }, + { + "name": "avatar", + "type_name": "str, numpy.ndarray, or BytesIO", + "is_optional": false, + "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user",\n"assistant", "ai", "human" or the first letter of the name value.

\n", + "default": "icons" + } + ], + "returns": [ + { + "type_name": "Container", + "is_generator": false, + "description": "

A single container that can hold multiple elements.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/chat.py#L121" + }, + "StatusContainer.checkbox": { + "name": "checkbox", + "signature": "StatusContainer.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", + "description": "

Display a checkbox widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "bool", + "is_optional": false, + "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this checkbox's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

Whether or not the checkbox is checked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/checkbox.py#L53" + }, + "StatusContainer.code": { + "name": "code", + "signature": "StatusContainer.code(body, language=\"python\", line_numbers=False)", + "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", + "description": "

Display a code block with optional syntax highlighting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as code.

\n", + "default": null + }, + { + "name": "language", + "type_name": "str or None", + "is_optional": false, + "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", + "default": "s" + }, + { + "name": "line_numbers", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/code.py#L27" + }, + "StatusContainer.color_picker": { + "name": "color_picker", + "signature": "StatusContainer.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", + "description": "

Display a color picker widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "str", + "is_optional": false, + "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", + "default": "black" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the color picker.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The selected color as a hex string.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/color_picker.py#L53" + }, + "StatusContainer.columns": { + "name": "columns", + "signature": "StatusContainer.columns(spec, *, gap=\"small\")", + "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", + "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", + "args": [ + { + "name": "spec", + "type_name": "int or iterable of numbers", + "is_optional": false, + "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", + "default": null + }, + { + "name": "gap", + "type_name": "\"small\", \"medium\", or \"large\"", + "is_optional": false, + "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", + "default": "s" + } + ], + "returns": [ + { + "type_name": "list of containers", + "is_generator": false, + "description": "

A list of container objects.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L79" + }, + "StatusContainer.container": { + "name": "container", + "signature": "StatusContainer.container()", + "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", + "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L31" + }, + "StatusContainer.data_editor": { + "name": "data_editor", + "signature": "StatusContainer.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", + "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", + "is_optional": false, + "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", + "default": "False" + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + }, + { + "name": "num_rows", + "type_name": "\"fixed\" or \"dynamic\"", + "is_optional": false, + "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool or iterable of str", + "is_optional": false, + "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this data_editor's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", + "is_generator": false, + "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/data_editor.py#L529" + }, + "StatusContainer.dataframe": { + "name": "dataframe", + "signature": "StatusContainer.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", + "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", + "default": "height" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L44" + }, + "StatusContainer.date_input": { + "name": "date_input", + "signature": "StatusContainer.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, format=\"YYYY/MM/DD\", disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input("When's your birthday", datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\nimport datetime\nimport streamlit as st\n\ntoday = datetime.datetime.now()\nnext_year = today.year + 1\njan_1 = datetime.date(next_year, 1, 1)\ndec_31 = datetime.date(next_year, 12, 31)\n\nd = st.date_input(\n    "Select your vacation for next year",\n    (jan_1, datetime.date(next_year, 1, 7)),\n    jan_1,\n    dec_31,\n    format="MM.DD.YYYY",\n)\nd\n
\n\n \n
\n", + "description": "

Display a date input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", + "is_optional": false, + "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", + "default": "today" + }, + { + "name": "min_value", + "type_name": "datetime.date or datetime.datetime", + "is_optional": false, + "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", + "default": "value" + }, + { + "name": "max_value", + "type_name": "datetime.date or datetime.datetime", + "is_optional": false, + "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", + "default": "value" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this date_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

A format string controlling how the interface should display dates.\nSupports \u201cYYYY/MM/DD\u201d (default), \u201cDD/MM/YYYY\u201d, or \u201cMM/DD/YYYY\u201d.\nYou may also use a period (.) or hyphen (-) as separators.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "datetime.date or a tuple with 0-2 dates", + "is_generator": false, + "description": "

The current value of the date input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/time_widgets.py#L415" + }, + "StatusContainer.dg": { + "name": "dg", + "signature": "StatusContainer.dg", + "description": "

Get our DeltaGenerator.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L156" + }, + "StatusContainer.divider": { + "name": "divider", + "signature": "StatusContainer.divider()", + "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", + "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L258" + }, + "StatusContainer.download_button": { + "name": "download_button", + "signature": "StatusContainer.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", + "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "data", + "type_name": "str or bytes or file", + "is_optional": false, + "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", + "default": null + }, + { + "name": "file_name", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", + "default": null + }, + { + "name": "mime", + "type_name": "str or None", + "is_optional": false, + "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", + "default": "s" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", + "default": null + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/button.py#L170" + }, + "StatusContainer.empty": { + "name": "empty", + "signature": "StatusContainer.empty()", + "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", + "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/empty.py#L24" + }, + "StatusContainer.error": { + "name": "error", + "signature": "StatusContainer.error(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", + "description": "

Display error message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The error text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L27" + }, + "StatusContainer.exception": { + "name": "exception", + "signature": "StatusContainer.exception(exception)", + "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", + "description": "

Display an exception.

\n", + "args": [ + { + "name": "exception", + "type_name": "Exception", + "is_optional": false, + "description": "

The exception to display.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/exception.py#L50" + }, + "StatusContainer.expander": { + "name": "expander", + "signature": "StatusContainer.expander(label, expanded=False)", + "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", + "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L319" + }, + "StatusContainer.experimental_data_editor": { + "name": "experimental_data_editor", + "signature": "StatusContainer.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", + "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", + "is_optional": false, + "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", + "default": "False" + }, + { + "name": "hide_index", + "type_name": "bool or None", + "is_optional": false, + "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", + "default": null + }, + { + "name": "column_order", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", + "default": null + }, + { + "name": "column_config", + "type_name": "dict or None", + "is_optional": false, + "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", + "default": null + }, + { + "name": "num_rows", + "type_name": "\"fixed\" or \"dynamic\"", + "is_optional": false, + "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool or iterable of str", + "is_optional": false, + "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this data_editor's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", + "is_generator": false, + "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/data_editor.py#L529" + }, + "StatusContainer.file_uploader": { + "name": "file_uploader", + "signature": "StatusContainer.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", + "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "type", + "type_name": "str or list of str or None", + "is_optional": false, + "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", + "default": "None" + }, + { + "name": "accept_multiple_files", + "type_name": "bool", + "is_optional": false, + "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", + "default": "False" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

A tooltip that gets displayed next to the file uploader.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "None or UploadedFile or list of UploadedFile", + "is_generator": false, + "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/file_uploader.py#L222" + }, + "StatusContainer.form": { + "name": "form", + "signature": "StatusContainer.form(key, clear_on_submit=False)", + "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n\n \n
\n", + "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
  • Within a form, the only widget that can have a callback function is\nst.form_submit_button.
  • \n
\n", + "args": [ + { + "name": "key", + "type_name": "str", + "is_optional": false, + "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", + "default": null + }, + { + "name": "clear_on_submit", + "type_name": "bool", + "is_optional": false, + "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", + "default": "values" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/form.py#L118" + }, + "StatusContainer.form_submit_button": { + "name": "form_submit_button", + "signature": "StatusContainer.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", + "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", + "default": "s" + }, + { + "name": "help", + "type_name": "str or None", + "is_optional": false, + "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", + "default": "None" + }, + { + "name": "on_click", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this button is clicked.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"secondary\" or \"primary\"", + "is_optional": false, + "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

True if the button was clicked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/form.py#L218" + }, + "StatusContainer.graphviz_chart": { + "name": "graphviz_chart", + "signature": "StatusContainer.graphviz_chart(figure_or_dot, use_container_width=False)", + "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", + "description": "

Display a graph using the dagre-d3 library.

\n", + "args": [ + { + "name": "figure_or_dot", + "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", + "is_optional": false, + "description": "

The Graphlib graph object or dot string to display

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/graphviz_chart.py#L39" + }, + "StatusContainer.header": { + "name": "header", + "signature": "StatusContainer.header(body, anchor=None, *, help=None, divider=False)", + "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header with a divider', divider='rainbow')\nst.header('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in header formatting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the header.

\n", + "default": null + }, + { + "name": "divider", + "type_name": "bool or \u201cblue\u201d, \u201cgreen\u201d, \u201corange\u201d, \u201cred\u201d, \u201cviolet\u201d, \u201cgray\u201d/\"grey\", or \u201crainbow\u201d", + "is_optional": false, + "description": "

Shows a colored divider below the header. If True, successive\nheaders will cycle through divider colors. That is, the first\nheader will have a blue line, the second header will have a\ngreen line, and so on. If a string, the color can be set to one of\nthe following: blue, green, orange, red, violet, gray/grey, or\nrainbow.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L41" + }, + "StatusContainer.help": { + "name": "help", + "signature": "StatusContainer.help(obj=)", + "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", + "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", + "args": [ + { + "name": "obj", + "type_name": "any", + "is_optional": false, + "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/doc_string.py#L48" + }, + "StatusContainer.id": { + "name": "id", + "signature": "StatusContainer.id" + }, + "StatusContainer.image": { + "name": "image", + "signature": "StatusContainer.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", + "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", + "description": "

Display an image or list of images.

\n", + "args": [ + { + "name": "image", + "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", + "is_optional": false, + "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", + "default": null + }, + { + "name": "caption", + "type_name": "str or list of str", + "is_optional": false, + "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", + "default": null + }, + { + "name": "width", + "type_name": "int or None", + "is_optional": false, + "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", + "default": "image" + }, + { + "name": "use_column_width", + "type_name": "\"auto\", \"always\", \"never\", or bool", + "is_optional": false, + "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", + "default": null + }, + { + "name": "clamp", + "type_name": "bool", + "is_optional": false, + "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", + "default": null + }, + { + "name": "channels", + "type_name": "\"RGB\" or \"BGR\"", + "is_optional": false, + "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", + "default": "s" + }, + { + "name": "output_format", + "type_name": "\"JPEG\", \"PNG\", or \"auto\"", + "is_optional": false, + "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", + "default": "s" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/image.py#L87" + }, + "StatusContainer.info": { + "name": "info", + "signature": "StatusContainer.info(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", + "description": "

Display an informational message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The info text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L91" + }, + "StatusContainer.json": { + "name": "json", + "signature": "StatusContainer.json(body, *, expanded=True)", + "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", + "description": "

Display object or string as a pretty-printed JSON string.

\n", + "args": [ + { + "name": "body", + "type_name": "object or str", + "is_optional": false, + "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", + "default": "True" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/json.py#L35" + }, + "StatusContainer.latex": { + "name": "latex", + "signature": "StatusContainer.latex(body, *, help=None)", + "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", + "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", + "args": [ + { + "name": "body", + "type_name": "str or SymPy expression", + "is_optional": false, + "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L210" + }, + "StatusContainer.line_chart": { + "name": "line_chart", + "signature": "StatusContainer.line_chart(data=None, *, x=None, y=None, color=None, width=0, height=0, use_container_width=True)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n

You can also choose different columns to use for x and y, as well as set\nthe color dynamically based on a 3rd column (assuming your dataframe is in\nlong format):

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame({\n    'col1' : np.random.randn(20),\n    'col2' : np.random.randn(20),\n    'col3' : np.random.choice(['A','B','C'], 20)\n})\n\nst.line_chart(\n    chart_data,\n    x = 'col1',\n    y = 'col2',\n    color = 'col3'\n)\n
\n\n \n

Finally, if your dataframe is in wide format, you can group multiple\ncolumns under the y argument to show multiple lines with different\ncolors:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns = ['col1', 'col2', 'col3'])\n\nst.line_chart(\n    chart_data,\n    x = 'col1',\n    y = ['col2', 'col3'],\n    color = ['#FF0000', '#0000FF']  # Optional\n)\n
\n\n \n
\n", + "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", + "is_optional": false, + "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "x", + "type_name": "str or None", + "is_optional": false, + "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "y", + "type_name": "str, sequence of str, or None", + "is_optional": false, + "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str, tuple, sequence of str, sequence of tuple, or None", + "is_optional": false, + "description": "

The color to use for different lines in this chart. This argument\ncan only be supplied by keyword.

\n

For a line chart with just one line, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto lines of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby", then\nthose 1000 datapoints will be grouped into three lines, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into three lines, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe lines in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", + "default": "color" + }, + { + "name": "width", + "type_name": "int", + "is_optional": false, + "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int", + "is_optional": false, + "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L231" + }, + "StatusContainer.map": { + "name": "map", + "signature": "StatusContainer.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True)", + "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n

You can also customize the size and color of the datapoints:

\n
\nst.map(df, size=20, color='#0044ff')\n
\n

And finally, you can choose different columns to use for the latitude\nand longitude components, as well as set size and color of each\ndatapoint dynamically based on other columns:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame({\n    "col1": np.random.randn(1000) / 50 + 37.76,\n    "col2": np.random.randn(1000) / 50 + -122.4,\n    "col3": np.random.randn(1000) * 100,\n    "col4": np.random.rand(1000, 4).tolist(),\n})\n\nst.map(df,\n    latitude='col1',\n    longitude='col2',\n    size='col3',\n    color='col4')\n
\n\n \n
\n", + "description": "

Display a map with a scatterplot overlaid onto it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The data to be plotted.

\n", + "default": null + }, + { + "name": "latitude", + "type_name": "str or None", + "is_optional": false, + "description": "

The name of the column containing the latitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the latitude data will come from any column named 'lat',\n'latitude', 'LAT', or 'LATITUDE'.

\n", + "default": null + }, + { + "name": "longitude", + "type_name": "str or None", + "is_optional": false, + "description": "

The name of the column containing the longitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the longitude data will come from any column named 'lon',\n'longitude', 'LON', or 'LONGITUDE'.

\n", + "default": null + }, + { + "name": "color", + "type_name": "str or tuple or None", + "is_optional": false, + "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", + "default": "color" + }, + { + "name": "size", + "type_name": "str or float or None", + "is_optional": false, + "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", + "default": "size" + }, + { + "name": "zoom", + "type_name": "int", + "is_optional": false, + "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/map.py#L91" + }, + "StatusContainer.markdown": { + "name": "markdown", + "signature": "StatusContainer.markdown(body, unsafe_allow_html=False, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.markdown("*Streamlit* is **really** ***cool***.")\nst.markdown('''\n    :red[Streamlit] :orange[can] :green[write] :blue[text] :violet[in]\n    :gray[pretty] :rainbow[colors].''')\nst.markdown("Here's a bouquet &mdash;\\\n            :tulip::cherry_blossom::rose::hibiscus::sunflower::blossom:")\n\nmulti = '''If you end a line with two spaces,\na soft return is used for the next line.\n\nTwo (or more) newline characters in a row will result in a hard return.\n'''\nst.markdown(multi)\n
\n\n \n
\n", + "description": "

Display string formatted as Markdown.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/markdown.py#L31" + }, + "StatusContainer.metric": { + "name": "metric", + "signature": "StatusContainer.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", + "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "value", + "type_name": "int, float, str, or None", + "is_optional": false, + "description": "

Value of the metric. None is rendered as a long dash.

\n", + "default": null + }, + { + "name": "delta", + "type_name": "int, float, str, or None", + "is_optional": false, + "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", + "default": null + }, + { + "name": "delta_color", + "type_name": "\"normal\", \"inverse\", or \"off\"", + "is_optional": false, + "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the metric label.

\n", + "default": null + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/metric.py#L46" + }, + "StatusContainer.multiselect": { + "name": "multiselect", + "signature": "StatusContainer.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder=\"Choose an option\", disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", + "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", + "default": null + }, + { + "name": "default", + "type_name": "[V], V, or None", + "is_optional": false, + "description": "

List of default values. Can also be a single value.

\n", + "default": "values" + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this multiselect's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "max_selections", + "type_name": "int", + "is_optional": false, + "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A string to display when no options are selected. Defaults to 'Choose an option'.

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "list", + "is_generator": false, + "description": "

A list with the selected options

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/multiselect.py#L146" + }, + "StatusContainer.number_input": { + "name": "number_input", + "signature": "StatusContainer.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", + "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", + "default": null + }, + { + "name": "max_value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", + "default": null + }, + { + "name": "value", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", + "default": "min_value" + }, + { + "name": "step", + "type_name": "int, float, or None", + "is_optional": false, + "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", + "default": "1" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this number_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "int or float", + "is_generator": false, + "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/number_input.py#L67" + }, + "StatusContainer.plotly_chart": { + "name": "plotly_chart", + "signature": "StatusContainer.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", + "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", + "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", + "args": [ + { + "name": "figure_or_data", + "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", + "is_optional": false, + "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", + "default": null + }, + { + "name": "sharing", + "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", + "is_optional": false, + "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + }, + { + "name": "**kwargs", + "type_name": null, + "is_optional": null, + "description": "

Any argument accepted by Plotly's plot() function.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/plotly_chart.py#L81" + }, + "StatusContainer.progress": { + "name": "progress", + "signature": "StatusContainer.progress(value, text=None)", + "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", + "description": "

Display a progress bar.

\n", + "args": [ + { + "name": "value", + "type_name": "int or float", + "is_optional": false, + "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", + "default": null + }, + { + "name": "text", + "type_name": "str or None", + "is_optional": false, + "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/progress.py#L66" + }, + "StatusContainer.pydeck_chart": { + "name": "pydeck_chart", + "signature": "StatusContainer.pydeck_chart(pydeck_obj=None, use_container_width=False)", + "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", + "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", + "args": [ + { + "name": "pydeck_obj", + "type_name": "pydeck.Deck or None", + "is_optional": false, + "description": "

Object specifying the PyDeck chart to draw.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/deck_gl_json_chart.py#L37" + }, + "StatusContainer.pyplot": { + "name": "pyplot", + "signature": "StatusContainer.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", + "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", + "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", + "description": "

Display a matplotlib.pyplot figure.

\n", + "args": [ + { + "name": "fig", + "type_name": "Matplotlib Figure", + "is_optional": false, + "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", + "default": null + }, + { + "name": "clear_figure", + "type_name": "bool", + "is_optional": false, + "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", + "default": "based" + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. Defaults to True.

\n", + "default": "s" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Arguments to pass to Matplotlib's savefig function.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/pyplot.py#L38" + }, + "StatusContainer.radio": { + "name": "radio", + "signature": "StatusContainer.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, captions=None, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What's your favorite movie genre",\n    [":rainbow[Comedy]", "***Drama***", "Documentary :movie_camera:"],\n    captions = ["Laugh out loud.", "Get the popcorn.", "Never stop learning."])\n\nif genre == ':rainbow[Comedy]':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", + "description": "

Display a radio button widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the radio options. Labels can include markdown as\ndescribed in the label parameter and will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", + "default": null + }, + { + "name": "index", + "type_name": "int", + "is_optional": false, + "description": "

The index of the preselected option on first render.

\n", + "default": null + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the radio.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this radio's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", + "default": "False" + }, + { + "name": "horizontal", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", + "default": "false" + }, + { + "name": "captions", + "type_name": "iterable of str or None", + "is_optional": false, + "description": "

A list of captions to show below each radio button. If None (default),\nno captions are shown.

\n", + "default": null + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any", + "is_generator": false, + "description": "

The selected option.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/radio.py#L76" + }, + "StatusContainer.select_slider": { + "name": "select_slider", + "signature": "StatusContainer.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", + "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", + "default": null + }, + { + "name": "value", + "type_name": "a supported type or a tuple/list of supported types or None", + "is_optional": false, + "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", + "default": "first" + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the select slider.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this select_slider's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any value or tuple of any value", + "is_generator": false, + "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/select_slider.py#L107" + }, + "StatusContainer.selectbox": { + "name": "selectbox", + "signature": "StatusContainer.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=\"Select...\", disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", + "description": "

Display a select widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "options", + "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", + "is_optional": false, + "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", + "default": null + }, + { + "name": "index", + "type_name": "int", + "is_optional": false, + "description": "

The index of the preselected option on first render.

\n", + "default": null + }, + { + "name": "format_func", + "type_name": "function", + "is_optional": false, + "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this selectbox's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str", + "is_optional": false, + "description": "

A string to display when no options are selected. Defaults to 'Select...'.

\n

A selectbox can't be empty, so a placeholder only displays while a\nuser's cursor is in a selectbox after manually deleting the current\nselection. A future update will allow selectboxes to be empty.

\n", + "default": "s" + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "any", + "is_generator": false, + "description": "

The selected option

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/selectbox.py#L72" + }, + "StatusContainer.slider": { + "name": "slider", + "signature": "StatusContainer.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", + "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "min_value", + "type_name": "a supported type or None", + "is_optional": false, + "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", + "default": "0" + }, + { + "name": "max_value", + "type_name": "a supported type or None", + "is_optional": false, + "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", + "default": "100" + }, + { + "name": "value", + "type_name": "a supported type or a tuple/list of supported types or None", + "is_optional": false, + "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", + "default": "min_value" + }, + { + "name": "step", + "type_name": "int, float, timedelta, or None", + "is_optional": false, + "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", + "default": "1" + }, + { + "name": "format", + "type_name": "str or None", + "is_optional": false, + "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the slider.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this slider's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", + "is_generator": false, + "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/slider.py#L173" + }, + "StatusContainer.snow": { + "name": "snow", + "signature": "StatusContainer.snow()", + "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", + "description": "

Draw celebratory snowfall.

\n", + "args": [], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/snow.py#L25" + }, + "StatusContainer.status": { + "name": "status", + "signature": "StatusContainer.status(label, *, expanded=False, state=\"running\")", + "examples": "
\n

You can use with notation to insert any element into an status container:

\n
\nimport time\nimport streamlit as st\n\nwith st.status("Downloading data..."):\n    st.write("Searching for data...")\n    time.sleep(2)\n    st.write("Found URL.")\n    time.sleep(1)\n    st.write("Downloading data...")\n    time.sleep(1)\n\nst.button('Rerun')\n
\n\n \n

You can also use .update() on the container to change the label, state,\nor expanded state:

\n
\nimport time\nimport streamlit as st\n\nwith st.status("Downloading data...", expanded=True) as status:\n    st.write("Searching for data...")\n    time.sleep(2)\n    st.write("Found URL.")\n    time.sleep(1)\n    st.write("Downloading data...")\n    time.sleep(1)\n    status.update(label="Download complete!", state="complete", expanded=False)\n\nst.button('Rerun')\n
\n\n \n
\n", + "description": "

Insert a status container to display output from long-running tasks.

\n

Inserts a container into your app that is typically used to show the status and\ndetails of a process or task. The container can hold multiple elements and can\nbe expanded or collapsed by the user similar to st.expander.\nWhen collapsed, all that is visible is the status icon and label.

\n

The label, state, and expanded state can all be updated by calling .update()\non the returned object. To add elements to the returned container, you can\nuse "with" notation (preferred) or just call methods directly on the returned\nobject.

\n

By default, st.status() initializes in the "running" state. When called using\n"with" notation, it automatically updates to the "complete" state at the end\nof the "with" block. See examples below for more details.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

The initial label of the status container. The label can optionally\ncontain Markdown and supports the following elements: Bold,\nItalics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents)\nrender. Display unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool", + "is_optional": false, + "description": "

If True, initializes the status container in "expanded" state. Defaults to\nFalse (collapsed).

\n", + "default": "s" + }, + { + "name": "state", + "type_name": "\"running\", \"complete\", or \"error\"", + "is_optional": false, + "description": "

The initial state of the status container which determines which icon is\nshown:

\n
    \n
  • running (default): A spinner icon is shown.
  • \n
  • complete: A checkmark icon is shown.
  • \n
  • error: An error icon is shown.
  • \n
\n", + "default": null + } + ], + "returns": [ + { + "type_name": "StatusContainer", + "is_generator": false, + "description": "

A mutable status container that can hold multiple elements. The label, state,\nand expanded state can be updated after creation via .update().

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L414" + }, + "StatusContainer.subheader": { + "name": "subheader", + "signature": "StatusContainer.subheader(body, anchor=None, *, help=None, divider=False)", + "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader with a divider', divider='rainbow')\nst.subheader('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in subheader formatting.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the subheader.

\n", + "default": null + }, + { + "name": "divider", + "type_name": "bool or \u201cblue\u201d, \u201cgreen\u201d, \u201corange\u201d, \u201cred\u201d, \u201cviolet\u201d, \u201cgray\u201d/\"grey\", or \u201crainbow\u201d", + "is_optional": false, + "description": "

Shows a colored divider below the header. If True, successive\nheaders will cycle through divider colors. That is, the first\nheader will have a blue line, the second header will have a\ngreen line, and so on. If a string, the color can be set to one of\nthe following: blue, green, orange, red, violet, gray/grey, or\nrainbow.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L111" + }, + "StatusContainer.success": { + "name": "success", + "signature": "StatusContainer.success(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", + "description": "

Display a success message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The success text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L124" + }, + "StatusContainer.table": { + "name": "table", + "signature": "StatusContainer.table(data=None)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", + "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", + "is_optional": false, + "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L193" + }, + "StatusContainer.tabs": { + "name": "tabs", + "signature": "StatusContainer.tabs(tabs)", + "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", + "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", + "args": [ + { + "name": "tabs", + "type_name": "list of strings", + "is_optional": false, + "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", + "default": null + } + ], + "returns": [ + { + "type_name": "list of containers", + "is_generator": false, + "description": "

A list of container objects.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/layouts.py#L207" + }, + "StatusContainer.text": { + "name": "text", + "signature": "StatusContainer.text(body, *, help=None)", + "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", + "description": "

Write fixed-width and preformatted text.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the text.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/text.py#L27" + }, + "StatusContainer.text_area": { + "name": "text_area", + "signature": "StatusContainer.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", + "description": "

Display a multi-line text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "object", + "is_optional": false, + "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", + "default": null + }, + { + "name": "height", + "type_name": "int or None", + "is_optional": false, + "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", + "default": "height" + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

Maximum number of characters allowed in text area.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the textarea.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this text_area's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The current value of the text input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/text_widgets.py#L288" + }, + "StatusContainer.text_input": { + "name": "text_input", + "signature": "StatusContainer.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", + "description": "

Display a single-line text input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "object", + "is_optional": false, + "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", + "default": null + }, + { + "name": "max_chars", + "type_name": "int or None", + "is_optional": false, + "description": "

Max number of characters allowed in text input.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "type", + "type_name": "\"default\" or \"password\"", + "is_optional": false, + "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", + "default": "s" + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "autocomplete", + "type_name": "str", + "is_optional": false, + "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this text input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "placeholder", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "str", + "is_generator": false, + "description": "

The current value of the text input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/text_widgets.py#L72" + }, + "StatusContainer.time_input": { + "name": "time_input", + "signature": "StatusContainer.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", + "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", + "description": "

Display a time input widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "datetime.time/datetime.datetime", + "is_optional": false, + "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", + "default": "the" + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the input.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this time_input's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + }, + { + "name": "step", + "type_name": "int or timedelta", + "is_optional": false, + "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", + "default": "900" + } + ], + "returns": [ + { + "type_name": "datetime.time", + "is_generator": false, + "description": "

The current value of the time input widget.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/time_widgets.py#L219" + }, + "StatusContainer.title": { + "name": "title", + "signature": "StatusContainer.title(body, anchor=None, *, help=None)", + "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('_Streamlit_ is :blue[cool] :sunglasses:')\n
\n\n \n
\n", + "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "anchor", + "type_name": "str or False", + "is_optional": false, + "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the title.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/heading.py#L181" + }, + "StatusContainer.toast": { + "name": "toast", + "signature": "StatusContainer.toast(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.toast('Your edited image was saved!', icon='\ud83d\ude0d')\n
\n
\n", + "description": "

Display a short message, known as a notification "toast".

\n

The toast appears in the app's bottom-right corner and disappears after four seconds.

\n
\n

Warning

\n

st.toast is not compatible with Streamlit's caching and\ncannot be called within a cached function.

\n
\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the toast. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/toast.py#L37" + }, + "StatusContainer.toggle": { + "name": "toggle", + "signature": "StatusContainer.toggle(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "example": "
\n
\nimport streamlit as st\n\non = st.toggle('Activate feature')\n\nif on:\n    st.write('Feature activated!')\n
\n\n \n
\n", + "description": "

Display a toggle widget.

\n", + "args": [ + { + "name": "label", + "type_name": "str", + "is_optional": false, + "description": "

A short label explaining to the user what this toggle is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", + "default": null + }, + { + "name": "value", + "type_name": "bool", + "is_optional": false, + "description": "

Preselect the toggle when it first renders. This will be\ncast to bool internally.

\n", + "default": null + }, + { + "name": "key", + "type_name": "str or int", + "is_optional": false, + "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", + "default": null + }, + { + "name": "help", + "type_name": "str", + "is_optional": false, + "description": "

An optional tooltip that gets displayed next to the toggle.

\n", + "default": null + }, + { + "name": "on_change", + "type_name": "callable", + "is_optional": false, + "description": "

An optional callback invoked when this toggle's value changes.

\n", + "default": null + }, + { + "name": "args", + "type_name": "tuple", + "is_optional": false, + "description": "

An optional tuple of args to pass to the callback.

\n", + "default": null + }, + { + "name": "kwargs", + "type_name": "dict", + "is_optional": false, + "description": "

An optional dict of kwargs to pass to the callback.

\n", + "default": null + }, + { + "name": "disabled", + "type_name": "bool", + "is_optional": false, + "description": "

An optional boolean, which disables the toggle if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", + "default": "False" + }, + { + "name": "label_visibility", + "type_name": "\"visible\", \"hidden\", or \"collapsed\"", + "is_optional": false, + "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", + "default": "is" + } + ], + "returns": [ + { + "type_name": "bool", + "is_generator": false, + "description": "

Whether or not the toggle is checked.

\n", + "return_name": null + } + ], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/widgets/checkbox.py#L156" + }, + "StatusContainer.update": { + "name": "update", + "signature": "StatusContainer.update(*, label=None, expanded=None, state=None)", + "description": "

Update the status container.

\n

Only specified arguments are updated. Container contents and unspecified\narguments remain unchanged.

\n", + "args": [ + { + "name": "label", + "type_name": "str or None", + "is_optional": false, + "description": "

A new label of the status container. If None, the label is not\nchanged.

\n", + "default": null + }, + { + "name": "expanded", + "type_name": "bool or None", + "is_optional": false, + "description": "

The new expanded state of the status container. If None,\nthe expanded state is not changed.

\n", + "default": null + }, + { + "name": "state", + "type_name": "\"running\", \"complete\", \"error\", or None", + "is_optional": false, + "description": "

The new state of the status container. This mainly changes the\nicon. If None, the state is not changed.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/lib/mutable_status_container.py#L95" + }, + "StatusContainer.vega_lite_chart": { + "name": "vega_lite_chart", + "signature": "StatusContainer.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", + "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", + "description": "

Display a chart using the Vega-Lite library.

\n", + "args": [ + { + "name": "data", + "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", + "is_optional": false, + "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", + "default": null + }, + { + "name": "spec", + "type_name": "dict or None", + "is_optional": false, + "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", + "default": null + }, + { + "name": "use_container_width", + "type_name": "bool", + "is_optional": false, + "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", + "default": null + }, + { + "name": "theme", + "type_name": "\"streamlit\" or None", + "is_optional": false, + "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", + "default": "behavior" + }, + { + "name": "**kwargs", + "type_name": "any", + "is_optional": false, + "description": "

Same as spec, but as keywords.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/dataframe_selector.py#L819" + }, + "StatusContainer.video": { + "name": "video", + "signature": "StatusContainer.video(data, format=\"video/mp4\", start_time=0)", + "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", + "description": "

Display a video player.

\n", + "args": [ + { + "name": "data", + "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", + "is_optional": false, + "description": "

Raw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", + "default": null + }, + { + "name": "format", + "type_name": "str", + "is_optional": false, + "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", + "default": "s" + }, + { + "name": "start_time", + "type_name": "int", + "is_optional": false, + "description": "

The time from which this element should start playing.

\n", + "default": null + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/media.py#L115" + }, + "StatusContainer.warning": { + "name": "warning", + "signature": "StatusContainer.warning(body, *, icon=None)", + "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", + "description": "

Display warning message.

\n", + "args": [ + { + "name": "body", + "type_name": "str", + "is_optional": false, + "description": "

The warning text to display.

\n", + "default": null + }, + { + "name": "icon", + "type_name": "str or None", + "is_optional": false, + "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", + "default": "None" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/alert.py#L59" + }, + "StatusContainer.write": { + "name": "write", + "signature": "StatusContainer.write(*args, unsafe_allow_html=False, **kwargs)", + "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", + "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", + "args": [ + { + "name": "*args", + "type_name": "any", + "is_optional": false, + "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", + "default": null + }, + { + "name": "unsafe_allow_html", + "type_name": "bool", + "is_optional": false, + "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", + "default": "False" + } + ], + "returns": [], + "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/write.py#L49" + } } } From 98a919d12411de9d47f29c9b81ff61778beed10f Mon Sep 17 00:00:00 2001 From: Debbie Matthews Date: Wed, 23 Aug 2023 03:30:10 -0700 Subject: [PATCH 2/5] Add st.toggle documentation (#784) * Add st.toggle documentation Add page, API card, and navigation for st.toggle * Update streamlit.json --------- Co-authored-by: snehankekre --- content/library/api/api-reference.md | 13 + content/library/api/widgets/toggle.md | 7 + content/library/api/widgets/widgets.md | 13 + content/menu.md | 3 + public/images/api/toggle.jpg | Bin 0 -> 49094 bytes python/streamlit.json | 98284 +---------------------- 6 files changed, 201 insertions(+), 98119 deletions(-) create mode 100644 content/library/api/widgets/toggle.md create mode 100644 public/images/api/toggle.jpg diff --git a/content/library/api/api-reference.md b/content/library/api/api-reference.md index 53a0621b4..099bbfefd 100644 --- a/content/library/api/api-reference.md +++ b/content/library/api/api-reference.md @@ -755,6 +755,19 @@ Display a checkbox widget. selected = st.checkbox("I agree") ``` + + + +screenshot + +#### Toggle + +Display a toggle widget. + +```python +activated = st.toggle("Activate") +``` + diff --git a/content/library/api/widgets/toggle.md b/content/library/api/widgets/toggle.md new file mode 100644 index 000000000..34ba849e4 --- /dev/null +++ b/content/library/api/widgets/toggle.md @@ -0,0 +1,7 @@ +--- +title: st.toggle +slug: /library/api-reference/widgets/st.toggle +description: st.toggle displays a toggle widget. +--- + + diff --git a/content/library/api/widgets/widgets.md b/content/library/api/widgets/widgets.md index a56e22577..4d6ba6cbc 100644 --- a/content/library/api/widgets/widgets.md +++ b/content/library/api/widgets/widgets.md @@ -47,6 +47,19 @@ Display a checkbox widget. selected = st.checkbox("I agree") ``` + + + +screenshot + +#### Toggle + +Display a toggle widget. + +```python +activated = st.toggle("Activate") +``` + diff --git a/content/menu.md b/content/menu.md index 4e13273ed..5d0477644 100644 --- a/content/menu.md +++ b/content/menu.md @@ -166,6 +166,9 @@ site_menu: - category: Streamlit library / API reference / Input widgets / st.checkbox url: /library/api-reference/widgets/st.checkbox isVersioned: true + - category: Streamlit library / API reference / Input widgets / st.toggle + url: /library/api-reference/widgets/st.toggle + isVersioned: true - category: Streamlit library / API reference / Input widgets / st.radio url: /library/api-reference/widgets/st.radio isVersioned: true diff --git a/public/images/api/toggle.jpg b/public/images/api/toggle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa18a43b302289cd181e7bfb270e2a727c634c9b GIT binary patch literal 49094 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 WfAw*{vf;06_$wR!|B?-Vj{Yyb!^GqO literal 0 HcmV?d00001 diff --git a/python/streamlit.json b/python/streamlit.json index 6538bbf1d..b09bdf30e 100644 --- a/python/streamlit.json +++ b/python/streamlit.json @@ -1,97952 +1,4 @@ { - "1.11.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False)", - "example": "

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n     np.random.randn(200, 3),\n     columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n     x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L295" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n     np.random.randn(20, 3),\n     columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L186" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/media.py#L41" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/balloons.py#L24" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n     np.random.randn(50, 3),\n     columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L240" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n    st.header("A cat")\n    st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n    st.header("A dog")\n    st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n    st.header("An owl")\n    st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n    st.write("This is inside the container")\n\n    # You can call any Streamlit command, including custom components:\n    st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n     st.write("""\n         The chart above shows some numbers I picked for you.\n         I rolled actual dice for these, so they're *guaranteed* to\n         be random.\n     """)\n     st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n     The chart above shows some numbers I picked for you.\n     I rolled actual dice for these, so they're *guaranteed* to\n     be random.\n """)\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n     title='simple line example',\n     x_axis_label='x',\n     y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/bokeh_chart.py#L33" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n     st.write('Why hello there')\n else:\n     st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/button.py#L51" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\n@st.cache\n def fetch_and_clean_data(url):\n     # Fetch data from URL here, and then clean it up.\n     return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\n def fetch_and_clean_data(url):\n     # Fetch data from URL here, and then clean it up.\n     return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\n def fetch_and_clean_data(url):\n     # Fetch data from URL here, and then clean it up.\n     return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\n def connect_to_database(url):\n     return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\n def connect_to_database(url):\n     return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/legacy_caching/caching.py#L357" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n     st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/camera_input.py#L47" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L189" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n     st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/checkbox.py#L36" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n     print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf omitted, the code will be unstyled.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/color_picker.py#L35" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n    st.header("A cat")\n    st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n    st.header("A dog")\n    st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n    st.header("An owl")\n    st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L72" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n    st.write("This is inside the container")\n\n    # You can call any Streamlit command, including custom components:\n    st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L28" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None)", - "examples": "
\n
\ndf = pd.DataFrame(\n    np.random.randn(50, 20),\n    columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n    np.random.randn(10, 20),\n    columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderyling DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the UI element expressed in pixels. If None, a\ndefault width based on the page width is used.

\n", - "default": "width" - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L37" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nd = st.date_input(\n     "When's your birthday",\n     datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/time_widgets.py#L305" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\n def convert_df(df):\n     # IMPORTANT: Cache the conversion to prevent computation on every rerun\n     return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n     label="Download data as CSV",\n     data=csv,\n     file_name='large_df.csv',\n     mime='text/csv',\n )\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n     btn = st.download_button(\n             label="Download image",\n             data=file,\n             file_name="flower.png",\n             mime="image/png"\n           )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/button.py#L118" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/echo.py#L25" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n     for seconds in range(60):\n         st.write(f"\u23f3 {seconds} seconds have passed")\n         time.sleep(1)\n     st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n     st.write("This is one element")\n     st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body)", - "example": "
\n
\nst.error('This is an error')\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L26" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/exception.py#L46" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n     st.write("""\n         The chart above shows some numbers I picked for you.\n         I rolled actual dice for these, so they're *guaranteed* to\n         be random.\n     """)\n     st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n     The chart above shows some numbers I picked for you.\n     I rolled actual dice for these, so they're *guaranteed* to\n     be random.\n """)\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L283" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L331" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None)", - "example": "
\n
\n@st.experimental_memo\n def fetch_and_clean_data(url):\n     # Fetch data from URL here, and then clean it up.\n     return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.experimental_memo(persist="disk")\n def fetch_and_clean_data(url):\n     # Fetch data from URL here, and then clean it up.\n     return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_memo\n def fetch_and_clean_data(_db_connection, num_rows):\n     # Fetch data from _db_connection here, and then clean it up.\n     return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\n@st.experimental_memo\n def fetch_and_clean_data(_db_connection, num_rows):\n     # Fetch data from _db_connection here, and then clean it up.\n     return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Currently, the only\nvalid value is "disk", which will persist to the local disk.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/caching/memo_decorator.py#L218" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L512" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nst.experimental_set_query_params(\n     show_map=True,\n     selected=["asia", "america"],\n )\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L361" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\ndataframe = pd.DataFrame({\n     'first column': [1, 2, 3, 4],\n     'second column': [10, 20, 30, 40],\n })\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L251" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False)", - "example": "
\n
\n@st.experimental_singleton\n def get_database_session(url):\n     # Create a database session object that points to the URL.\n     return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_singleton\n def get_database_session(_sessionmaker, url):\n     # Create a database connection object that points to the URL.\n     return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\n@st.experimental_singleton\n def get_database_session(_sessionmaker, url):\n     # Create a database connection object that points to the URL.\n     return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe singleton function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/caching/singleton_decorator.py#L139" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n     # To read file as bytes:\n     bytes_data = uploaded_file.getvalue()\n     st.write(bytes_data)\n\n     # To convert to a string based IO:\n     stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n     st.write(stringio)\n\n     # To read file as string:\n     string_data = stringio.read()\n     st.write(string_data)\n\n     # Can be used wherever a "file-like" object is accepted:\n     dataframe = pd.read_csv(uploaded_file)\n     st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n     bytes_data = uploaded_file.read()\n     st.write("filename:", uploaded_file.name)\n     st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/file_uploader.py#L132" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n    st.write("Inside the form")\n    slider_val = st.slider("Form slider")\n    checkbox_val = st.checkbox("Form checkbox")\n\n    # Every form must have a submit button.\n    submitted = st.form_submit_button("Submit")\n    if submitted:\n        st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/form.py#L112" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/form.py#L200" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/config.py#L90" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz as graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/graphviz_chart.py#L30" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L81" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/doc_string.py#L41" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/image.py#L60" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body)", - "example": "
\n
\nst.info('This is a purely informational message')\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L62" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nst.json({\n     'foo': 'bar',\n     'baz': 'boz',\n     'stuff': [\n         'stuff 1',\n         'stuff 2',\n         'stuff 3',\n         'stuff 5',\n     ],\n })\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "Object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/json.py#L28" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nst.latex(r'''\n     a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n     \\sum_{k=0}^{n-1} ar^k =\n     a \\left(\\frac{1-r^{n}}{1-r}\\right)\n     ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L232" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n     np.random.randn(20, 3),\n     columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L132" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n     np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n     columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/map.py#L31" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may\nbe removed from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us\nyour exact use case here:

\n

https://discuss.streamlit.io/t/96

\n

This will help us come up with safe APIs that allow you to do what\nyou want.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L28" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n     delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n     delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/metric.py#L43" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noptions = st.multiselect(\n     'What are your favorite colors',\n     ['Green', 'Yellow', 'Red', 'Blue'],\n     ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/multiselect.py#L45" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/number_input.py#L39" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n         hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plotly.com/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/plotly_chart.py#L67" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n     time.sleep(0.1)\n     my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/progress.py#L31" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer on top of\nthe light map style:

\n
\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n     map_style='mapbox://styles/mapbox/light-v9',\n     initial_view_state=pdk.ViewState(\n         latitude=37.76,\n         longitude=-122.4,\n         zoom=11,\n         pitch=50,\n     ),\n     layers=[\n         pdk.Layer(\n            'HexagonLayer',\n            data=df,\n            get_position='[lon, lat]',\n            radius=200,\n            elevation_scale=4,\n            elevation_range=[0, 1000],\n            pickable=True,\n            extruded=True,\n         ),\n         pdk.Layer(\n             'ScatterplotLayer',\n             data=df,\n             get_position='[lon, lat]',\n             get_color='[200, 30, 0, 160]',\n             get_radius=200,\n         ),\n     ],\n ))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "spec", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/deck_gl_json_chart.py#L23" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib support several different types of "backends". If you're\ngetting an error using Matplotlib with Streamlit, try setting your\nbackend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/pyplot.py#L31" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False)", - "example": "
\n
\ngenre = st.radio(\n     "What's your favorite movie genre",\n     ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n     st.write('You selected comedy.')\n else:\n     st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/radio.py#L35" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\ncolor = st.select_slider(\n     'Select a color of the rainbow',\n     options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n     'Select a range of color wavelength',\n     options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n     value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/select_slider.py#L35" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noption = st.selectbox(\n     'How would you like to be contacted?',\n     ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/selectbox.py#L35" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L212" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nst.set_page_config(\n     page_title="Ex-stream-ly Cool App",\n     page_icon="\ud83e\uddca",\n     layout="wide",\n     initial_sidebar_state="expanded",\n     menu_items={\n         'Get Help': 'https://www.extremelycoolapp.com/help',\n         'Report a bug': "https://www.extremelycoolapp.com/bug",\n         'About': "# This is a header. This is an *extremely* cool app!"\n     }\n )\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/commands/page_config.py#L44" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n     'Select a range of values',\n     0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n     "Schedule your appointment:",\n     value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n     "When do you start?",\n     value=datetime(2020, 1, 1, 9, 30),\n     format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/slider.py#L37" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/snow.py#L24" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L391" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/__init__.py#L492" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L106" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body)", - "example": "
\n
\nst.success('This is a success message!')\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L80" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n    np.random.randn(10, 5),\n    columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L99" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n    st.header("A cat")\n    st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n    st.header("A dog")\n    st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n    st.header("An owl")\n    st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L196" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/text.py#L26" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n     It was the best of times, it was the worst of times, it was\n     the age of wisdom, it was the age of foolishness, it was\n     the epoch of belief, it was the epoch of incredulity, it\n     was the season of Light, it was the season of Darkness, it\n     was the spring of hope, it was the winter of despair, (...)\n     ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "any", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/text_widgets.py#L200" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "any", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/text_widgets.py#L36" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/time_widgets.py#L165" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L161" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n     np.random.randn(200, 3),\n     columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n     'mark': {'type': 'circle', 'tooltip': True},\n     'encoding': {\n         'x': {'field': 'a', 'type': 'quantitative'},\n         'y': {'field': 'b', 'type': 'quantitative'},\n         'size': {'field': 'c', 'type': 'quantitative'},\n         'color': {'field': 'c', 'type': 'quantitative'},\n     },\n })\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L341" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/media.py#L79" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body)", - "example": "
\n
\nst.warning('This is a warning')\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L44" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n     'first column': [1, 2, 3, 4],\n     'second column': [10, 20, 30, 40],\n }))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n     np.random.randn(200, 3),\n     columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n     x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/write.py#L43" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/caching/memo_decorator.py#L351" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/caching/singleton_decorator.py#L237" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/iframe.py#L57" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/iframe.py#L24" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\ndf1 = pd.DataFrame(\n    np.random.randn(50, 20),\n    columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n    np.random.randn(50, 20),\n    columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n     'mark': 'line',\n     'encoding': {'x': 'a', 'y': 'b'},\n     'datasets': {\n       'some_fancy_name': df1,  # <-- named dataset\n      },\n     'data': {'name': 'some_fancy_name'},\n }),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L410" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n     np.random.randn(200, 3),\n     columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n     x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L295" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n     np.random.randn(20, 3),\n     columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L186" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/media.py#L41" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/balloons.py#L24" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n     np.random.randn(50, 3),\n     columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L240" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n    st.header("A cat")\n    st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n    st.header("A dog")\n    st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n    st.header("An owl")\n    st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n    st.write("This is inside the container")\n\n    # You can call any Streamlit command, including custom components:\n    st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n     st.write("""\n         The chart above shows some numbers I picked for you.\n         I rolled actual dice for these, so they're *guaranteed* to\n         be random.\n     """)\n     st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n     The chart above shows some numbers I picked for you.\n     I rolled actual dice for these, so they're *guaranteed* to\n     be random.\n """)\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n     title='simple line example',\n     x_axis_label='x',\n     y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/bokeh_chart.py#L33" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n     st.write('Why hello there')\n else:\n     st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/button.py#L51" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n     st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/camera_input.py#L47" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L189" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n     st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/checkbox.py#L36" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n     print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf omitted, the code will be unstyled.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/color_picker.py#L35" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n    st.header("A cat")\n    st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n    st.header("A dog")\n    st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n    st.header("An owl")\n    st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L72" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n    st.write("This is inside the container")\n\n    # You can call any Streamlit command, including custom components:\n    st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L28" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None)", - "examples": "
\n
\ndf = pd.DataFrame(\n    np.random.randn(50, 20),\n    columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n    np.random.randn(10, 20),\n    columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderyling DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the UI element expressed in pixels. If None, a\ndefault width based on the page width is used.

\n", - "default": "width" - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L37" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nd = st.date_input(\n     "When's your birthday",\n     datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/time_widgets.py#L305" - }, - "DeltaGenerator.determine_delta_color_and_direction": { - "name": "determine_delta_color_and_direction", - "signature": "element.determine_delta_color_and_direction(self, delta_color, delta)" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\n def convert_df(df):\n     # IMPORTANT: Cache the conversion to prevent computation on every rerun\n     return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n     label="Download data as CSV",\n     data=csv,\n     file_name='large_df.csv',\n     mime='text/csv',\n )\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n     btn = st.download_button(\n             label="Download image",\n             data=file,\n             file_name="flower.png",\n             mime="image/png"\n           )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/button.py#L118" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n     for seconds in range(60):\n         st.write(f"\u23f3 {seconds} seconds have passed")\n         time.sleep(1)\n     st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n     st.write("This is one element")\n     st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body)", - "example": "
\n
\nst.error('This is an error')\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L26" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/exception.py#L46" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n     st.write("""\n         The chart above shows some numbers I picked for you.\n         I rolled actual dice for these, so they're *guaranteed* to\n         be random.\n     """)\n     st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n     The chart above shows some numbers I picked for you.\n     I rolled actual dice for these, so they're *guaranteed* to\n     be random.\n """)\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L283" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n     # To read file as bytes:\n     bytes_data = uploaded_file.getvalue()\n     st.write(bytes_data)\n\n     # To convert to a string based IO:\n     stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n     st.write(stringio)\n\n     # To read file as string:\n     string_data = stringio.read()\n     st.write(string_data)\n\n     # Can be used wherever a "file-like" object is accepted:\n     dataframe = pd.read_csv(uploaded_file)\n     st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n     bytes_data = uploaded_file.read()\n     st.write("filename:", uploaded_file.name)\n     st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/file_uploader.py#L132" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n    st.write("Inside the form")\n    slider_val = st.slider("Form slider")\n    checkbox_val = st.checkbox("Form checkbox")\n\n    # Every form must have a submit button.\n    submitted = st.form_submit_button("Submit")\n    if submitted:\n        st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/form.py#L112" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/form.py#L200" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz as graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/graphviz_chart.py#L30" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L81" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/doc_string.py#L41" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/image.py#L60" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body)", - "example": "
\n
\nst.info('This is a purely informational message')\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L62" - }, - "DeltaGenerator.is_negative": { - "name": "is_negative", - "signature": "element.is_negative(delta)" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nst.json({\n     'foo': 'bar',\n     'baz': 'boz',\n     'stuff': [\n         'stuff 1',\n         'stuff 2',\n         'stuff 3',\n         'stuff 5',\n     ],\n })\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "Object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/json.py#L28" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nst.latex(r'''\n     a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n     \\sum_{k=0}^{n-1} ar^k =\n     a \\left(\\frac{1-r^{n}}{1-r}\\right)\n     ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L232" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n     np.random.randn(20, 3),\n     columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L132" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n     np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n     columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/map.py#L31" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may\nbe removed from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us\nyour exact use case here:

\n

https://discuss.streamlit.io/t/96

\n

This will help us come up with safe APIs that allow you to do what\nyou want.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L28" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n     delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n     delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/metric.py#L43" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noptions = st.multiselect(\n     'What are your favorite colors',\n     ['Green', 'Yellow', 'Red', 'Blue'],\n     ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/multiselect.py#L45" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/number_input.py#L39" - }, - "DeltaGenerator.parse_delta": { - "name": "parse_delta", - "signature": "element.parse_delta(delta)" - }, - "DeltaGenerator.parse_label": { - "name": "parse_label", - "signature": "element.parse_label(label)" - }, - "DeltaGenerator.parse_value": { - "name": "parse_value", - "signature": "element.parse_value(value)" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n         hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plotly.com/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/plotly_chart.py#L67" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n     time.sleep(0.1)\n     my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/progress.py#L31" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer on top of\nthe light map style:

\n
\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n     map_style='mapbox://styles/mapbox/light-v9',\n     initial_view_state=pdk.ViewState(\n         latitude=37.76,\n         longitude=-122.4,\n         zoom=11,\n         pitch=50,\n     ),\n     layers=[\n         pdk.Layer(\n            'HexagonLayer',\n            data=df,\n            get_position='[lon, lat]',\n            radius=200,\n            elevation_scale=4,\n            elevation_range=[0, 1000],\n            pickable=True,\n            extruded=True,\n         ),\n         pdk.Layer(\n             'ScatterplotLayer',\n             data=df,\n             get_position='[lon, lat]',\n             get_color='[200, 30, 0, 160]',\n             get_radius=200,\n         ),\n     ],\n ))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "spec", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/deck_gl_json_chart.py#L23" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib support several different types of "backends". If you're\ngetting an error using Matplotlib with Streamlit, try setting your\nbackend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/pyplot.py#L31" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False)", - "example": "
\n
\ngenre = st.radio(\n     "What's your favorite movie genre",\n     ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n     st.write('You selected comedy.')\n else:\n     st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/radio.py#L35" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\ncolor = st.select_slider(\n     'Select a color of the rainbow',\n     options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n     'Select a range of color wavelength',\n     options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n     value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/select_slider.py#L35" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noption = st.selectbox(\n     'How would you like to be contacted?',\n     ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/selectbox.py#L35" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n     'Select a range of values',\n     0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n     "Schedule your appointment:",\n     value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n     "When do you start?",\n     value=datetime(2020, 1, 1, 9, 30),\n     format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/slider.py#L37" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/snow.py#L24" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L106" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body)", - "example": "
\n
\nst.success('This is a success message!')\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L80" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n    np.random.randn(10, 5),\n    columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L99" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n    st.header("A cat")\n    st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n    st.header("A dog")\n    st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n    st.header("An owl")\n    st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/layouts.py#L196" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/text.py#L26" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n     It was the best of times, it was the worst of times, it was\n     the age of wisdom, it was the age of foolishness, it was\n     the epoch of belief, it was the epoch of incredulity, it\n     was the season of Light, it was the season of Darkness, it\n     was the spring of hope, it was the winter of despair, (...)\n     ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "any", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/text_widgets.py#L200" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "any", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/text_widgets.py#L36" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/time_widgets.py#L165" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/markdown.py#L161" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n     np.random.randn(200, 3),\n     columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n     'mark': {'type': 'circle', 'tooltip': True},\n     'encoding': {\n         'x': {'field': 'a', 'type': 'quantitative'},\n         'y': {'field': 'b', 'type': 'quantitative'},\n         'size': {'field': 'c', 'type': 'quantitative'},\n         'color': {'field': 'c', 'type': 'quantitative'},\n     },\n })\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/dataframe_selector.py#L341" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/media.py#L79" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body)", - "example": "
\n
\nst.warning('This is a warning')\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/alert.py#L44" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n     'first column': [1, 2, 3, 4],\n     'second column': [10, 20, 30, 40],\n }))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n     np.random.randn(200, 3),\n     columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n     x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.11.0/lib/streamlit/elements/write.py#L43" - } - }, - "1.12.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L379" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L214" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/media.py#L41" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/balloons.py#L24" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(50, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L296" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/bokeh_chart.py#L33" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/button.py#L51" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/runtime/legacy_caching/caching.py#L395" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/camera_input.py#L47" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L193" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/checkbox.py#L36" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf omitted, the code will be unstyled.

\n

For a list of available language imports, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/color_picker.py#L35" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L72" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L28" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None)", - "examples": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the UI element expressed in pixels. If None, a\ndefault width based on the page width is used.

\n", - "default": "width" - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L37" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/time_widgets.py#L305" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/button.py#L118" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/echo.py#L25" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/exception.py#L46" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L283" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L333" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None)", - "example": "
\n
\n@st.experimental_memo\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.experimental_memo(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Currently, the only\nvalid value is "disk", which will persist to the local disk.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/runtime/caching/memo_decorator.py#L228" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L514" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L363" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L253" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False)", - "example": "
\n
\n@st.experimental_singleton\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe singleton function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/runtime/caching/singleton_decorator.py#L150" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/file_uploader.py#L132" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/form.py#L112" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/form.py#L200" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/config.py#L90" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz as graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/graphviz_chart.py#L30" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L81" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/doc_string.py#L41" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/image.py#L60" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L96" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "Object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/json.py#L28" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L236" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L132" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/map.py#L30" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that ``unsafe_allow_html`` is a temporary measure and may\nbe removed from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us\nyour exact use case here:

\n

https://discuss.streamlit.io/t/96

\n

This will help us come up with safe APIs that allow you to do what\nyou want.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L28" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/metric.py#L43" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/multiselect.py#L83" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/number_input.py#L39" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/plotly_chart.py#L67" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/progress.py#L31" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\ndf = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=df,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=df,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "spec", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/deck_gl_json_chart.py#L23" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/pyplot.py#L36" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False)", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/radio.py#L35" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/select_slider.py#L35" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/selectbox.py#L35" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L214" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/commands/page_config.py#L45" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/slider.py#L38" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/snow.py#L24" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L393" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/__init__.py#L494" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L106" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon:"\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L126" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L99" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L196" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/text.py#L26" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/text_widgets.py#L201" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/text_widgets.py#L37" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/time_widgets.py#L165" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L165" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L425" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/media.py#L79" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L67" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/write.py#L43" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/runtime/caching/memo_decorator.py#L361" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/runtime/caching/singleton_decorator.py#L248" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/components/v1/components.py#L243" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/iframe.py#L57" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/iframe.py#L24" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L494" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L379" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L214" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/media.py#L41" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/balloons.py#L24" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(50, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L296" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/bokeh_chart.py#L33" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/button.py#L51" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/camera_input.py#L47" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L193" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/checkbox.py#L36" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf omitted, the code will be unstyled.

\n

For a list of available language imports, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/color_picker.py#L35" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L72" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L28" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None)", - "examples": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the UI element expressed in pixels. If None, a\ndefault width based on the page width is used.

\n", - "default": "width" - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L37" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/time_widgets.py#L305" - }, - "DeltaGenerator.determine_delta_color_and_direction": { - "name": "determine_delta_color_and_direction", - "signature": "element.determine_delta_color_and_direction(self, delta_color, delta)" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/button.py#L118" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/exception.py#L46" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L283" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/file_uploader.py#L132" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/form.py#L112" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/form.py#L200" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz as graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/graphviz_chart.py#L30" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L81" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/doc_string.py#L41" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/image.py#L60" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L96" - }, - "DeltaGenerator.is_negative": { - "name": "is_negative", - "signature": "element.is_negative(delta)" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "Object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/json.py#L28" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L236" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L132" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/map.py#L30" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that ``unsafe_allow_html`` is a temporary measure and may\nbe removed from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us\nyour exact use case here:

\n

https://discuss.streamlit.io/t/96

\n

This will help us come up with safe APIs that allow you to do what\nyou want.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L28" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/metric.py#L43" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/multiselect.py#L83" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/number_input.py#L39" - }, - "DeltaGenerator.parse_delta": { - "name": "parse_delta", - "signature": "element.parse_delta(delta)" - }, - "DeltaGenerator.parse_label": { - "name": "parse_label", - "signature": "element.parse_label(label)" - }, - "DeltaGenerator.parse_value": { - "name": "parse_value", - "signature": "element.parse_value(value)" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/plotly_chart.py#L67" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/progress.py#L31" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\ndf = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=df,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=df,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "spec", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/deck_gl_json_chart.py#L23" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/pyplot.py#L36" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False)", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/radio.py#L35" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/select_slider.py#L35" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/selectbox.py#L35" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/slider.py#L38" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/snow.py#L24" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L106" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon:"\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L126" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L99" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/layouts.py#L196" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/text.py#L26" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/text_widgets.py#L201" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False)", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/text_widgets.py#L37" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/time_widgets.py#L165" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/markdown.py#L165" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/dataframe_selector.py#L425" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/media.py#L79" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/alert.py#L67" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.12.0/lib/streamlit/elements/write.py#L43" - } - }, - "1.13.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L396" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L229" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/media.py#L42" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(50, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L312" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/bokeh_chart.py#L34" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/button.py#L62" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/runtime/legacy_caching/caching.py#L398" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/camera_input.py#L122" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L118" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/checkbox.py#L50" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L85" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/color_picker.py#L58" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L74" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L38" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/time_widgets.py#L362" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/button.py#L130" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/exception.py#L47" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L287" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L339" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None)", - "example": "
\n
\n@st.experimental_memo\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.experimental_memo(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Currently, the only\nvalid value is "disk", which will persist to the local disk.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/runtime/caching/memo_decorator.py#L230" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L523" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L370" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L257" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False)", - "example": "
\n
\n@st.experimental_singleton\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe singleton function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/runtime/caching/singleton_decorator.py#L152" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/file_uploader.py#L212" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/form.py#L113" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/form.py#L202" - }, - "streamlit.gather_metrics": { - "name": "gather_metrics", - "signature": "st.gather_metrics(callable)" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/config.py#L90" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz as graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/heading.py#L26" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/doc_string.py#L43" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/image.py#L61" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L98" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/json.py#L41" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L164" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L146" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/map.py#L75" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that ``unsafe_allow_html`` is a temporary measure and may\nbe removed from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us\nyour exact use case here:

\n

https://discuss.streamlit.io/t/96

\n

This will help us come up with safe APIs that allow you to do what\nyou want.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/metric.py#L43" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/multiselect.py#L127" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/number_input.py#L72" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/plotly_chart.py#L68" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/progress.py#L31" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\ndf = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=df,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=df,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/pyplot.py#L37" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/radio.py#L77" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/select_slider.py#L107" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/selectbox.py#L80" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L217" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/commands/page_config.py#L115" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/slider.py#L178" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L401" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/__init__.py#L503" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/heading.py#L53" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L129" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L112" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L199" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/text_widgets.py#L250" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/text_widgets.py#L70" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/time_widgets.py#L218" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/heading.py#L81" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L443" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/media.py#L81" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L68" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/write.py#L44" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/runtime/caching/memo_decorator.py#L376" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/runtime/caching/singleton_decorator.py#L251" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/components/v1/components.py#L245" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L513" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L396" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L229" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/media.py#L42" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(50, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L312" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/bokeh_chart.py#L34" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/button.py#L62" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/camera_input.py#L122" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L118" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/checkbox.py#L50" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L85" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/color_picker.py#L58" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L74" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L38" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/time_widgets.py#L362" - }, - "DeltaGenerator.determine_delta_color_and_direction": { - "name": "determine_delta_color_and_direction", - "signature": "element.determine_delta_color_and_direction(self, delta_color, delta)" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/button.py#L130" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/exception.py#L47" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L287" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/file_uploader.py#L212" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/form.py#L113" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/form.py#L202" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz as graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/heading.py#L26" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/doc_string.py#L43" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/image.py#L61" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L98" - }, - "DeltaGenerator.is_negative": { - "name": "is_negative", - "signature": "element.is_negative(delta)" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/json.py#L41" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L164" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L146" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/map.py#L75" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that ``unsafe_allow_html`` is a temporary measure and may\nbe removed from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us\nyour exact use case here:

\n

https://discuss.streamlit.io/t/96

\n

This will help us come up with safe APIs that allow you to do what\nyou want.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/metric.py#L43" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/multiselect.py#L127" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/number_input.py#L72" - }, - "DeltaGenerator.parse_delta": { - "name": "parse_delta", - "signature": "element.parse_delta(delta)" - }, - "DeltaGenerator.parse_label": { - "name": "parse_label", - "signature": "element.parse_label(label)" - }, - "DeltaGenerator.parse_value": { - "name": "parse_value", - "signature": "element.parse_value(value)" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/plotly_chart.py#L68" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/progress.py#L31" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\ndf = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=df,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=df,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/pyplot.py#L37" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/radio.py#L77" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/select_slider.py#L107" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/selectbox.py#L80" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/slider.py#L178" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/heading.py#L53" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L129" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L112" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/layouts.py#L199" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/text_widgets.py#L250" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/text_widgets.py#L70" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/time_widgets.py#L218" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/heading.py#L81" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/dataframe_selector.py#L443" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/media.py#L81" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/alert.py#L68" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n

Also note that `unsafe_allow_html` is a temporary measure and may be\nremoved from Streamlit at any time.

\n

If you decide to turn on HTML anyway, we ask you to please tell us your\nexact use case here:\nhttps://discuss.streamlit.io/t/96 .

\n

This will help us come up with safe APIs that allow you to do what you\nwant.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.13.0/lib/streamlit/elements/write.py#L44" - } - }, - "1.14.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L395" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L228" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/media.py#L41" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(50, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L311" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/runtime/legacy_caching/caching.py#L400" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L107" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/checkbox.py#L48" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L74" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L74" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L37" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/time_widgets.py#L356" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/button.py#L143" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L287" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/commands/query_params.py#L23" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None)", - "example": "
\n
\n@st.experimental_memo\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.experimental_memo(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Currently, the only\nvalid value is "disk", which will persist to the local disk.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/runtime/caching/memo_decorator.py#L225" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/commands/execution_control.py#L45" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/commands/query_params.py#L54" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False)", - "example": "
\n
\n@st.experimental_singleton\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit functions from within\nthe singleton function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/runtime/caching/singleton_decorator.py#L151" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/form.py#L116" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/form.py#L205" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/config.py#L129" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/heading.py#L27" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/image.py#L66" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L97" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L143" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L145" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/map.py#L75" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/metric.py#L44" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/plotly_chart.py#L69" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/progress.py#L32" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\ndf = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=df,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=df,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/config.py#L90" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/heading.py#L54" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L127" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L111" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L199" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/text_widgets.py#L249" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/heading.py#L82" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L442" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/media.py#L80" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L68" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/runtime/caching/memo_decorator.py#L378" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/runtime/caching/singleton_decorator.py#L251" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L512" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L395" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L228" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0)", - "example": "
\n
\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/media.py#L41" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(50, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L311" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L107" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/checkbox.py#L48" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L74" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L74" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L37" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/time_widgets.py#L356" - }, - "DeltaGenerator.determine_delta_color_and_direction": { - "name": "determine_delta_color_and_direction", - "signature": "element.determine_delta_color_and_direction(self, delta_color, delta)" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/button.py#L143" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L287" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/form.py#L116" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/form.py#L205" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/heading.py#L27" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/image.py#L66" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L97" - }, - "DeltaGenerator.is_negative": { - "name": "is_negative", - "signature": "element.is_negative(delta)" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L143" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L145" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/map.py#L75" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or Title for the metric

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/metric.py#L44" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.parse_delta": { - "name": "parse_delta", - "signature": "element.parse_delta(delta)" - }, - "DeltaGenerator.parse_label": { - "name": "parse_label", - "signature": "element.parse_label(label)" - }, - "DeltaGenerator.parse_value": { - "name": "parse_value", - "signature": "element.parse_value(value)" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport plotly.figure_factory as ff\nimport numpy as np\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/plotly_chart.py#L69" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/progress.py#L32" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\ndf = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=df,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=df,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/heading.py#L54" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L127" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L111" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The string is used as the name of the tab.\nThe first tab is selected by default.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/layouts.py#L199" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/text_widgets.py#L249" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nFor accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/heading.py#L82" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(df, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/dataframe_selector.py#L442" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/media.py#L80" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/alert.py#L68" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.14.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.15.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=None)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L412" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L239" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/media.py#L42" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L325" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/beta_util.py#L43" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/runtime/legacy_caching/caching.py#L401" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L107" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nimport streamlit as st\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/checkbox.py#L48" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L74" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L74" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L39" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/time_widgets.py#L359" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/button.py#L145" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L290" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/commands/query_params.py#L23" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None, experimental_allow_widgets=False)", - "example": "
\n
\n@st.experimental_memo\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.experimental_memo(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Currently, the only\nvalid value is "disk", which will persist to the local disk.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None" - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the memoized function. Defaults to False.

\n", - "default": "False" - }, - { - "name": ".. note", - "type_name": ":", - "is_optional": false, - "description": "

Support for widgets in cached functions is currently experimental.\nTo enable it, set the parameter experimental_allow_widgets=True\nin @st.experimental_memo. Note that this may lead to excessive memory\nuse since the widget value is treated as an additional input parameter\nto the cache. We may remove support for this option at any time without notice.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/runtime/caching/memo_decorator.py#L233" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/commands/execution_control.py#L45" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/commands/query_params.py#L54" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False, experimental_allow_widgets=False)", - "example": "
\n
\n@st.experimental_singleton\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe singleton function.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the singleton function. Defaults to False.

\n", - "default": "False" - }, - { - "name": ".. note", - "type_name": ":", - "is_optional": false, - "description": "

Support for widgets in cached functions is currently experimental.\nTo enable it, set the parameter experimental_allow_widgets=True\nin @st.experimental_singleton. Note that this may lead to excessive\nmemory use since the widget value is treated as an additional input\nparameter to the cache. We may remove support for this option at any\ntime without notice.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/runtime/caching/singleton_decorator.py#L162" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/form.py#L116" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/form.py#L206" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/config.py#L129" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/heading.py#L27" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/image.py#L67" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L97" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L143" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L153" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/metric.py#L44" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=None, **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python::

\n
import numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/plotly_chart.py#L70" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/progress.py#L32" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/config.py#L90" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/heading.py#L54" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L127" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L116" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L199" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/text_widgets.py#L252" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/heading.py#L82" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=None, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L464" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/media.py#L115" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L68" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/runtime/caching/memo_decorator.py#L399" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/runtime/caching/singleton_decorator.py#L276" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L538" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False, theme=None)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L412" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L239" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/media.py#L42" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L325" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(*args, **kwargs)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(*args, **kwargs)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/beta_util.py#L43" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.caption('This is a string that explains something above.')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L107" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False)", - "example": "
\n
\nimport streamlit as st\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/checkbox.py#L48" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L74" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L74" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L39" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When's your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/time_widgets.py#L359" - }, - "DeltaGenerator.determine_delta_color_and_direction": { - "name": "determine_delta_color_and_direction", - "signature": "element.determine_delta_color_and_direction(self, delta_color, delta)" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/button.py#L145" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - }, - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write("""\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    """)\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write("""\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n""")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L290" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/form.py#L116" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/form.py#L206" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "example": "
\n
\nst.header('This is a header')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/heading.py#L27" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/image.py#L67" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L97" - }, - "DeltaGenerator.is_negative": { - "name": "is_negative", - "signature": "element.is_negative(delta)" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L143" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L153" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict,", - "is_optional": false, - "description": "

or None\nThe data to be plotted. Must have columns called 'lat', 'lon',\n'latitude', or 'longitude'.

\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "example": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None)", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/metric.py#L44" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.parse_delta": { - "name": "parse_delta", - "signature": "element.parse_delta(delta)" - }, - "DeltaGenerator.parse_label": { - "name": "parse_label", - "signature": "element.parse_label(label)" - }, - "DeltaGenerator.parse_value": { - "name": "parse_value", - "signature": "element.parse_value(value)" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=None, **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/plotly_chart.py#L70" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/progress.py#L32" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What's your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn't select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "example": "
\n
\nst.subheader('This is a subheader')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/heading.py#L54" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L127" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L116" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/layouts.py#L199" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/text_widgets.py#L252" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "example": "
\n
\nst.title('This is a title')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display.

\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/heading.py#L82" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, theme=None, **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/dataframe_selector.py#L464" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/media.py#L115" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "None", - "is_optional": false, - "description": "

An optional parameter, that adds an emoji to the alert.\nThe default is None.\nThis argument can only be supplied by keyword.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/alert.py#L68" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression and emoji shortcodes.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.15.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.16.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L413" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L240" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L326" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L73" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L287" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/runtime/legacy_caching/caching.py#L401" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "examples": "
\n
\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L113" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L80" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L73" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/time_widgets.py#L373" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/button.py#L145" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L287" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/commands/query_params.py#L23" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None, experimental_allow_widgets=False)", - "example": "
\n
\n@st.experimental_memo\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.experimental_memo(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Currently, the only\nvalid value is "disk", which will persist to the local disk.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None" - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the memoized function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/runtime/caching/memo_decorator.py#L232" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/commands/execution_control.py#L44" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/commands/query_params.py#L54" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None, experimental_allow_widgets=False)", - "example": "
\n
\n@st.experimental_singleton\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe singleton function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the singleton function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/runtime/caching/singleton_decorator.py#L201" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/form.py#L116" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/form.py#L205" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/config.py#L128" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "examples": "
\n
\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/heading.py#L27" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/image.py#L67" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L99" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L165" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L154" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "examples": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/progress.py#L32" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/config.py#L89" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "examples": "
\n
\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/heading.py#L70" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L130" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L117" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L197" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/text_widgets.py#L266" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "examples": "
\n
\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/heading.py#L114" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L465" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/media.py#L116" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L69" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/runtime/caching/memo_decorator.py#L388" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/runtime/caching/singleton_decorator.py#L326" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L539" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L413" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L240" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L326" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L73" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L287" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L113" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L80" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L73" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/time_widgets.py#L373" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/button.py#L145" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L287" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/form.py#L116" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/form.py#L205" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "examples": "
\n
\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/heading.py#L27" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nfrom PIL import Image\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/image.py#L67" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L99" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L165" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L154" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/progress.py#L32" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nfrom datetime import time\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nfrom datetime import datetime\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "examples": "
\n
\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/heading.py#L70" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L130" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L117" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/layouts.py#L197" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/text_widgets.py#L266" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "examples": "
\n
\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/heading.py#L114" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/dataframe_selector.py#L465" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/media.py#L116" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/alert.py#L69" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nwrite('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.16.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.17.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L301" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/runtime/legacy_caching/caching.py#L401" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L117" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L82" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/time_widgets.py#L376" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/button.py#L147" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L301" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/commands/query_params.py#L23" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, persist=None, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None, experimental_allow_widgets=False)", - "example": "
\n
\nimport streamlit as st\n\n@st.experimental_memo\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.experimental_memo(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a memoized function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A memoized function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.experimental_memo\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n

Memoized data is stored in "pickled" form, which means that the return\nvalue of a memoized function must be pickleable.

\n

Each caller of a memoized function gets its own copy of the cached data.

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to memoize. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None" - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None" - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the memoized function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/runtime/caching/memo_decorator.py#L236" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/commands/query_params.py#L56" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func=None, *, show_spinner=True, suppress_st_warning=False, max_entries=None, ttl=None, validate=None, experimental_allow_widgets=False)", - "example": "
\n
\nimport streamlit as st\n\n@st.experimental_singleton\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a singleton function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A singleton function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.experimental_singleton\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Function decorator to store singleton objects.

\n

Each singleton object is shared across all users connected to the app.\nSingleton objects must be thread-safe, because they can be accessed from\nmultiple threads concurrently.

\n

(If thread-safety is an issue, consider using st.session_state to\nstore per-session singleton objects instead.)

\n

You can clear a memoized function's cache with f.clear().

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the singleton. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the singleton is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe singleton function.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is\ncalled each time the cached value is accessed. It receives\nthe cached value as its only param; and it returns a bool result.\nIf validate returns False, the current cached value is discarded,\nand the decorated function is called to compute a new value.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the singleton function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/runtime/caching/singleton_decorator.py#L220" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/form.py#L116" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/form.py#L209" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/config.py#L128" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/heading.py#L27" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/image.py#L67" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L171" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/progress.py#L32" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/config.py#L89" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/heading.py#L72" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L206" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/text_widgets.py#L268" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/heading.py#L118" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/media.py#L117" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk memo caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/runtime/caching/memo_decorator.py#L410" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all singleton caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/runtime/caching/singleton_decorator.py#L361" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L550" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L301" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L117" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L82" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put columns inside another column.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/time_widgets.py#L376" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/button.py#L147" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L301" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/form.py#L116" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/form.py#L209" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/heading.py#L27" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/image.py#L67" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L171" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nmy_bar = st.progress(0)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/progress.py#L32" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/heading.py#L72" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/layouts.py#L206" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/text_widgets.py#L268" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/heading.py#L118" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/media.py#L117" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.17.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.18.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L306" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_data_api.py#L274" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L119" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L83" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/time_widgets.py#L380" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/button.py#L155" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L306" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width\nwill be automatically calculated based on the container width.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/data_editor.py#L448" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/commands/query_params.py#L23" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_data_api.py#L274" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/commands/query_params.py#L56" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/config.py#L128" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/heading.py#L31" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/image.py#L67" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L174" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/config.py#L89" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/heading.py#L76" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L208" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/text_widgets.py#L272" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/heading.py#L122" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/media.py#L117" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk data caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_data_api.py#L445" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear(self)", - "description": "Clear all in-memory and on-disk data caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_data_api.py#L445" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all cache_resource caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear(self)", - "description": "Clear all cache_resource caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L550" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L306" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L119" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L83" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/time_widgets.py#L380" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/button.py#L155" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L306" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(self, data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width\nwill be automatically calculated based on the container width.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/data_editor.py#L448" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/heading.py#L31" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/image.py#L67" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L174" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/heading.py#L76" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/layouts.py#L208" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/text_widgets.py#L272" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/heading.py#L122" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/media.py#L117" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.18.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.19.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L306" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_data_api.py#L274" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L119" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L83" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/time_widgets.py#L380" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/button.py#L155" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L306" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/data_editor.py#L448" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/commands/query_params.py#L23" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_data_api.py#L274" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "Set the query parameters that are shown in the browser's URL bar.", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/commands/query_params.py#L56" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/config.py#L128" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/heading.py#L31" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/image.py#L67" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L174" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/config.py#L89" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/heading.py#L76" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L208" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/text_widgets.py#L272" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/heading.py#L122" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/media.py#L117" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk data caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_data_api.py#L445" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear(self)", - "description": "Clear all in-memory and on-disk data caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_data_api.py#L445" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all cache_resource caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear(self)", - "description": "Clear all cache_resource caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L550" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L306" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L119" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L83" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/time_widgets.py#L380" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/button.py#L155" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L306" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(self, data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/data_editor.py#L448" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/heading.py#L31" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/image.py#L67" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L174" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create scatterplot\ncharts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more\ninfo on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, we advise all users to use a personal Mapbox\ntoken. This ensures the map tiles used in this chart are more\nrobust. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at\nhttps://mapbox.com. It's free! (for moderate usage levels). For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/heading.py#L76" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/layouts.py#L208" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/text_widgets.py#L272" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/heading.py#L122" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/media.py#L117" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.19.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.20.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L306" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "Function decorator to memoize function executions.", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L119" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L83" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/time_widgets.py#L380" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/button.py#L155" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "Use in a `with` block to draw some code on the app, then execute it.", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L306" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/data_editor.py#L448" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "Return the query parameters that is currently showing in the browser's URL bar.", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/commands/query_params.py#L29" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/commands/query_params.py#L65" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/config.py#L128" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/heading.py#L31" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/doc_string.py#L44" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/image.py#L67" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L174" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L29" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/config.py#L89" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "Temporarily displays a message while executing a block of code.", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/heading.py#L76" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L208" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/text_widgets.py#L272" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/heading.py#L122" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/media.py#L117" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/write.py#L47" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "Clear all in-memory and on-disk data caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_data_api.py#L541" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear(self)", - "description": "Clear all in-memory and on-disk data caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_data_api.py#L541" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "Clear all cache_resource caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear(self)", - "description": "Clear all cache_resource caches.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "Create and register a custom component.", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "Display an HTML string in an iframe.", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "Load a remote URL in an iframe.", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(self, data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "Concatenate a dataframe to the bottom of the current one.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L550" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(self, altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a chart using the Altair library.", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(self, data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an audio player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons(self)", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "Draw celebratory balloons.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L306" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(self, figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(self, label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(self, label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "Display a widget that returns pictures from the user's webcam.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L119" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(self, label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a checkbox widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(self, body, language=\"python\")", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n

(This is a convenience wrapper around st.markdown())

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L83" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a color picker widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(self, spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container(self)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(self, data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a dataframe as an interactive table.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(self, label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a date input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/time_widgets.py#L380" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(self, label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, and Emojis.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/button.py#L155" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty(self)", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "Display error message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(self, exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "Display an exception.", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(self, label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L306" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(self, data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/data_editor.py#L448" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(self, label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(self, key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(self, label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(self, figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a graph using the dagre-d3 library.", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in header formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/heading.py#L31" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(self, obj)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n

Want to quickly check what datatype is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n
\n", - "description": "

Display object's doc string, nicely formatted.

\n

Displays the doc string for this object.

\n", - "args": [ - { - "name": "obj", - "type_name": "Object", - "is_optional": false, - "description": "

The object whose docstring should be displayed.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/doc_string.py#L44" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(self, image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display an image or list of images.", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/image.py#L67" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "Display an informational message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(self, body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display object or string as a pretty-printed JSON string.", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L174" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(self, data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(self, data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(self, body, unsafe_allow_html=False)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "Display string formatted as Markdown.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/markdown.py#L29" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(self, label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n \n (view standalone Streamlit app)\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n \n (view standalone Streamlit app)\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(self, label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(self, label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a numeric input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(self, figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(self, value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "Display a progress bar.", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(self, pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(self, fig=None, clear_figure=None, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a matplotlib.pyplot figure.", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a radio button widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(self, label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n \n (view standalone Streamlit app)\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(self, label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a select widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(self, label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow(self)", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "Draw celebratory snowfall.", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "Display text in subheader formatting.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/heading.py#L76" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "Display a success message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(self, data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(self, tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n \n (view standalone Streamlit app)\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/layouts.py#L208" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(self, body)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "Write fixed-width and preformatted text.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(self, label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "Display a multi-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/text_widgets.py#L272" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(self, label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a single-line text input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/text_widgets.py#L69" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(self, label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "Display a time input widget.", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are not displayed. Display unsupported elements\nas literal characters by backslash-escaping them. E.g.\n1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/time_widgets.py#L212" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(self, body, anchor=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/heading.py#L122" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(self, data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n \n (view standalone Streamlit app)\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "Display a chart using the Vega-Lite library.", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(self, data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "Display a video player.", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_opctional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/media.py#L117" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(self, body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "Display warning message.", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(self, *args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n \n (view standalone Streamlit app)\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n \n (view standalone Streamlit app)\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n \n (view standalone Streamlit app)\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n \n (view standalone Streamlit app)\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.20.0/lib/streamlit/elements/write.py#L47" - } - }, - "1.21.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L320" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/code.py#L27" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/time_widgets.py#L399" - }, - "streamlit.divider": { - "name": "divider", - "signature": "st.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L244" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/button.py#L169" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "

Use in a with block to draw some code on the app, then execute it.

\n", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L320" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/data_editor.py#L448" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "

Return the query parameters that is currently showing in the browser's URL bar.

\n", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/commands/query_params.py#L29" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/commands/query_params.py#L65" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/config.py#L128" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/heading.py#L40" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/doc_string.py#L49" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/image.py#L88" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L196" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L31" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/config.py#L89" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "

Temporarily displays a message while executing a block of code.

\n", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/heading.py#L93" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L208" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/time_widgets.py#L214" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/heading.py#L146" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/media.py#L117" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/write.py#L48" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_data_api.py#L541" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_data_api.py#L541" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "

Create and register a custom component.

\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "

Display an HTML string in an iframe.

\n", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "

Load a remote URL in an iframe.

\n", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "

Concatenate a dataframe to the bottom of the current one.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L550" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L320" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/code.py#L27" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/time_widgets.py#L399" - }, - "DeltaGenerator.dg": { - "name": "dg", - "signature": "element.dg", - "description": "

Get our DeltaGenerator.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L168" - }, - "DeltaGenerator.divider": { - "name": "divider", - "signature": "element.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L244" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/button.py#L169" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L320" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/data_editor.py#L448" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/heading.py#L40" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/doc_string.py#L49" - }, - "DeltaGenerator.id": { - "name": "id", - "signature": "element.id" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/image.py#L88" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L196" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/markdown.py#L31" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/heading.py#L93" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/layouts.py#L208" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/time_widgets.py#L214" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/heading.py#L146" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/media.py#L117" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.21.0/lib/streamlit/elements/write.py#L48" - } - }, - "1.22.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/media.py#L43" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "streamlit.beta_columns": { - "name": "beta_columns", - "signature": "st.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.beta_container": { - "name": "beta_container", - "signature": "st.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.beta_expander": { - "name": "beta_expander", - "signature": "st.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L320" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/code.py#L27" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/time_widgets.py#L399" - }, - "streamlit.divider": { - "name": "divider", - "signature": "st.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L244" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/button.py#L169" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "

Use in a with block to draw some code on the app, then execute it.

\n", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L320" - }, - "streamlit.experimental_connection": { - "name": "experimental_connection", - "signature": "st.experimental_connection(name, type=None, max_entries=None, ttl=None, **kwargs)", - "examples": "
\n

The easiest way to create a first-party (SQL or Snowpark) connection is to use their\ndefault names and define corresponding sections in your secrets.toml file.

\n
\nimport streamlit as st\nconn = st.experimental_connection("sql") # Config section defined in [connections.sql] in secrets.toml.\n
\n

Creating a SQLConnection with a custom name requires you to explicitly specify the\ntype. If type is not passed as a kwarg, it must be set in the appropriate section of\nsecrets.toml.

\n
\nimport streamlit as st\nconn1 = st.experimental_connection("my_sql_connection", type="sql") # Config section defined in [connections.my_sql_connection].\nconn2 = st.experimental_connection("my_other_sql_connection") # type must be set in [connections.my_other_sql_connection].\n
\n

Passing the full module path to the connection class that you want to use can be\nuseful, especially when working with a custom connection:

\n
\nimport streamlit as st\nconn = st.experimental_connection("my_sql_connection", type="streamlit.connections.SQLConnection")\n
\n

Finally, you can pass the connection class to use directly to this function. Doing\nso allows static type checking tools such as mypy to infer the exact return\ntype of st.experimental_connection.

\n
\nimport streamlit as st\nfrom streamlit.connections import SQLConnection\nconn = st.experimental_connection("my_sql_connection", type=SQLConnection)\n
\n
\n", - "description": "

Create a new connection to a data store or API, or return an existing one.

\n

Config options, credentials, secrets, etc. for connections are taken from various\nsources:

\n
    \n
  • Any connection-specific configuration files.
  • \n
  • An app's secrets.toml files.
  • \n
  • The kwargs passed to this function.
  • \n
\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

The connection name used for secrets lookup in [connections.<name>].\nType will be inferred from passing "sql" or "snowpark".

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or connection class or None", - "is_optional": false, - "description": "

The type of connection to create. It can be a keyword ("sql" or "snowpark"),\na path to an importable class, or an imported class reference. All classes\nmust extend st.connections.ExperimentalBaseConnection and implement the\n_connect() method. If the type kwarg is None, a type field must be set\nin the connection's section in secrets.toml.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of connections to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Additional connection specific kwargs that are passed to the Connection's\n_connect() method. Learn more from the specific Connection's documentation.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "Connection object", - "is_generator": false, - "description": "

An initialized Connection object of the specified type.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/connection_factory.py#L170" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/data_editor.py#L448" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "

Return the query parameters that is currently showing in the browser's URL bar.

\n", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/commands/query_params.py#L29" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.\nNote that ttl is incompatible with persist="disk" - ttl will be\nignored if persist is specified.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "str or boolean or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/commands/query_params.py#L65" - }, - "streamlit.experimental_show": { - "name": "experimental_show", - "signature": "st.experimental_show(*args)", - "notes": "
\n

This is an experimental feature with usage limitations:

\n
    \n
  • The method must be called with the name show.
  • \n
  • Must be called in one line of code, and only once per line.
  • \n
  • \n
    When passing multiple arguments the inclusion of , or ) in a string
    \n
    argument may cause an error.
    \n
    \n
  • \n
\n
\n", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndataframe = pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n})\nst.experimental_show(dataframe)\n
\n
\n", - "description": "

Write arguments and argument names to your app for debugging purposes.

\n

Show() has similar properties to write():

\n
\n
    \n
  1. You can pass in multiple arguments, all of which will be debugged.
  2. \n
  3. It returns None, so it's "slot" in the app cannot be reused.
  4. \n
\n
\n

Note: This is an experimental feature. See\nhttps://docs.streamlit.io/library/advanced-features/prerelease#experimental for more information.

\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to debug in the App.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/show.py#L23" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float or timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/config.py#L131" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/heading.py#L40" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/doc_string.py#L49" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/image.py#L88" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L196" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L31" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/config.py#L92" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used in your app, and must only\nbe set once.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\" or \"expanded\" or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "

Temporarily displays a message while executing a block of code.

\n", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/heading.py#L93" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L208" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/time_widgets.py#L214" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/heading.py#L146" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/media.py#L117" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/write.py#L48" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_data_api.py#L541" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_data_api.py#L541" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/runtime/caching/cache_resource_api.py#L396" - }, - "streamlit.connections.ExperimentalBaseConnection": { - "name": "ExperimentalBaseConnection", - "signature": "st.connections.ExperimentalBaseConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L25", - "description": "

The abstract base class that all Streamlit Connections must inherit from.

\n

This base class provides connection authors with a standardized way to hook into the\nst.experimental_connection() factory function: connection authors are required to\nprovide an implementation for the abstract method _connect in their subclasses.

\n

Additionally, it also provides a few methods/properties designed to make\nimplementation of connections more convenient. See the docstrings for each of the\nmethods of this class for more information

\n
\n

Note

\n

While providing an implementation of _connect is technically all that's\nrequired to define a valid connection, connections should also provide the user\nwith context-specific ways of interacting with the underlying connection object.\nFor example, the first-party SQLConnection provides a query() method for\nreads and a session property for more complex operations.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection": { - "name": "SQLConnection", - "signature": "st.connections.SQLConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None." - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None." - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/sql_connection.py#L121" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/sql_connection.py#L226" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/sql_connection.py#L45", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

A connection to a SQL database using a SQLAlchemy Engine. Initialize using st.experimental_connection("<name>", type="sql").

\n

SQLConnection provides the query() convenience method, which can be used to\nrun simple read-only queries with both caching and simple error handling/retries.\nMore complex DB interactions can be performed by using the .session property\nto receive a regular SQLAlchemy Session.

\n

SQLConnections should always be created using st.experimental_connection(),\nnot initialized directly. Connection parameters for a SQLConnection can be\nspecified using either st.secrets or **kwargs. Some frequently used\nparameters include:

\n
    \n
  • url or arguments for sqlalchemy.engine.URL.create().\nMost commonly it includes a dialect, host, database, username and password.
  • \n
  • create_engine_kwargs can be passed via st.secrets, such as for\nsnowflake-sqlalchemy\nor Google BigQuery.\nThese can also be passed directly as **kwargs to experimental_connection().
  • \n
  • autocommit=True to run with isolation level AUTOCOMMIT. Default is False.
  • \n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SnowparkConnection": { - "name": "SnowparkConnection", - "signature": "st.connections.SnowparkConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L137" - }, - { - "name": "safe_session", - "signature": "st.connections.safe_session.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L207" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L184" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L70", - "description": "

A connection to Snowpark using snowflake.snowpark.session.Session. Initialize using

\n

st.experimental_connection("<name>", type="snowpark").

\n

In addition to accessing the Snowpark Session, SnowparkConnection supports direct SQL querying using\nquery("...") and thread safe access using with conn.safe_session():. See methods\nbelow for more information. SnowparkConnections should always be created using\nst.experimental_connection(), not initialized directly.

\n
\n

Note

\n

We don't expect this iteration of SnowparkConnection to be able to scale\nwell in apps with many concurrent users due to the lock contention that will occur\nover the single underlying Session object under high load.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection.query": { - "name": "query", - "signature": "SQLConnection.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n

Aside from the ttl kwarg, all kwargs passed to this function are passed down\nto pd.read_sql\nand have the behavior described in the pandas documentation.

\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None." - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None." - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/sql_connection.py#L121" - }, - "streamlit.connections.SQLConnection.reset": { - "name": "reset", - "signature": "SQLConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SQLConnection.session": { - "name": "session", - "signature": "SQLConnection.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

\n

Users of this connection should use the contextmanager pattern for writes,\ntransactions, and anything more complex than simple read queries.

\n

See the usage example below, which assumes we have a table numbers with a\nsingle integer column val. The SQLAlchemy docs also contain\nmuch more information on the usage of sessions.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/sql_connection.py#L226" - }, - "streamlit.connections.SnowparkConnection.query": { - "name": "query", - "signature": "SnowparkConnection.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - "streamlit.connections.SnowparkConnection.reset": { - "name": "reset", - "signature": "SnowparkConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SnowparkConnection.safe_session": { - "name": "safe_session", - "signature": "SnowparkConnection.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

\n

As operations on a Snowpark session are not thread safe, we need to take care\nwhen using a session in the context of a Streamlit app where each script run\noccurs in its own thread. Using the contextmanager pattern to do this ensures\nthat access on this connection's underlying Session is done in a thread-safe\nmanner.

\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L207" - }, - "streamlit.connections.SnowparkConnection.session": { - "name": "session", - "signature": "SnowparkConnection.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

\n
\n

Note

\n

Snowpark sessions are not thread safe. Users of this method are\nresponsible for ensuring that access to the session returned by this method is\ndone in a thread-safe manner. For most users, we recommend using the thread-safe\nsafe_session() method and a with block.

\n
\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/snowpark_connection.py#L184" - }, - "streamlit.connections.ExperimentalBaseConnection.reset": { - "name": "reset", - "signature": "ExperimentalBaseConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "

Create and register a custom component.

\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "

Display an HTML string in an iframe.

\n", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "

Load a remote URL in an iframe.

\n", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "

Concatenate a dataframe to the bottom of the current one.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L550" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.vegalite.v2.api.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L422" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L247" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/media.py#L43" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L334" - }, - "DeltaGenerator.beta_columns": { - "name": "beta_columns", - "signature": "element.beta_columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.beta_container": { - "name": "beta_container", - "signature": "element.beta_container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.beta_expander": { - "name": "beta_expander", - "signature": "element.beta_expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L320" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/code.py#L27" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or list of numbers", - "is_optional": false, - "description": "
\n
If an int
\n
Specifies the number of columns to insert, and all columns\nhave equal width.
\n
If a list of numbers
\n

Creates a column for each number, and each\ncolumn's width is proportional to the number provided. Numbers can\nbe ints or floats, but they must be positive.

\n

For example, st.columns([3, 1, 2]) creates 3 columns where\nthe first column is 3 times the width of the second, and the last\ncolumn is 2 times that width.

\n
\n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "string (\"small\", \"medium\", or \"large\")", - "is_optional": false, - "description": "

An optional string, which indicates the size of the gap between each column.\nThe default is a small gap between columns. This argument can only be supplied by\nkeyword.

\n", - "default": "a" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(data=None, width=None, height=None, *, use_container_width=False)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n
\nst.dataframe(df, 200, 100)\n
\n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. (It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.)\nStyler support is experimental!\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L40" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/time_widgets.py#L399" - }, - "DeltaGenerator.dg": { - "name": "dg", - "signature": "element.dg", - "description": "

Get our DeltaGenerator.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L168" - }, - "DeltaGenerator.divider": { - "name": "divider", - "signature": "element.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L244" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/button.py#L169" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L320" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.experimental_data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

Display a data editor widget that allows you to edit DataFrames and\nmany other data structures in a table-like UI.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean which, if True, disables the data editor and prevents\nany edits. Defaults to False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame, pd.Styler, pyarrow.Table, np.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/data_editor.py#L448" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/file_uploader.py#L205" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/heading.py#L40" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/doc_string.py#L49" - }, - "DeltaGenerator.id": { - "name": "id", - "signature": "element.id" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "'auto' or 'always' or 'never' or bool", - "is_optional": false, - "description": "

If 'auto', set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf 'always' or True, set the image's width to the column width.\nIf 'never' or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "'RGB' or 'BGR'", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to 'RGB', meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to 'BGR', instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "'JPEG', 'PNG', or 'auto'", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to 'auto' which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/image.py#L88" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L196" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L160" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown(\u201dThis text is :red[colored red], and this is **:blue[colored]** and bold.\u201d)\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/markdown.py#L31" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "str", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int or float or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "{'streamlit', 'private', 'secret', 'public'}", - "is_optional": false, - "description": "

Use 'streamlit' to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int/float/timedelta or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/heading.py#L93" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L122" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/layouts.py#L208" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\" or \"hidden\" or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/time_widgets.py#L214" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/heading.py#L146" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/dataframe_selector.py#L475" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/media.py#L117" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.22.0/lib/streamlit/elements/write.py#L48" - } - }, - "1.23.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L492" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L317" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/media.py#L42" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L404" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "\"disk\", boolean, or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/code.py#L27" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or iterable of numbers", - "is_optional": false, - "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "\"small\", \"medium\", or \"large\"", - "is_optional": false, - "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", - "default": "s" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L77" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L29" - }, - "streamlit.data_editor": { - "name": "data_editor", - "signature": "st.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/data_editor.py#L527" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L43" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/time_widgets.py#L398" - }, - "streamlit.divider": { - "name": "divider", - "signature": "st.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L244" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/button.py#L169" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "

Use in a with block to draw some code on the app, then execute it.

\n", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L317" - }, - "streamlit.experimental_connection": { - "name": "experimental_connection", - "signature": "st.experimental_connection(name, type=None, max_entries=None, ttl=None, **kwargs)", - "examples": "
\n

The easiest way to create a first-party (SQL or Snowpark) connection is to use their\ndefault names and define corresponding sections in your secrets.toml file.

\n
\nimport streamlit as st\nconn = st.experimental_connection("sql") # Config section defined in [connections.sql] in secrets.toml.\n
\n

Creating a SQLConnection with a custom name requires you to explicitly specify the\ntype. If type is not passed as a kwarg, it must be set in the appropriate section of\nsecrets.toml.

\n
\nimport streamlit as st\nconn1 = st.experimental_connection("my_sql_connection", type="sql") # Config section defined in [connections.my_sql_connection].\nconn2 = st.experimental_connection("my_other_sql_connection") # type must be set in [connections.my_other_sql_connection].\n
\n

Passing the full module path to the connection class that you want to use can be\nuseful, especially when working with a custom connection:

\n
\nimport streamlit as st\nconn = st.experimental_connection("my_sql_connection", type="streamlit.connections.SQLConnection")\n
\n

Finally, you can pass the connection class to use directly to this function. Doing\nso allows static type checking tools such as mypy to infer the exact return\ntype of st.experimental_connection.

\n
\nimport streamlit as st\nfrom streamlit.connections import SQLConnection\nconn = st.experimental_connection("my_sql_connection", type=SQLConnection)\n
\n
\n", - "description": "

Create a new connection to a data store or API, or return an existing one.

\n

Config options, credentials, secrets, etc. for connections are taken from various\nsources:

\n
    \n
  • Any connection-specific configuration files.
  • \n
  • An app's secrets.toml files.
  • \n
  • The kwargs passed to this function.
  • \n
\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

The connection name used for secrets lookup in [connections.<name>].\nType will be inferred from passing "sql" or "snowpark".

\n", - "default": null - }, - { - "name": "type", - "type_name": "str, connection class, or None", - "is_optional": false, - "description": "

The type of connection to create. It can be a keyword ("sql" or "snowpark"),\na path to an importable class, or an imported class reference. All classes\nmust extend st.connections.ExperimentalBaseConnection and implement the\n_connect() method. If the type kwarg is None, a type field must be set\nin the connection's section in secrets.toml.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of connections to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float, timedelta, or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Additional connection specific kwargs that are passed to the Connection's\n_connect() method. Learn more from the specific Connection's documentation.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "Connection object", - "is_generator": false, - "description": "

An initialized Connection object of the specified type.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/connection_factory.py#L170" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/data_editor.py#L527" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "

Return the query parameters that is currently showing in the browser's URL bar.

\n", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/commands/query_params.py#L29" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "\"disk\", boolean, or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_data_api.py#L378" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/commands/query_params.py#L65" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_resource_api.py#L258" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/file_uploader.py#L214" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/config.py#L131" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/heading.py#L40" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/doc_string.py#L49" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "\"auto\", \"always\", \"never\", or bool", - "is_optional": false, - "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "\"RGB\" or \"BGR\"", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "\"JPEG\", \"PNG\", or \"auto\"", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/image.py#L88" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L196" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L230" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L31" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "\"normal\", \"inverse\", or \"off\"", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", - "is_optional": false, - "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/config.py#L92" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used on an app page, and must only\nbe set once per page.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\", \"expanded\", or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int, float, timedelta, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "

Temporarily displays a message while executing a block of code.

\n", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/heading.py#L93" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L192" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L205" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/time_widgets.py#L213" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/heading.py#L146" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L545" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/media.py#L116" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/write.py#L49" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_data_api.py#L549" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_data_api.py#L549" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_resource_api.py#L406" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/runtime/caching/cache_resource_api.py#L406" - }, - "streamlit.connections.ExperimentalBaseConnection": { - "name": "ExperimentalBaseConnection", - "signature": "st.connections.ExperimentalBaseConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L25", - "description": "

The abstract base class that all Streamlit Connections must inherit from.

\n

This base class provides connection authors with a standardized way to hook into the\nst.experimental_connection() factory function: connection authors are required to\nprovide an implementation for the abstract method _connect in their subclasses.

\n

Additionally, it also provides a few methods/properties designed to make\nimplementation of connections more convenient. See the docstrings for each of the\nmethods of this class for more information

\n
\n

Note

\n

While providing an implementation of _connect is technically all that's\nrequired to define a valid connection, connections should also provide the user\nwith context-specific ways of interacting with the underlying connection object.\nFor example, the first-party SQLConnection provides a query() method for\nreads and a session property for more complex operations.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection": { - "name": "SQLConnection", - "signature": "st.connections.SQLConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None." - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None." - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/sql_connection.py#L121" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/sql_connection.py#L226" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/sql_connection.py#L45", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

A connection to a SQL database using a SQLAlchemy Engine. Initialize using st.experimental_connection("<name>", type="sql").

\n

SQLConnection provides the query() convenience method, which can be used to\nrun simple read-only queries with both caching and simple error handling/retries.\nMore complex DB interactions can be performed by using the .session property\nto receive a regular SQLAlchemy Session.

\n

SQLConnections should always be created using st.experimental_connection(),\nnot initialized directly. Connection parameters for a SQLConnection can be\nspecified using either st.secrets or **kwargs. Some frequently used\nparameters include:

\n
    \n
  • url or arguments for sqlalchemy.engine.URL.create().\nMost commonly it includes a dialect, host, database, username and password.
  • \n
  • create_engine_kwargs can be passed via st.secrets, such as for\nsnowflake-sqlalchemy\nor Google BigQuery.\nThese can also be passed directly as **kwargs to experimental_connection().
  • \n
  • autocommit=True to run with isolation level AUTOCOMMIT. Default is False.
  • \n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SnowparkConnection": { - "name": "SnowparkConnection", - "signature": "st.connections.SnowparkConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L137" - }, - { - "name": "safe_session", - "signature": "st.connections.safe_session.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L207" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L184" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L70", - "description": "

A connection to Snowpark using snowflake.snowpark.session.Session. Initialize using

\n

st.experimental_connection("<name>", type="snowpark").

\n

In addition to accessing the Snowpark Session, SnowparkConnection supports direct SQL querying using\nquery("...") and thread safe access using with conn.safe_session():. See methods\nbelow for more information. SnowparkConnections should always be created using\nst.experimental_connection(), not initialized directly.

\n
\n

Note

\n

We don't expect this iteration of SnowparkConnection to be able to scale\nwell in apps with many concurrent users due to the lock contention that will occur\nover the single underlying Session object under high load.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection.query": { - "name": "query", - "signature": "SQLConnection.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n

Aside from the ttl kwarg, all kwargs passed to this function are passed down\nto pd.read_sql\nand have the behavior described in the pandas documentation.

\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None." - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None." - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/sql_connection.py#L121" - }, - "streamlit.connections.SQLConnection.reset": { - "name": "reset", - "signature": "SQLConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SQLConnection.session": { - "name": "session", - "signature": "SQLConnection.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

\n

Users of this connection should use the contextmanager pattern for writes,\ntransactions, and anything more complex than simple read queries.

\n

See the usage example below, which assumes we have a table numbers with a\nsingle integer column val. The SQLAlchemy docs also contain\nmuch more information on the usage of sessions.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/sql_connection.py#L226" - }, - "streamlit.connections.SnowparkConnection.query": { - "name": "query", - "signature": "SnowparkConnection.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - "streamlit.connections.SnowparkConnection.reset": { - "name": "reset", - "signature": "SnowparkConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SnowparkConnection.safe_session": { - "name": "safe_session", - "signature": "SnowparkConnection.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

\n

As operations on a Snowpark session are not thread safe, we need to take care\nwhen using a session in the context of a Streamlit app where each script run\noccurs in its own thread. Using the contextmanager pattern to do this ensures\nthat access on this connection's underlying Session is done in a thread-safe\nmanner.

\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L207" - }, - "streamlit.connections.SnowparkConnection.session": { - "name": "session", - "signature": "SnowparkConnection.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

\n
\n

Note

\n

Snowpark sessions are not thread safe. Users of this method are\nresponsible for ensuring that access to the session returned by this method is\ndone in a thread-safe manner. For most users, we recommend using the thread-safe\nsafe_session() method and a with block.

\n
\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/snowpark_connection.py#L184" - }, - "streamlit.connections.ExperimentalBaseConnection.reset": { - "name": "reset", - "signature": "ExperimentalBaseConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.column_config.BarChartColumn": { - "name": "BarChartColumn", - "signature": "st.column_config.BarChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.BarChartColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a bar chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "y_min", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", - "default": null - }, - { - "name": "y_max", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L745" - }, - "streamlit.column_config.CheckboxColumn": { - "name": "CheckboxColumn", - "signature": "st.column_config.CheckboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n        "favorite": [True, False, False, True],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "favorite": st.column_config.CheckboxColumn(\n            "Your favorite?",\n            help="Select your **favorite** widgets",\n            default=False,\n        )\n    },\n    disabled=["widgets"],\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a checkbox column in st.dataframe or st.data_editor.

\n

This is the default column type for boolean values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "bool or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L565" - }, - "streamlit.column_config.Column": { - "name": "Column", - "signature": "st.column_config.Column(label=None, *, width=None, help=None, disabled=None, required=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.Column(\n            "Streamlit Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            width="medium",\n            required=True,\n        )\n    },\n    hide_index=True,\n    num_rows="dynamic",\n)\n
\n\n \n
\n", - "description": "

Configure a generic column in st.dataframe or st.data_editor.

\n

The type of the column will be automatically inferred from the data type.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n

To change the type of the column and enable type-specific configuration options,\nuse one of the column types in the st.column_config namespace,\ne.g. st.column_config.NumberColumn.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L187" - }, - "streamlit.column_config.DateColumn": { - "name": "DateColumn", - "signature": "st.column_config.DateColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nfrom datetime import date\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "birthday": [\n            date(1980, 1, 1),\n            date(1990, 5, 3),\n            date(1974, 5, 19),\n            date(2001, 8, 17),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "birthday": st.column_config.DateColumn(\n            "Birthday",\n            min_value=date(1900, 1, 1),\n            max_value=date(2005, 1, 1),\n            format="DD.MM.YYYY",\n            step=1,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a date column in st.dataframe or st.data_editor.

\n

This is the default column type for date values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When used\nwith st.data_editor, editing will be enabled with a date picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

The minimum date that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

The maximum date that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int or None", - "is_optional": false, - "description": "

The stepping interval in days. If None (default), the step will be 1 day.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L1277" - }, - "streamlit.column_config.DatetimeColumn": { - "name": "DatetimeColumn", - "signature": "st.column_config.DatetimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None, timezone=None)", - "examples": "
\n
\nfrom datetime import datetime\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            datetime(2024, 2, 5, 12, 30),\n            datetime(2023, 11, 10, 18, 0),\n            datetime(2024, 3, 11, 20, 10),\n            datetime(2023, 9, 12, 3, 0),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.DatetimeColumn(\n            "Appointment",\n            min_value=datetime(2023, 6, 1),\n            max_value=datetime(2025, 1, 1),\n            format="D MMM YYYY, h:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a datetime column in st.dataframe or st.data_editor.

\n

This is the default column type for datetime values. This command needs to be\nused in the column_config parameter of st.dataframe or\nst.data_editor. When used with st.data_editor, editing will be enabled\nwith a datetime picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how datetimes are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD HH:mm:ss.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

The minimum datetime that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

The maximum datetime that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, datetime.timedelta, or None", - "is_optional": false, - "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", - "default": null - }, - { - "name": "timezone", - "type_name": "str or None", - "is_optional": false, - "description": "

The timezone of this column. If None (default),\nthe timezone is inferred from the underlying data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L1042" - }, - "streamlit.column_config.ImageColumn": { - "name": "ImageColumn", - "signature": "st.column_config.ImageColumn(label=None, *, width=None, help=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/5435b8cb-6c6c-490b-9608-799b543655d3/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/ef9a7627-13f2-47e5-8f65-3f69bb38a5c2/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/31b99099-8eae-4ff8-aa89-042895ed3843/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/6a399b09-241e-4ae7-a31f-7640dc1d181e/Home_Page.png",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.ImageColumn(\n            "Preview Image", help="Streamlit app preview screenshots"\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure an image column in st.dataframe or st.data_editor.

\n

The cell values need to be one of:

\n
    \n
  • A URL to fetch the image from. This can also be a relative URL of an image\ndeployed via static file serving.\nNote that you can NOT use an arbitrary local image if it is not available through\na public URL.
  • \n
  • A data URL containing an SVG XML like data:image/svg+xml;utf8,<svg xmlns=...</svg>.
  • \n
  • A data URL containing a Base64 encoded image like data:image/png;base64,iVBO....
  • \n
\n

Image columns are not editable at the moment. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L906" - }, - "streamlit.column_config.LineChartColumn": { - "name": "LineChartColumn", - "signature": "st.column_config.LineChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.LineChartColumn(\n            "Sales (last 6 months)",\n            width="medium",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n         ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a line chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "y_min", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", - "default": null - }, - { - "name": "y_max", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L825" - }, - "streamlit.column_config.LinkColumn": { - "name": "LinkColumn", - "signature": "st.column_config.LinkColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://roadmap.streamlit.app",\n            "https://extras.streamlit.app",\n            "https://issues.streamlit.app",\n            "https://30days.streamlit.app",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.LinkColumn(\n            "Trending apps",\n            help="The top trending Streamlit apps",\n            validate="^https://[a-z]+\\.streamlit\\.app$",\n            max_chars=100,\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a link column in st.dataframe or st.data_editor.

\n

The cell values need to be string and will be shown as clickable links.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor. When used with st.data_editor, editing will be enabled\nwith a text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "str or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", - "default": null - }, - { - "name": "validate", - "type_name": "str or None", - "is_optional": false, - "description": "

A regular expression (JS flavor, e.g. "^https://.+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L466" - }, - "streamlit.column_config.ListColumn": { - "name": "ListColumn", - "signature": "st.column_config.ListColumn(label=None, *, width=None, help=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ListColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            width="medium",\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a list column in st.dataframe or st.data_editor.

\n

This is the default column type for list-like values. List columns are not editable\nat the moment. This command needs to be used in the column_config parameter of\nst.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L977" - }, - "streamlit.column_config.NumberColumn": { - "name": "NumberColumn", - "signature": "st.column_config.NumberColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "price": [20, 950, 250, 500],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "price": st.column_config.NumberColumn(\n            "Price (in USD)",\n            help="The price of the product in USD",\n            min_value=0,\n            max_value=1000,\n            step=1,\n            format="$%d",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a number column in st.dataframe or st.data_editor.

\n

This is the default column type for integer and float values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how numbers are displayed.\nThis does not impact the return value. Valid formatters: %d %e %f %g %i %u.\nYou can also add prefixes and suffixes, e.g. "$ %.2f" to show a dollar prefix.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval. Specifies the precision of numbers that can be entered.\nIf None (default), uses 1 for integers and unrestricted precision for floats.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L262" - }, - "streamlit.column_config.ProgressColumn": { - "name": "ProgressColumn", - "signature": "st.column_config.ProgressColumn(label=None, *, width=None, help=None, format=None, min_value=None, max_value=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [200, 550, 1000, 80],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ProgressColumn(\n            "Sales volume",\n            help="The sales volume in USD",\n            format="$%f",\n            min_value=0,\n            max_value=1000,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a progress column in st.dataframe or st.data_editor.

\n

Cells need to contain a number. Progress columns are not editable at the moment.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how numbers are displayed.\nValid formatters: %d %e %f %g %i %u. You can also add prefixes and suffixes,\ne.g. "$ %.2f" to show a dollar prefix.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value of the progress bar.\nIf None (default), will be 0.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value of the progress bar. If None (default), will be 100 for\ninteger values and 1 for float values.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L1390" - }, - "streamlit.column_config.SelectboxColumn": { - "name": "SelectboxColumn", - "signature": "st.column_config.SelectboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, options=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "category": [\n            "\ud83d\udcca Data Exploration",\n            "\ud83d\udcc8 Data Visualization",\n            "\ud83e\udd16 LLM",\n            "\ud83d\udcca Data Exploration",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "category": st.column_config.SelectboxColumn(\n            "App Category",\n            help="The category of the app",\n            width="medium",\n            options=[\n                "\ud83d\udcca Data Exploration",\n                "\ud83d\udcc8 Data Visualization",\n                "\ud83e\udd16 LLM",\n            ],\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a selectbox column in st.dataframe or st.data_editor.

\n

This is the default column type for Pandas categorical values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a selectbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "str, int, float, bool, or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "options", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

The options that can be selected during editing. If None (default), this will be\ninferred from the underlying dataframe column if its dtype is \u201ccategory\u201d\n(see Pandas docs on categorical data).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L647" - }, - "streamlit.column_config.TextColumn": { - "name": "TextColumn", - "signature": "st.column_config.TextColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.TextColumn(\n            "Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            default="st.",\n            max_chars=50,\n            validate="^st\\.[a-z_]+$",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a text column in st.dataframe or st.data_editor.

\n

This is the default column type for string values. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor. When used with\nst.data_editor, editing will be enabled with a text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "str or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", - "default": null - }, - { - "name": "validate", - "type_name": "str or None", - "is_optional": false, - "description": "

A regular expression (JS flavor, e.g. "^[a-z]+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L372" - }, - "streamlit.column_config.TimeColumn": { - "name": "TimeColumn", - "signature": "st.column_config.TimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nfrom datetime import time\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            time(12, 30),\n            time(18, 0),\n            time(9, 10),\n            time(16, 25),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.TimeColumn(\n            "Appointment",\n            min_value=time(8, 0, 0),\n            max_value=time(19, 0, 0),\n            format="hh:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a time column in st.dataframe or st.data_editor.

\n

This is the default column type for time values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When\nused with st.data_editor, editing will be enabled with a time picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses HH:mm:ss.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

The minimum time that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

The maximum time that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, datetime.timedelta, or None", - "is_optional": false, - "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/lib/column_types.py#L1163" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "

Create and register a custom component.

\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "

Display an HTML string in an iframe.

\n", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "

Load a remote URL in an iframe.

\n", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "

Concatenate a dataframe to the bottom of the current one.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L620" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L492" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L317" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/media.py#L42" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L404" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/code.py#L27" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or iterable of numbers", - "is_optional": false, - "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "\"small\", \"medium\", or \"large\"", - "is_optional": false, - "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", - "default": "s" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L77" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L29" - }, - "DeltaGenerator.data_editor": { - "name": "data_editor", - "signature": "element.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/data_editor.py#L527" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L43" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/time_widgets.py#L398" - }, - "DeltaGenerator.dg": { - "name": "dg", - "signature": "element.dg", - "description": "

Get our DeltaGenerator.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L168" - }, - "DeltaGenerator.divider": { - "name": "divider", - "signature": "element.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L244" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/button.py#L169" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L317" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/data_editor.py#L527" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/file_uploader.py#L214" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/heading.py#L40" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/doc_string.py#L49" - }, - "DeltaGenerator.id": { - "name": "id", - "signature": "element.id" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "\"auto\", \"always\", \"never\", or bool", - "is_optional": false, - "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "\"RGB\" or \"BGR\"", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "\"JPEG\", \"PNG\", or \"auto\"", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/image.py#L88" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L196" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L230" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/markdown.py#L31" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "\"normal\", \"inverse\", or \"off\"", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", - "is_optional": false, - "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int, float, timedelta, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/heading.py#L93" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L192" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/layouts.py#L205" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/time_widgets.py#L213" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/heading.py#L146" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/dataframe_selector.py#L545" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/media.py#L116" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.23.0/lib/streamlit/elements/write.py#L49" - } - }, - "1.24.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L492" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L317" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/media.py#L42" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L404" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. datetime.datetime) to a hash\nfunction (lambda dt: dt.isoformat()) like this:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={datetime.datetime: lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "datetime.datetime") to the hash function instead:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={"datetime.datetime": lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "\"disk\", boolean, or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_data_api.py#L384" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. Person) to a hash\nfunction (str) like this:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={Person: str})\ndef get_person_name(person: Person):\n    return person.name\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "__main__.Person") to the hash function instead:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={"__main__.Person": str})\ndef get_person_name(person: Person):\n    return person.name\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_resource_api.py#L264" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.chat_input": { - "name": "chat_input", - "signature": "st.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", - "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", - "args": [ - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False." - }, - { - "name": "on_submit", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when the chat input's value is submitted.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "str or None", - "is_generator": false, - "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/chat.py#L208" - }, - "streamlit.chat_message": { - "name": "chat_message", - "signature": "st.chat_message(name, *, avatar=None)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", - "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", - "args": [ - { - "name": "name", - "type_name": "\"user\", \"assistant\", or str", - "is_optional": false, - "description": "

The name of the message author. Can be \u201cuser\u201d or \u201cassistant\u201d to\nenable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", - "default": null - }, - { - "name": "avatar", - "type_name": "str, numpy.ndarray, or BytesIO", - "is_optional": false, - "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user" or\n"assistant", or the first letter of the name value.

\n", - "default": "icons" - } - ], - "returns": [ - { - "type_name": "Container", - "is_generator": false, - "description": "

A single container that can hold multiple elements.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/chat.py#L112" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/code.py#L27" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or iterable of numbers", - "is_optional": false, - "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "\"small\", \"medium\", or \"large\"", - "is_optional": false, - "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", - "default": "s" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L75" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L27" - }, - "streamlit.data_editor": { - "name": "data_editor", - "signature": "st.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/data_editor.py#L527" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L43" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/time_widgets.py#L398" - }, - "streamlit.divider": { - "name": "divider", - "signature": "st.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L244" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/button.py#L169" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "

Use in a with block to draw some code on the app, then execute it.

\n", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/echo.py#L27" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L39" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L315" - }, - "streamlit.experimental_connection": { - "name": "experimental_connection", - "signature": "st.experimental_connection(name, type=None, max_entries=None, ttl=None, **kwargs)", - "examples": "
\n

The easiest way to create a first-party (SQL or Snowpark) connection is to use their\ndefault names and define corresponding sections in your secrets.toml file.

\n
\nimport streamlit as st\nconn = st.experimental_connection("sql") # Config section defined in [connections.sql] in secrets.toml.\n
\n

Creating a SQLConnection with a custom name requires you to explicitly specify the\ntype. If type is not passed as a kwarg, it must be set in the appropriate section of\nsecrets.toml.

\n
\nimport streamlit as st\nconn1 = st.experimental_connection("my_sql_connection", type="sql") # Config section defined in [connections.my_sql_connection].\nconn2 = st.experimental_connection("my_other_sql_connection") # type must be set in [connections.my_other_sql_connection].\n
\n

Passing the full module path to the connection class that you want to use can be\nuseful, especially when working with a custom connection:

\n
\nimport streamlit as st\nconn = st.experimental_connection("my_sql_connection", type="streamlit.connections.SQLConnection")\n
\n

Finally, you can pass the connection class to use directly to this function. Doing\nso allows static type checking tools such as mypy to infer the exact return\ntype of st.experimental_connection.

\n
\nimport streamlit as st\nfrom streamlit.connections import SQLConnection\nconn = st.experimental_connection("my_sql_connection", type=SQLConnection)\n
\n
\n", - "description": "

Create a new connection to a data store or API, or return an existing one.

\n

Config options, credentials, secrets, etc. for connections are taken from various\nsources:

\n
    \n
  • Any connection-specific configuration files.
  • \n
  • An app's secrets.toml files.
  • \n
  • The kwargs passed to this function.
  • \n
\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

The connection name used for secrets lookup in [connections.<name>].\nType will be inferred from passing "sql" or "snowpark".

\n", - "default": null - }, - { - "name": "type", - "type_name": "str, connection class, or None", - "is_optional": false, - "description": "

The type of connection to create. It can be a keyword ("sql" or "snowpark"),\na path to an importable class, or an imported class reference. All classes\nmust extend st.connections.ExperimentalBaseConnection and implement the\n_connect() method. If the type kwarg is None, a type field must be set\nin the connection's section in secrets.toml.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of connections to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None." - }, - { - "name": "ttl", - "type_name": "float, timedelta, or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Additional connection specific kwargs that are passed to the Connection's\n_connect() method. Learn more from the specific Connection's documentation.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "Connection object", - "is_generator": false, - "description": "

An initialized Connection object of the specified type.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/connection_factory.py#L170" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/data_editor.py#L527" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "

Return the query parameters that is currently showing in the browser's URL bar.

\n", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/commands/query_params.py#L29" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. datetime.datetime) to a hash\nfunction (lambda dt: dt.isoformat()) like this:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={datetime.datetime: lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "datetime.datetime") to the hash function instead:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={"datetime.datetime": lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "\"disk\", boolean, or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None." - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_data_api.py#L384" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/commands/query_params.py#L65" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. Person) to a hash\nfunction (str) like this:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={Person: str})\ndef get_person_name(person: Person):\n    return person.name\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "__main__.Person") to the hash function instead:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={"__main__.Person": str})\ndef get_person_name(person: Person):\n    return person.name\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None." - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False." - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_resource_api.py#L264" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/file_uploader.py#L214" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/form.py#L211" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/config.py#L131" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/heading.py#L40" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/doc_string.py#L48" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "\"auto\", \"always\", \"never\", or bool", - "is_optional": false, - "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "\"RGB\" or \"BGR\"", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "\"JPEG\", \"PNG\", or \"auto\"", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/image.py#L88" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L103" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L196" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L230" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/map.py#L76" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L31" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "\"normal\", \"inverse\", or \"off\"", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", - "is_optional": false, - "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/config.py#L92" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used on an app page, and must only\nbe set once per page.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\", \"expanded\", or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int, float, timedelta, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/slider.py#L171" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "

Temporarily displays a message while executing a block of code.

\n", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/heading.py#L93" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L136" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L192" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L203" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/time_widgets.py#L213" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/heading.py#L146" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L545" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/media.py#L116" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L71" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/write.py#L49" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_data_api.py#L587" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_data_api.py#L587" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_resource_api.py#L449" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/runtime/caching/cache_resource_api.py#L449" - }, - "streamlit.connections.ExperimentalBaseConnection": { - "name": "ExperimentalBaseConnection", - "signature": "st.connections.ExperimentalBaseConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L25", - "description": "

The abstract base class that all Streamlit Connections must inherit from.

\n

This base class provides connection authors with a standardized way to hook into the\nst.experimental_connection() factory function: connection authors are required to\nprovide an implementation for the abstract method _connect in their subclasses.

\n

Additionally, it also provides a few methods/properties designed to make\nimplementation of connections more convenient. See the docstrings for each of the\nmethods of this class for more information

\n
\n

Note

\n

While providing an implementation of _connect is technically all that's\nrequired to define a valid connection, connections should also provide the user\nwith context-specific ways of interacting with the underlying connection object.\nFor example, the first-party SQLConnection provides a query() method for\nreads and a session property for more complex operations.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection": { - "name": "SQLConnection", - "signature": "st.connections.SQLConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None." - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None." - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/sql_connection.py#L121" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/sql_connection.py#L226" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/sql_connection.py#L45", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

A connection to a SQL database using a SQLAlchemy Engine. Initialize using st.experimental_connection("<name>", type="sql").

\n

SQLConnection provides the query() convenience method, which can be used to\nrun simple read-only queries with both caching and simple error handling/retries.\nMore complex DB interactions can be performed by using the .session property\nto receive a regular SQLAlchemy Session.

\n

SQLConnections should always be created using st.experimental_connection(),\nnot initialized directly. Connection parameters for a SQLConnection can be\nspecified using either st.secrets or **kwargs. Some frequently used\nparameters include:

\n
    \n
  • url or arguments for sqlalchemy.engine.URL.create().\nMost commonly it includes a dialect, host, database, username and password.
  • \n
  • create_engine_kwargs can be passed via st.secrets, such as for\nsnowflake-sqlalchemy\nor Google BigQuery.\nThese can also be passed directly as **kwargs to experimental_connection().
  • \n
  • autocommit=True to run with isolation level AUTOCOMMIT. Default is False.
  • \n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SnowparkConnection": { - "name": "SnowparkConnection", - "signature": "st.connections.SnowparkConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L137" - }, - { - "name": "safe_session", - "signature": "st.connections.safe_session.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L207" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L184" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L70", - "description": "

A connection to Snowpark using snowflake.snowpark.session.Session. Initialize using

\n

st.experimental_connection("<name>", type="snowpark").

\n

In addition to accessing the Snowpark Session, SnowparkConnection supports direct SQL querying using\nquery("...") and thread safe access using with conn.safe_session():. See methods\nbelow for more information. SnowparkConnections should always be created using\nst.experimental_connection(), not initialized directly.

\n
\n

Note

\n

We don't expect this iteration of SnowparkConnection to be able to scale\nwell in apps with many concurrent users due to the lock contention that will occur\nover the single underlying Session object under high load.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection.query": { - "name": "query", - "signature": "SQLConnection.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n

Aside from the ttl kwarg, all kwargs passed to this function are passed down\nto pd.read_sql\nand have the behavior described in the pandas documentation.

\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None." - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None." - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None." - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/sql_connection.py#L121" - }, - "streamlit.connections.SQLConnection.reset": { - "name": "reset", - "signature": "SQLConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SQLConnection.session": { - "name": "session", - "signature": "SQLConnection.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

\n

Users of this connection should use the contextmanager pattern for writes,\ntransactions, and anything more complex than simple read queries.

\n

See the usage example below, which assumes we have a table numbers with a\nsingle integer column val. The SQLAlchemy docs also contain\nmuch more information on the usage of sessions.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/sql_connection.py#L226" - }, - "streamlit.connections.SnowparkConnection.query": { - "name": "query", - "signature": "SnowparkConnection.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None." - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - "streamlit.connections.SnowparkConnection.reset": { - "name": "reset", - "signature": "SnowparkConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SnowparkConnection.safe_session": { - "name": "safe_session", - "signature": "SnowparkConnection.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

\n

As operations on a Snowpark session are not thread safe, we need to take care\nwhen using a session in the context of a Streamlit app where each script run\noccurs in its own thread. Using the contextmanager pattern to do this ensures\nthat access on this connection's underlying Session is done in a thread-safe\nmanner.

\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L207" - }, - "streamlit.connections.SnowparkConnection.session": { - "name": "session", - "signature": "SnowparkConnection.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

\n
\n

Note

\n

Snowpark sessions are not thread safe. Users of this method are\nresponsible for ensuring that access to the session returned by this method is\ndone in a thread-safe manner. For most users, we recommend using the thread-safe\nsafe_session() method and a with block.

\n
\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/snowpark_connection.py#L184" - }, - "streamlit.connections.ExperimentalBaseConnection.reset": { - "name": "reset", - "signature": "ExperimentalBaseConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.column_config.BarChartColumn": { - "name": "BarChartColumn", - "signature": "st.column_config.BarChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.BarChartColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a bar chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "y_min", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", - "default": null - }, - { - "name": "y_max", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L745" - }, - "streamlit.column_config.CheckboxColumn": { - "name": "CheckboxColumn", - "signature": "st.column_config.CheckboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n        "favorite": [True, False, False, True],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "favorite": st.column_config.CheckboxColumn(\n            "Your favorite?",\n            help="Select your **favorite** widgets",\n            default=False,\n        )\n    },\n    disabled=["widgets"],\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a checkbox column in st.dataframe or st.data_editor.

\n

This is the default column type for boolean values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "bool or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L565" - }, - "streamlit.column_config.Column": { - "name": "Column", - "signature": "st.column_config.Column(label=None, *, width=None, help=None, disabled=None, required=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.Column(\n            "Streamlit Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            width="medium",\n            required=True,\n        )\n    },\n    hide_index=True,\n    num_rows="dynamic",\n)\n
\n\n \n
\n", - "description": "

Configure a generic column in st.dataframe or st.data_editor.

\n

The type of the column will be automatically inferred from the data type.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n

To change the type of the column and enable type-specific configuration options,\nuse one of the column types in the st.column_config namespace,\ne.g. st.column_config.NumberColumn.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L187" - }, - "streamlit.column_config.DateColumn": { - "name": "DateColumn", - "signature": "st.column_config.DateColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nfrom datetime import date\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "birthday": [\n            date(1980, 1, 1),\n            date(1990, 5, 3),\n            date(1974, 5, 19),\n            date(2001, 8, 17),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "birthday": st.column_config.DateColumn(\n            "Birthday",\n            min_value=date(1900, 1, 1),\n            max_value=date(2005, 1, 1),\n            format="DD.MM.YYYY",\n            step=1,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a date column in st.dataframe or st.data_editor.

\n

This is the default column type for date values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When used\nwith st.data_editor, editing will be enabled with a date picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

The minimum date that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

The maximum date that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int or None", - "is_optional": false, - "description": "

The stepping interval in days. If None (default), the step will be 1 day.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L1277" - }, - "streamlit.column_config.DatetimeColumn": { - "name": "DatetimeColumn", - "signature": "st.column_config.DatetimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None, timezone=None)", - "examples": "
\n
\nfrom datetime import datetime\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            datetime(2024, 2, 5, 12, 30),\n            datetime(2023, 11, 10, 18, 0),\n            datetime(2024, 3, 11, 20, 10),\n            datetime(2023, 9, 12, 3, 0),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.DatetimeColumn(\n            "Appointment",\n            min_value=datetime(2023, 6, 1),\n            max_value=datetime(2025, 1, 1),\n            format="D MMM YYYY, h:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a datetime column in st.dataframe or st.data_editor.

\n

This is the default column type for datetime values. This command needs to be\nused in the column_config parameter of st.dataframe or\nst.data_editor. When used with st.data_editor, editing will be enabled\nwith a datetime picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how datetimes are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD HH:mm:ss.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

The minimum datetime that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

The maximum datetime that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, datetime.timedelta, or None", - "is_optional": false, - "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", - "default": null - }, - { - "name": "timezone", - "type_name": "str or None", - "is_optional": false, - "description": "

The timezone of this column. If None (default),\nthe timezone is inferred from the underlying data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L1042" - }, - "streamlit.column_config.ImageColumn": { - "name": "ImageColumn", - "signature": "st.column_config.ImageColumn(label=None, *, width=None, help=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/5435b8cb-6c6c-490b-9608-799b543655d3/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/ef9a7627-13f2-47e5-8f65-3f69bb38a5c2/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/31b99099-8eae-4ff8-aa89-042895ed3843/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/6a399b09-241e-4ae7-a31f-7640dc1d181e/Home_Page.png",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.ImageColumn(\n            "Preview Image", help="Streamlit app preview screenshots"\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure an image column in st.dataframe or st.data_editor.

\n

The cell values need to be one of:

\n
    \n
  • A URL to fetch the image from. This can also be a relative URL of an image\ndeployed via static file serving.\nNote that you can NOT use an arbitrary local image if it is not available through\na public URL.
  • \n
  • A data URL containing an SVG XML like data:image/svg+xml;utf8,<svg xmlns=...</svg>.
  • \n
  • A data URL containing a Base64 encoded image like data:image/png;base64,iVBO....
  • \n
\n

Image columns are not editable at the moment. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L906" - }, - "streamlit.column_config.LineChartColumn": { - "name": "LineChartColumn", - "signature": "st.column_config.LineChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.LineChartColumn(\n            "Sales (last 6 months)",\n            width="medium",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n         ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a line chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "y_min", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", - "default": null - }, - { - "name": "y_max", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L825" - }, - "streamlit.column_config.LinkColumn": { - "name": "LinkColumn", - "signature": "st.column_config.LinkColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://roadmap.streamlit.app",\n            "https://extras.streamlit.app",\n            "https://issues.streamlit.app",\n            "https://30days.streamlit.app",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.LinkColumn(\n            "Trending apps",\n            help="The top trending Streamlit apps",\n            validate="^https://[a-z]+\\.streamlit\\.app$",\n            max_chars=100,\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a link column in st.dataframe or st.data_editor.

\n

The cell values need to be string and will be shown as clickable links.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor. When used with st.data_editor, editing will be enabled\nwith a text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "str or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", - "default": null - }, - { - "name": "validate", - "type_name": "str or None", - "is_optional": false, - "description": "

A regular expression (JS flavor, e.g. "^https://.+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L466" - }, - "streamlit.column_config.ListColumn": { - "name": "ListColumn", - "signature": "st.column_config.ListColumn(label=None, *, width=None, help=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ListColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            width="medium",\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a list column in st.dataframe or st.data_editor.

\n

This is the default column type for list-like values. List columns are not editable\nat the moment. This command needs to be used in the column_config parameter of\nst.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L977" - }, - "streamlit.column_config.NumberColumn": { - "name": "NumberColumn", - "signature": "st.column_config.NumberColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "price": [20, 950, 250, 500],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "price": st.column_config.NumberColumn(\n            "Price (in USD)",\n            help="The price of the product in USD",\n            min_value=0,\n            max_value=1000,\n            step=1,\n            format="$%d",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a number column in st.dataframe or st.data_editor.

\n

This is the default column type for integer and float values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how numbers are displayed.\nThis does not impact the return value. Valid formatters: %d %e %f %g %i %u.\nYou can also add prefixes and suffixes, e.g. "$ %.2f" to show a dollar prefix.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval. Specifies the precision of numbers that can be entered.\nIf None (default), uses 1 for integers and unrestricted precision for floats.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L262" - }, - "streamlit.column_config.ProgressColumn": { - "name": "ProgressColumn", - "signature": "st.column_config.ProgressColumn(label=None, *, width=None, help=None, format=None, min_value=None, max_value=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [200, 550, 1000, 80],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ProgressColumn(\n            "Sales volume",\n            help="The sales volume in USD",\n            format="$%f",\n            min_value=0,\n            max_value=1000,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a progress column in st.dataframe or st.data_editor.

\n

Cells need to contain a number. Progress columns are not editable at the moment.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how numbers are displayed.\nValid formatters: %d %e %f %g %i %u. You can also add prefixes and suffixes,\ne.g. "$ %.2f" to show a dollar prefix.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value of the progress bar.\nIf None (default), will be 0.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value of the progress bar. If None (default), will be 100 for\ninteger values and 1 for float values.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L1390" - }, - "streamlit.column_config.SelectboxColumn": { - "name": "SelectboxColumn", - "signature": "st.column_config.SelectboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, options=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "category": [\n            "\ud83d\udcca Data Exploration",\n            "\ud83d\udcc8 Data Visualization",\n            "\ud83e\udd16 LLM",\n            "\ud83d\udcca Data Exploration",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "category": st.column_config.SelectboxColumn(\n            "App Category",\n            help="The category of the app",\n            width="medium",\n            options=[\n                "\ud83d\udcca Data Exploration",\n                "\ud83d\udcc8 Data Visualization",\n                "\ud83e\udd16 LLM",\n            ],\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a selectbox column in st.dataframe or st.data_editor.

\n

This is the default column type for Pandas categorical values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a selectbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "str, int, float, bool, or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "options", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

The options that can be selected during editing. If None (default), this will be\ninferred from the underlying dataframe column if its dtype is \u201ccategory\u201d\n(see Pandas docs on categorical data).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L647" - }, - "streamlit.column_config.TextColumn": { - "name": "TextColumn", - "signature": "st.column_config.TextColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.TextColumn(\n            "Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            default="st.",\n            max_chars=50,\n            validate="^st\\.[a-z_]+$",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a text column in st.dataframe or st.data_editor.

\n

This is the default column type for string values. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor. When used with\nst.data_editor, editing will be enabled with a text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "str or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", - "default": null - }, - { - "name": "validate", - "type_name": "str or None", - "is_optional": false, - "description": "

A regular expression (JS flavor, e.g. "^[a-z]+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L372" - }, - "streamlit.column_config.TimeColumn": { - "name": "TimeColumn", - "signature": "st.column_config.TimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nfrom datetime import time\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            time(12, 30),\n            time(18, 0),\n            time(9, 10),\n            time(16, 25),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.TimeColumn(\n            "Appointment",\n            min_value=time(8, 0, 0),\n            max_value=time(19, 0, 0),\n            format="hh:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a time column in st.dataframe or st.data_editor.

\n

This is the default column type for time values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When\nused with st.data_editor, editing will be enabled with a time picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False." - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False." - }, - { - "name": "default", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses HH:mm:ss.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

The minimum time that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

The maximum time that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, datetime.timedelta, or None", - "is_optional": false, - "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/lib/column_types.py#L1163" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "

Create and register a custom component.

\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "

Display an HTML string in an iframe.

\n", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "

Load a remote URL in an iframe.

\n", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150." - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "

Concatenate a dataframe to the bottom of the current one.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L620" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L492" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L317" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/media.py#L42" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L404" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.chat_input": { - "name": "chat_input", - "signature": "element.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", - "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", - "args": [ - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False." - }, - { - "name": "on_submit", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when the chat input's value is submitted.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "str or None", - "is_generator": false, - "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/chat.py#L208" - }, - "DeltaGenerator.chat_message": { - "name": "chat_message", - "signature": "element.chat_message(name, *, avatar=None)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", - "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", - "args": [ - { - "name": "name", - "type_name": "\"user\", \"assistant\", or str", - "is_optional": false, - "description": "

The name of the message author. Can be \u201cuser\u201d or \u201cassistant\u201d to\nenable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", - "default": null - }, - { - "name": "avatar", - "type_name": "str, numpy.ndarray, or BytesIO", - "is_optional": false, - "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user" or\n"assistant", or the first letter of the name value.

\n", - "default": "icons" - } - ], - "returns": [ - { - "type_name": "Container", - "is_generator": false, - "description": "

A single container that can hold multiple elements.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/chat.py#L112" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/code.py#L27" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black." - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or iterable of numbers", - "is_optional": false, - "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "\"small\", \"medium\", or \"large\"", - "is_optional": false, - "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", - "default": "s" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L75" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L27" - }, - "DeltaGenerator.data_editor": { - "name": "data_editor", - "signature": "element.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/data_editor.py#L527" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L43" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input(\n    "When\\'s your birthday",\n    datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/time_widgets.py#L398" - }, - "DeltaGenerator.dg": { - "name": "dg", - "signature": "element.dg", - "description": "

Get our DeltaGenerator.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L168" - }, - "DeltaGenerator.divider": { - "name": "divider", - "signature": "element.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L244" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/button.py#L169" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L39" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L315" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n

Mixing data types within a column can make the column uneditable.\nAdditionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.

\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False." - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/data_editor.py#L527" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/file_uploader.py#L214" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None." - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/form.py#L211" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/heading.py#L40" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/doc_string.py#L48" - }, - "DeltaGenerator.id": { - "name": "id", - "signature": "element.id" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "\"auto\", \"always\", \"never\", or bool", - "is_optional": false, - "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "\"RGB\" or \"BGR\"", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "\"JPEG\", \"PNG\", or \"auto\"", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/image.py#L88" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L103" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L196" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L230" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(data=None, zoom=None, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n
\n", - "description": "

Display a map with points on it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted. Must have two columns:

\n
    \n
  • latitude called 'lat', 'latitude', 'LAT', 'LATITUDE'
  • \n
  • longitude called 'lon', 'longitude', 'LON', 'LONGITUDE'.
  • \n
\n", - "default": null - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/map.py#L76" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/markdown.py#L31" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "\"normal\", \"inverse\", or \"off\"", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", max_selections=None)", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values." - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", - "is_optional": false, - "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False." - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": "." - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": "." - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value." - }, - { - "name": "step", - "type_name": "int, float, timedelta, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/slider.py#L171" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/heading.py#L93" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L136" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L192" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": "." - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/layouts.py#L203" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False." - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/time_widgets.py#L213" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/heading.py#L146" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/dataframe_selector.py#L545" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file opened with", - "is_optional": false, - "description": "

io.open().\nRaw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/media.py#L116" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/alert.py#L71" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False." - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.24.0/lib/streamlit/elements/write.py#L49" - } - }, - "1.25.0": { - "streamlit.altair_chart": { - "name": "altair_chart", - "signature": "st.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L492" - }, - "streamlit.area_chart": { - "name": "area_chart", - "signature": "st.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L317" - }, - "streamlit.audio": { - "name": "audio", - "signature": "st.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", - "is_optional": false, - "description": "

Raw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/media.py#L42" - }, - "streamlit.balloons": { - "name": "balloons", - "signature": "st.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/balloons.py#L25" - }, - "streamlit.bar_chart": { - "name": "bar_chart", - "signature": "st.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L404" - }, - "streamlit.bokeh_chart": { - "name": "bokeh_chart", - "signature": "st.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "streamlit.button": { - "name": "button", - "signature": "st.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/button.py#L61" - }, - "streamlit.cache": { - "name": "cache", - "signature": "st.cache(func=None, persist=False, allow_output_mutation=False, show_spinner=True, suppress_st_warning=False, hash_funcs=None, max_entries=None, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\n@st.cache(persist=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To disable hashing return values, set the allow_output_mutation parameter to True:

\n
\n@st.cache(allow_output_mutation=True)\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. MongoClient) to a hash function (id) like this:

\n
\n@st.cache(hash_funcs={MongoClient: id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "pymongo.mongo_client.MongoClient") to the hash function instead:

\n
\n@st.cache(hash_funcs={"pymongo.mongo_client.MongoClient": id})\ndef connect_to_database(url):\n    return MongoClient(url)\n
\n
\n", - "description": "

Function decorator to memoize function executions.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function and dependent code.

\n", - "default": null - }, - { - "name": "persist", - "type_name": "boolean", - "is_optional": false, - "description": "

Whether to persist the cache on disk.

\n", - "default": null - }, - { - "name": "allow_output_mutation", - "type_name": "boolean", - "is_optional": false, - "description": "

Streamlit shows a warning when return values are mutated, as that\ncan have unintended consequences. This is done by hashing the return value internally.

\n

If you know what you're doing and would like to override this warning, set this to True.

\n", - "default": null - }, - { - "name": "show_spinner", - "type_name": "boolean", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na cache miss.

\n", - "default": "True" - }, - { - "name": "suppress_st_warning", - "type_name": "boolean", - "is_optional": false, - "description": "

Suppress warnings about calling Streamlit commands from within\nthe cached function.

\n", - "default": null - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions. This is used to override\nthe behavior of the hasher inside Streamlit's caching mechanism: when the hasher\nencounters an object, it will first check to see if its type matches a key in this\ndict and, if so, will use the provided function to generate a hash for it. See below\nfor an example of how this can be used.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/legacy_caching/caching.py#L486" - }, - "streamlit.cache_data": { - "name": "cache_data", - "signature": "st.cache_data(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. datetime.datetime) to a hash\nfunction (lambda dt: dt.isoformat()) like this:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={datetime.datetime: lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "datetime.datetime") to the hash function instead:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={"datetime.datetime": lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "\"disk\", boolean, or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None" - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_data_api.py#L384" - }, - "streamlit.cache_resource": { - "name": "cache_resource", - "signature": "st.cache_resource(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. Person) to a hash\nfunction (str) like this:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={Person: str})\ndef get_person_name(person: Person):\n    return person.name\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "__main__.Person") to the hash function instead:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={"__main__.Person": str})\ndef get_person_name(person: Person):\n    return person.name\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_resource_api.py#L264" - }, - "streamlit.camera_input": { - "name": "camera_input", - "signature": "st.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/camera_input.py#L109" - }, - "streamlit.caption": { - "name": "caption", - "signature": "st.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L132" - }, - "streamlit.chat_input": { - "name": "chat_input", - "signature": "st.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", - "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", - "args": [ - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False" - }, - { - "name": "on_submit", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when the chat input's value is submitted.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "str or None", - "is_generator": false, - "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/chat.py#L208" - }, - "streamlit.chat_message": { - "name": "chat_message", - "signature": "st.chat_message(name, *, avatar=None)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", - "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", - "args": [ - { - "name": "name", - "type_name": "\"user\", \"assistant\", or str", - "is_optional": false, - "description": "

The name of the message author. Can be \u201cuser\u201d or \u201cassistant\u201d to\nenable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", - "default": null - }, - { - "name": "avatar", - "type_name": "str, numpy.ndarray, or BytesIO", - "is_optional": false, - "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user" or\n"assistant", or the first letter of the name value.

\n", - "default": "icons" - } - ], - "returns": [ - { - "type_name": "Container", - "is_generator": false, - "description": "

A single container that can hold multiple elements.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/chat.py#L112" - }, - "streamlit.checkbox": { - "name": "checkbox", - "signature": "st.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/checkbox.py#L52" - }, - "streamlit.code": { - "name": "code", - "signature": "st.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/code.py#L27" - }, - "streamlit.color_picker": { - "name": "color_picker", - "signature": "st.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/color_picker.py#L52" - }, - "streamlit.columns": { - "name": "columns", - "signature": "st.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or iterable of numbers", - "is_optional": false, - "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "\"small\", \"medium\", or \"large\"", - "is_optional": false, - "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", - "default": "s" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L75" - }, - "streamlit.container": { - "name": "container", - "signature": "st.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L27" - }, - "streamlit.data_editor": { - "name": "data_editor", - "signature": "st.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/data_editor.py#L528" - }, - "streamlit.dataframe": { - "name": "dataframe", - "signature": "st.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L43" - }, - "streamlit.date_input": { - "name": "date_input", - "signature": "st.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, format=\"YYYY/MM/DD\", disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input("When's your birthday", datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\nimport datetime\nimport streamlit as st\n\ntoday = datetime.datetime.now()\nnext_year = today.year + 1\njan_1 = datetime.date(next_year, 1, 1)\ndec_31 = datetime.date(next_year, 12, 31)\n\nd = st.date_input(\n    "Select your vacation for next year",\n    (jan_1, datetime.date(next_year, 1, 7)),\n    jan_1,\n    dec_31,\n    format="MM.DD.YYYY",\n)\nd\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

A format string controlling how the interface should display dates.\nSupports \u201cYYYY/MM/DD\u201d (default), \u201cDD/MM/YYYY\u201d, or \u201cMM/DD/YYYY\u201d.\nYou may also use a period (.) or hyphen (-) as separators.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/time_widgets.py#L402" - }, - "streamlit.divider": { - "name": "divider", - "signature": "st.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L244" - }, - "streamlit.download_button": { - "name": "download_button", - "signature": "st.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/button.py#L169" - }, - "streamlit.echo": { - "name": "echo", - "signature": "st.echo(code_location=\"above\")", - "example": "
\n
\nimport streamlit as st\n\nwith st.echo():\n    st.write('This code will be printed')\n
\n
\n", - "description": "

Use in a with block to draw some code on the app, then execute it.

\n", - "args": [ - { - "name": "code_location", - "type_name": "\"above\" or \"below\"", - "is_optional": false, - "description": "

Whether to show the echoed code before or after the results of the\nexecuted code block.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/echo.py#L28" - }, - "streamlit.empty": { - "name": "empty", - "signature": "st.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/empty.py#L24" - }, - "streamlit.error": { - "name": "error", - "signature": "st.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L27" - }, - "streamlit.exception": { - "name": "exception", - "signature": "st.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/exception.py#L50" - }, - "streamlit.expander": { - "name": "expander", - "signature": "st.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L315" - }, - "streamlit.experimental_connection": { - "name": "experimental_connection", - "signature": "st.experimental_connection(name, type=None, max_entries=None, ttl=None, **kwargs)", - "examples": "
\n

The easiest way to create a first-party (SQL or Snowpark) connection is to use their\ndefault names and define corresponding sections in your secrets.toml file.

\n
\nimport streamlit as st\nconn = st.experimental_connection("sql") # Config section defined in [connections.sql] in secrets.toml.\n
\n

Creating a SQLConnection with a custom name requires you to explicitly specify the\ntype. If type is not passed as a kwarg, it must be set in the appropriate section of\nsecrets.toml.

\n
\nimport streamlit as st\nconn1 = st.experimental_connection("my_sql_connection", type="sql") # Config section defined in [connections.my_sql_connection].\nconn2 = st.experimental_connection("my_other_sql_connection") # type must be set in [connections.my_other_sql_connection].\n
\n

Passing the full module path to the connection class that you want to use can be\nuseful, especially when working with a custom connection:

\n
\nimport streamlit as st\nconn = st.experimental_connection("my_sql_connection", type="streamlit.connections.SQLConnection")\n
\n

Finally, you can pass the connection class to use directly to this function. Doing\nso allows static type checking tools such as mypy to infer the exact return\ntype of st.experimental_connection.

\n
\nimport streamlit as st\nfrom streamlit.connections import SQLConnection\nconn = st.experimental_connection("my_sql_connection", type=SQLConnection)\n
\n
\n", - "description": "

Create a new connection to a data store or API, or return an existing one.

\n

Config options, credentials, secrets, etc. for connections are taken from various\nsources:

\n
    \n
  • Any connection-specific configuration files.
  • \n
  • An app's secrets.toml files.
  • \n
  • The kwargs passed to this function.
  • \n
\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

The connection name used for secrets lookup in [connections.<name>].\nType will be inferred from passing "sql" or "snowpark".

\n", - "default": null - }, - { - "name": "type", - "type_name": "str, connection class, or None", - "is_optional": false, - "description": "

The type of connection to create. It can be a keyword ("sql" or "snowpark"),\na path to an importable class, or an imported class reference. All classes\nmust extend st.connections.ExperimentalBaseConnection and implement the\n_connect() method. If the type kwarg is None, a type field must be set\nin the connection's section in secrets.toml.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of connections to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" - }, - { - "name": "ttl", - "type_name": "float, timedelta, or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Additional connection specific kwargs that are passed to the Connection's\n_connect() method. Learn more from the specific Connection's documentation.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "Connection object", - "is_generator": false, - "description": "

An initialized Connection object of the specified type.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/connection_factory.py#L170" - }, - "streamlit.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "st.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/data_editor.py#L528" - }, - "streamlit.experimental_get_query_params": { - "name": "experimental_get_query_params", - "signature": "st.experimental_get_query_params()", - "example": "
\n

Let's say the user's web browser is at\nhttp://localhost:8501/?show_map=True&selected=asia&selected=america.\nThen, you can get the query parameters using the following:

\n
\nimport streamlit as st\n\nst.experimental_get_query_params()\n{"show_map": ["True"], "selected": ["asia", "america"]}\n
\n

Note that the values in the returned dict are always lists. This is\nbecause we internally use Python's urllib.parse.parse_qs(), which behaves\nthis way. And this behavior makes sense when you consider that every item\nin a query string is potentially a 1-element array.

\n
\n", - "description": "

Return the query parameters that is currently showing in the browser's URL bar.

\n", - "args": [], - "returns": [ - { - "type_name": "dict", - "is_generator": false, - "description": "

The current query parameters as a dict. "Query parameters" are the part of the URL that comes\nafter the first "?".

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/commands/query_params.py#L29" - }, - "streamlit.experimental_memo": { - "name": "experimental_memo", - "signature": "st.experimental_memo(func=None, *, ttl, max_entries, show_spinner, persist, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n\nd1 = fetch_and_clean_data(DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nd2 = fetch_and_clean_data(DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the data in d1 is the same as in d2.\n\nd3 = fetch_and_clean_data(DATA_URL_2)\n# This is a different URL, so the function executes.\n
\n

To set the persist parameter, use this command as follows:

\n
\nimport streamlit as st\n\n@st.cache_data(persist="disk")\ndef fetch_and_clean_data(url):\n    # Fetch data from URL here, and then clean it up.\n    return data\n
\n

By default, all parameters to a cached function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nconnection = make_database_connection()\nd1 = fetch_and_clean_data(connection, num_rows=10)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\nanother_connection = make_database_connection()\nd2 = fetch_and_clean_data(another_connection, num_rows=10)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _database_connection parameter was different\n# in both calls.\n
\n

A cached function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_data\ndef fetch_and_clean_data(_db_connection, num_rows):\n    # Fetch data from _db_connection here, and then clean it up.\n    return data\n\nfetch_and_clean_data.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. datetime.datetime) to a hash\nfunction (lambda dt: dt.isoformat()) like this:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={datetime.datetime: lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "datetime.datetime") to the hash function instead:

\n
\nimport streamlit as st\nimport datetime\n\n@st.cache_data(hash_funcs={"datetime.datetime": lambda dt: dt.isoformat()})\ndef convert_to_utc(dt: datetime.datetime):\n    return dt.astimezone(datetime.timezone.utc)\n
\n
\n", - "description": "

Decorator to cache functions that return data (e.g. dataframe transforms, database queries, ML inference).

\n

Cached objects are stored in "pickled" form, which means that the return\nvalue of a cached function must be pickleable. Each caller of the cached\nfunction gets its own copy of the cached data.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_data.clear().

\n

To cache global resources, use st.cache_resource instead. Learn more\nabout caching at https://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function to cache. Streamlit hashes the function's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached data is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "persist", - "type_name": "\"disk\", boolean, or None", - "is_optional": false, - "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None" - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_data_api.py#L384" - }, - "streamlit.experimental_rerun": { - "name": "experimental_rerun", - "signature": "st.experimental_rerun()", - "description": "

Rerun the script immediately.

\n

When st.experimental_rerun() is called, the script is halted - no\nmore statements will be run, and the script will be queued to re-run\nfrom the top.

\n

If this function is called outside of Streamlit, it will raise an\nException.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/commands/execution_control.py#L46" - }, - "streamlit.experimental_set_query_params": { - "name": "experimental_set_query_params", - "signature": "st.experimental_set_query_params(**query_params)", - "example": "
\n

To point the user's web browser to something like\n"http://localhost:8501/?show_map=True&selected=asia&selected=america",\nyou would do the following:

\n
\nimport streamlit as st\n\nst.experimental_set_query_params(\n    show_map=True,\n    selected=["asia", "america"],\n)\n
\n
\n", - "description": "

Set the query parameters that are shown in the browser's URL bar.

\n
\n

Warning

\n

Query param embed cannot be set using this method.

\n
\n", - "args": [ - { - "name": "**query_params", - "type_name": "dict", - "is_optional": false, - "description": "

The query parameters to set, as key-value pairs.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/commands/query_params.py#L65" - }, - "streamlit.experimental_singleton": { - "name": "experimental_singleton", - "signature": "st.experimental_singleton(func, *, ttl, max_entries, show_spinner, validate, experimental_allow_widgets, hash_funcs=None)", - "example": "
\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(url):\n    # Create a database session object that points to the URL.\n    return session\n\ns1 = get_database_session(SESSION_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(SESSION_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value. This means that now the connection object in s1 is the same as in s2.\n\ns3 = get_database_session(SESSION_URL_2)\n# This is a different URL, so the function executes.\n
\n

By default, all parameters to a cache_resource function must be hashable.\nAny parameter whose name begins with _ will not be hashed. You can use\nthis as an "escape hatch" for parameters that are not hashable:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\ns1 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Actually executes the function, since this is the first time it was\n# encountered.\n\ns2 = get_database_session(create_sessionmaker(), DATA_URL_1)\n# Does not execute the function. Instead, returns its previously computed\n# value - even though the _sessionmaker parameter was different\n# in both calls.\n
\n

A cache_resource function's cache can be procedurally cleared:

\n
\nimport streamlit as st\n\n@st.cache_resource\ndef get_database_session(_sessionmaker, url):\n    # Create a database connection object that points to the URL.\n    return connection\n\nget_database_session.clear()\n# Clear all cached entries for this function.\n
\n

To override the default hashing behavior, pass a custom hash function.\nYou can do that by mapping a type (e.g. Person) to a hash\nfunction (str) like this:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={Person: str})\ndef get_person_name(person: Person):\n    return person.name\n
\n

Alternatively, you can map the type's fully-qualified name\n(e.g. "__main__.Person") to the hash function instead:

\n
\nimport streamlit as st\nfrom pydantic import BaseModel\n\nclass Person(BaseModel):\n    name: str\n\n@st.cache_resource(hash_funcs={"__main__.Person": str})\ndef get_person_name(person: Person):\n    return person.name\n
\n
\n", - "description": "

Decorator to cache functions that return global resources (e.g. database connections, ML models).

\n

Cached objects are shared across all users, sessions, and reruns. They\nmust be thread-safe because they can be accessed from multiple threads\nconcurrently. If thread safety is an issue, consider using st.session_state\nto store resources per session instead.

\n

You can clear a function's cache with func.clear() or clear the entire\ncache with st.cache_resource.clear().

\n

To cache data, use st.cache_data instead. Learn more about caching at\nhttps://docs.streamlit.io/library/advanced-features/caching.

\n", - "args": [ - { - "name": "func", - "type_name": "callable", - "is_optional": false, - "description": "

The function that creates the cached resource. Streamlit hashes the\nfunction's source code.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, timedelta, str, or None", - "is_optional": false, - "description": "

The maximum time to keep an entry in the cache. Can be one of:

\n\n

Note that ttl will be ignored if persist="disk" or persist=True.

\n", - "default": null - }, - { - "name": "max_entries", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" - }, - { - "name": "show_spinner", - "type_name": "boolean or string", - "is_optional": false, - "description": "

Enable the spinner. Default is True to show a spinner when there is\na "cache miss" and the cached resource is being created. If string,\nvalue of show_spinner param will be used for spinner text.

\n", - "default": "True" - }, - { - "name": "validate", - "type_name": "callable or None", - "is_optional": false, - "description": "

An optional validation function for cached data. validate is called\neach time the cached value is accessed. It receives the cached value as\nits only parameter and it must return a boolean. If validate returns\nFalse, the current cached value is discarded, and the decorated function\nis called to compute a new value. This is useful e.g. to check the\nhealth of database connections.

\n", - "default": null - }, - { - "name": "experimental_allow_widgets", - "type_name": "boolean", - "is_optional": false, - "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" - }, - { - "name": "hash_funcs", - "type_name": "dict or None", - "is_optional": false, - "description": "

Mapping of types or fully qualified names to hash functions.\nThis is used to override the behavior of the hasher inside Streamlit's\ncaching mechanism: when the hasher encounters an object, it will first\ncheck to see if its type matches a key in this dict and, if so, will use\nthe provided function to generate a hash for it. See below for an example\nof how this can be used.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_resource_api.py#L264" - }, - "streamlit.file_uploader": { - "name": "file_uploader", - "signature": "st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/file_uploader.py#L214" - }, - "streamlit.form": { - "name": "form", - "signature": "st.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n\n \n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
  • Within a form, the only widget that can have a callback function is\nst.form_submit_button.
  • \n
\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/form.py#L118" - }, - "streamlit.form_submit_button": { - "name": "form_submit_button", - "signature": "st.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/form.py#L218" - }, - "streamlit.get_option": { - "name": "get_option", - "signature": "st.get_option(key)", - "description": "

Return the current value of a given Streamlit config option.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/config.py#L131" - }, - "streamlit.graphviz_chart": { - "name": "graphviz_chart", - "signature": "st.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "streamlit.header": { - "name": "header", - "signature": "st.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/heading.py#L40" - }, - "streamlit.help": { - "name": "help", - "signature": "st.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/doc_string.py#L48" - }, - "streamlit.image": { - "name": "image", - "signature": "st.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "\"auto\", \"always\", \"never\", or bool", - "is_optional": false, - "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "\"RGB\" or \"BGR\"", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "\"JPEG\", \"PNG\", or \"auto\"", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/image.py#L88" - }, - "streamlit.info": { - "name": "info", - "signature": "st.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L91" - }, - "streamlit.json": { - "name": "json", - "signature": "st.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/json.py#L35" - }, - "streamlit.latex": { - "name": "latex", - "signature": "st.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L196" - }, - "streamlit.line_chart": { - "name": "line_chart", - "signature": "st.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L230" - }, - "streamlit.map": { - "name": "map", - "signature": "st.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n

You can also customize the size and color of the datapoints:

\n
\nst.map(df, size=20, color='#0044ff')\n
\n

And finally, you can choose different columns to use for the latitude\nand longitude components, as well as set size and color of each\ndatapoint dynamically based on other columns:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame({\n    "col1": np.random.randn(1000) / 50 + 37.76,\n    "col2": np.random.randn(1000) / 50 + -122.4,\n    "col3": np.random.randn(1000) * 100,\n    "col4": np.random.rand(1000, 4).tolist(),\n})\n\nst.map(df,\n    latitude='col1',\n    longitude='col2',\n    size='col3',\n    color='col4')\n
\n\n \n
\n", - "description": "

Display a map with a scatterplot overlaid onto it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted.

\n", - "default": null - }, - { - "name": "latitude", - "type_name": "str or None", - "is_optional": false, - "description": "

The name of the column containing the latitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the latitude data will come from any column named 'lat',\n'latitude', 'LAT', or 'LATITUDE'.

\n", - "default": null - }, - { - "name": "longitude", - "type_name": "str or None", - "is_optional": false, - "description": "

The name of the column containing the longitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the longitude data will come from any column named 'lon',\n'longitude', 'LON', or 'LONGITUDE'.

\n", - "default": null - }, - { - "name": "color", - "type_name": "str or tuple or None", - "is_optional": false, - "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", - "default": "color" - }, - { - "name": "size", - "type_name": "str or float or None", - "is_optional": false, - "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", - "default": "size" - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/map.py#L91" - }, - "streamlit.markdown": { - "name": "markdown", - "signature": "st.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L31" - }, - "streamlit.metric": { - "name": "metric", - "signature": "st.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "\"normal\", \"inverse\", or \"off\"", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/metric.py#L46" - }, - "streamlit.multiselect": { - "name": "multiselect", - "signature": "st.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder=\"Choose an option\", disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A string to display when no options are selected. Defaults to 'Choose an option'.

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/multiselect.py#L145" - }, - "streamlit.number_input": { - "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/number_input.py#L66" - }, - "streamlit.plotly_chart": { - "name": "plotly_chart", - "signature": "st.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", - "is_optional": false, - "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "streamlit.progress": { - "name": "progress", - "signature": "st.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/progress.py#L66" - }, - "streamlit.pydeck_chart": { - "name": "pydeck_chart", - "signature": "st.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "streamlit.pyplot": { - "name": "pyplot", - "signature": "st.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/pyplot.py#L38" - }, - "streamlit.radio": { - "name": "radio", - "signature": "st.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/radio.py#L75" - }, - "streamlit.select_slider": { - "name": "select_slider", - "signature": "st.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/select_slider.py#L106" - }, - "streamlit.selectbox": { - "name": "selectbox", - "signature": "st.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=\"Select...\", disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A string to display when no options are selected. Defaults to 'Select...'.

\n

A selectbox can't be empty, so a placeholder only displays while a\nuser's cursor is in a selectbox after manually deleting the current\nselection. A future update will allow selectboxes to be empty.

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/selectbox.py#L71" - }, - "streamlit.set_option": { - "name": "set_option", - "signature": "st.set_option(key, value)", - "description": "

Set config option.

\n
\n
Currently, only the following config options can be set within the script itself:
\n
    \n
  • client.caching
  • \n
  • client.displayEnabled
  • \n
  • deprecation.*
  • \n
\n
\n
\n

Calling with any other options will raise StreamlitAPIException.

\n

Run streamlit config show in the terminal to see all available options.

\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

The config option key of the form "section.optionName". To see all\navailable options, run streamlit config show on a terminal.

\n", - "default": null - }, - { - "name": "value", - "type_name": null, - "is_optional": null, - "description": "

The new value to assign to this config option.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/config.py#L92" - }, - "streamlit.set_page_config": { - "name": "set_page_config", - "signature": "st.set_page_config(page_title=None, page_icon=None, layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)", - "example": "
\nimport streamlit as st\n\nst.set_page_config(\n    page_title="Ex-stream-ly Cool App",\n    page_icon="\ud83e\uddca",\n    layout="wide",\n    initial_sidebar_state="expanded",\n    menu_items={\n        'Get Help': 'https://www.extremelycoolapp.com/help',\n        'Report a bug': "https://www.extremelycoolapp.com/bug",\n        'About': "# This is a header. This is an *extremely* cool app!"\n    }\n)\n
\n", - "description": "

Configures the default settings of the page.

\n
\n

Note

\n

This must be the first Streamlit command used on an app page, and must only\nbe set once per page.

\n
\n", - "args": [ - { - "name": "page_title", - "type_name": "str or None", - "is_optional": false, - "description": "

The page title, shown in the browser tab. If None, defaults to the\nfilename of the script ("app.py" would show "app \u2022 Streamlit").

\n", - "default": "the" - }, - { - "name": "page_icon", - "type_name": "Anything supported by st.image or str or None", - "is_optional": false, - "description": "

The page favicon.\nBesides the types supported by st.image (like URLs or numpy arrays),\nyou can pass in an emoji as a string ("\ud83e\udd88") or a shortcode (":shark:").\nIf you're feeling lucky, try "random" for a random emoji!\nEmoji icons are courtesy of Twemoji and loaded from MaxCDN.

\n", - "default": null - }, - { - "name": "layout", - "type_name": "\"centered\" or \"wide\"", - "is_optional": false, - "description": "

How the page content should be laid out. Defaults to "centered",\nwhich constrains the elements into a centered column of fixed width;\n"wide" uses the entire screen.

\n", - "default": "s" - }, - { - "name": "initial_sidebar_state", - "type_name": "\"auto\", \"expanded\", or \"collapsed\"", - "is_optional": false, - "description": "

How the sidebar should start out. Defaults to "auto",\nwhich hides the sidebar on mobile-sized devices, and shows it otherwise.\n"expanded" shows the sidebar initially; "collapsed" hides it.

\n", - "default": "s" - }, - { - "name": "menu_items", - "type_name": "dict", - "is_optional": false, - "description": "

Configure the menu that appears on the top-right side of this app.\nThe keys in this dict denote the menu item you'd like to configure:

\n
    \n
  • \n
    "Get help": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "Report a Bug": str or None
    \n
    The URL this menu item should point to.\nIf None, hides this menu item.
    \n
    \n
  • \n
  • \n
    "About": str or None
    \n
    A markdown string to show in the About dialog.\nIf None, only shows Streamlit's default About text.
    \n
    \n
  • \n
\n

The URL may also refer to an email address e.g. mailto:john@example.com.

\n", - "default": "About" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/commands/page_config.py#L114" - }, - "streamlit.slider": { - "name": "slider", - "signature": "st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, timedelta, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/slider.py#L172" - }, - "streamlit.snow": { - "name": "snow", - "signature": "st.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/snow.py#L25" - }, - "streamlit.spinner": { - "name": "spinner", - "signature": "st.spinner(text=\"In progress...\")", - "example": "
\n
\nimport time\nimport streamlit as st\n\nwith st.spinner('Wait for it...'):\n    time.sleep(5)\nst.success('Done!')\n
\n
\n", - "description": "

Temporarily displays a message while executing a block of code.

\n", - "args": [ - { - "name": "text", - "type_name": "str", - "is_optional": false, - "description": "

A message to display while executing that block

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/spinner.py#L23" - }, - "streamlit.stop": { - "name": "stop", - "signature": "st.stop()", - "example": "
\n
\nimport streamlit as st\n\nname = st.text_input('Name')\nif not name:\n  st.warning('Please input a name.')\n  st.stop()\nst.success('Thank you for inputting a name.')\n
\n
\n", - "description": "

Stops execution immediately.

\n

Streamlit will not run any statements after st.stop().\nWe recommend rendering a message to explain why the script has stopped.\nWhen run outside of Streamlit, this will raise an Exception.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/commands/execution_control.py#L25" - }, - "streamlit.subheader": { - "name": "subheader", - "signature": "st.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/heading.py#L93" - }, - "streamlit.success": { - "name": "success", - "signature": "st.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L124" - }, - "streamlit.table": { - "name": "table", - "signature": "st.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L192" - }, - "streamlit.tabs": { - "name": "tabs", - "signature": "st.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L203" - }, - "streamlit.text": { - "name": "text", - "signature": "st.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/text.py#L27" - }, - "streamlit.text_area": { - "name": "text_area", - "signature": "st.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "streamlit.text_input": { - "name": "text_input", - "signature": "st.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "streamlit.time_input": { - "name": "time_input", - "signature": "st.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/time_widgets.py#L217" - }, - "streamlit.title": { - "name": "title", - "signature": "st.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/heading.py#L146" - }, - "streamlit.toast": { - "name": "toast", - "signature": "st.toast(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.toast('Your edited image was saved!', icon='\ud83d\ude0d')\n
\n
\n", - "description": "

Display a short message, known as a notification "toast".

\n

The toast appears in the app's bottom-right corner and disappears after four seconds.

\n
\n

Warning

\n

st.toast is not compatible with Streamlit's caching and\ncannot be called within a cached function.

\n
\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the toast. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/toast.py#L37" - }, - "streamlit.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "st.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L545" - }, - "streamlit.video": { - "name": "video", - "signature": "st.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", - "is_optional": false, - "description": "

Raw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/media.py#L115" - }, - "streamlit.warning": { - "name": "warning", - "signature": "st.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L59" - }, - "streamlit.write": { - "name": "write", - "signature": "st.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/write.py#L49" - }, - "streamlit.experimental_memo.clear": { - "name": "experimental_memo.clear", - "signature": "st.experimental_memo.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_data_api.py#L587" - }, - "streamlit.cache_data.clear": { - "name": "cache_data.clear", - "signature": "st.cache_data.clear()", - "description": "

Clear all in-memory and on-disk data caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_data_api.py#L587" - }, - "streamlit.experimental_singleton.clear": { - "name": "experimental_singleton.clear", - "signature": "st.experimental_singleton.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_resource_api.py#L449" - }, - "streamlit.cache_resource.clear": { - "name": "cache_resource.clear", - "signature": "st.cache_resource.clear()", - "description": "

Clear all cache_resource caches.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/runtime/caching/cache_resource_api.py#L449" - }, - "streamlit.connections.ExperimentalBaseConnection": { - "name": "ExperimentalBaseConnection", - "signature": "st.connections.ExperimentalBaseConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L25", - "description": "

The abstract base class that all Streamlit Connections must inherit from.

\n

This base class provides connection authors with a standardized way to hook into the\nst.experimental_connection() factory function: connection authors are required to\nprovide an implementation for the abstract method _connect in their subclasses.

\n

Additionally, it also provides a few methods/properties designed to make\nimplementation of connections more convenient. See the docstrings for each of the\nmethods of this class for more information

\n
\n

Note

\n

While providing an implementation of _connect is technically all that's\nrequired to define a valid connection, connections should also provide the user\nwith context-specific ways of interacting with the underlying connection object.\nFor example, the first-party SQLConnection provides a query() method for\nreads and a session property for more complex operations.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection": { - "name": "SQLConnection", - "signature": "st.connections.SQLConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None" - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None" - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None" - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/sql_connection.py#L121" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L137" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/sql_connection.py#L226" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/sql_connection.py#L45", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

A connection to a SQL database using a SQLAlchemy Engine. Initialize using st.experimental_connection("<name>", type="sql").

\n

SQLConnection provides the query() convenience method, which can be used to\nrun simple read-only queries with both caching and simple error handling/retries.\nMore complex DB interactions can be performed by using the .session property\nto receive a regular SQLAlchemy Session.

\n

SQLConnections should always be created using st.experimental_connection(),\nnot initialized directly. Connection parameters for a SQLConnection can be\nspecified using either st.secrets or **kwargs. Some frequently used\nparameters include:

\n
    \n
  • url or arguments for sqlalchemy.engine.URL.create().\nMost commonly it includes a dialect, host, database, username and password.
  • \n
  • create_engine_kwargs can be passed via st.secrets, such as for\nsnowflake-sqlalchemy\nor Google BigQuery.\nThese can also be passed directly as **kwargs to experimental_connection().
  • \n
  • autocommit=True to run with isolation level AUTOCOMMIT. Default is False.
  • \n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SnowparkConnection": { - "name": "SnowparkConnection", - "signature": "st.connections.SnowparkConnection(connection_name, **kwargs)", - "is_class": true, - "methods": [ - { - "name": "query", - "signature": "st.connections.query.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - { - "name": "reset", - "signature": "st.connections.reset.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L137" - }, - { - "name": "safe_session", - "signature": "st.connections.safe_session.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L207" - } - ], - "properties": [ - { - "name": "session", - "signature": "st.connections.session.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L184" - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L70", - "description": "

A connection to Snowpark using snowflake.snowpark.session.Session. Initialize using

\n

st.experimental_connection("<name>", type="snowpark").

\n

In addition to accessing the Snowpark Session, SnowparkConnection supports direct SQL querying using\nquery("...") and thread safe access using with conn.safe_session():. See methods\nbelow for more information. SnowparkConnections should always be created using\nst.experimental_connection(), not initialized directly.

\n
\n

Note

\n

We don't expect this iteration of SnowparkConnection to be able to scale\nwell in apps with many concurrent users due to the lock contention that will occur\nover the single underlying Session object under high load.

\n
\n", - "args": [], - "returns": [] - }, - "streamlit.connections.SQLConnection.query": { - "name": "query", - "signature": "SQLConnection.query(sql, *, ttl=None, index_col=None, chunksize=None, params=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("sql")\ndf = conn.query("select * from pet_owners where owner = :owner", ttl=3600, params={"owner":"barbara"})\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n

Aside from the ttl kwarg, all kwargs passed to this function are passed down\nto pd.read_sql\nand have the behavior described in the pandas documentation.

\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" - }, - { - "name": "index_col", - "type_name": "str, list of str, or None", - "is_optional": false, - "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None" - }, - { - "name": "chunksize", - "type_name": "int or None", - "is_optional": false, - "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None" - }, - { - "name": "params", - "type_name": "list, tuple, dict or None", - "is_optional": false, - "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None" - }, - { - "name": "**kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

Additional keyword arguments are passed to pd.read_sql.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/sql_connection.py#L121" - }, - "streamlit.connections.SQLConnection.reset": { - "name": "reset", - "signature": "SQLConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SQLConnection.session": { - "name": "session", - "signature": "SQLConnection.session", - "example": "
\n
\nimport streamlit as st\nconn = st.experimental_connection("sql")\nn = st.slider("Pick a number")\nif st.button("Add the number!"):\n    with conn.session as session:\n        session.execute("INSERT INTO numbers (val) VALUES (:n);", {"n": n})\n        session.commit()\n
\n
\n", - "description": "

Return a SQLAlchemy Session.

\n

Users of this connection should use the contextmanager pattern for writes,\ntransactions, and anything more complex than simple read queries.

\n

See the usage example below, which assumes we have a table numbers with a\nsingle integer column val. The SQLAlchemy docs also contain\nmuch more information on the usage of sessions.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/sql_connection.py#L226" - }, - "streamlit.connections.SnowparkConnection.query": { - "name": "query", - "signature": "SnowparkConnection.query(sql, ttl=None)", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\ndf = conn.query("select * from pet_owners")\nst.dataframe(df)\n
\n
\n", - "description": "

Run a read-only SQL query.

\n

This method implements both query result caching (with caching behavior\nidentical to that of using @st.cache_data) as well as simple error handling/retries.

\n
\n

Note

\n

Queries that are run without a specified ttl are cached indefinitely.

\n
\n", - "args": [ - { - "name": "sql", - "type_name": "str", - "is_optional": false, - "description": "

The read-only SQL query to execute.

\n", - "default": null - }, - { - "name": "ttl", - "type_name": "float, int, timedelta or None", - "is_optional": false, - "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" - } - ], - "returns": [ - { - "type_name": "pd.DataFrame", - "is_generator": false, - "description": "

The result of running the query, formatted as a pandas DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L123" - }, - "streamlit.connections.SnowparkConnection.reset": { - "name": "reset", - "signature": "SnowparkConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.connections.SnowparkConnection.safe_session": { - "name": "safe_session", - "signature": "SnowparkConnection.safe_session()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("snowpark")\nwith conn.safe_session() as session:\n    df = session.table("mytable").limit(10).to_pandas()\n\nst.dataframe(df)\n
\n
\n", - "description": "

Grab the underlying Snowpark session in a thread-safe manner.

\n

As operations on a Snowpark session are not thread safe, we need to take care\nwhen using a session in the context of a Streamlit app where each script run\noccurs in its own thread. Using the contextmanager pattern to do this ensures\nthat access on this connection's underlying Session is done in a thread-safe\nmanner.

\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L207" - }, - "streamlit.connections.SnowparkConnection.session": { - "name": "session", - "signature": "SnowparkConnection.session", - "example": "
\n
\nimport streamlit as st\n\nsession = st.experimental_connection("snowpark").session\ndf = session.table("mytable").limit(10).to_pandas()\nst.dataframe(df)\n
\n
\n", - "description": "

Access the underlying Snowpark session.

\n
\n

Note

\n

Snowpark sessions are not thread safe. Users of this method are\nresponsible for ensuring that access to the session returned by this method is\ndone in a thread-safe manner. For most users, we recommend using the thread-safe\nsafe_session() method and a with block.

\n
\n

Information on how to use Snowpark sessions can be found in the Snowpark documentation.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/snowpark_connection.py#L184" - }, - "streamlit.connections.ExperimentalBaseConnection.reset": { - "name": "reset", - "signature": "ExperimentalBaseConnection.reset()", - "example": "
\n
\nimport streamlit as st\n\nconn = st.experimental_connection("my_conn")\n\n# Reset the connection before using it if it isn't healthy\n# Note: is_healthy() isn't a real method and is just shown for example here.\nif not conn.is_healthy():\n    conn.reset()\n\n# Do stuff with conn...\n
\n
\n", - "description": "

Reset this connection so that it gets reinitialized the next time it's used.

\n

This method can be useful when a connection has become stale, an auth token has\nexpired, or in similar scenarios where a broken connection might be fixed by\nreinitializing it. Note that some connection methods may already use reset()\nin their error handling code.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/connections/base_connection.py#L137" - }, - "streamlit.column_config.BarChartColumn": { - "name": "BarChartColumn", - "signature": "st.column_config.BarChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.BarChartColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a bar chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "y_min", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", - "default": null - }, - { - "name": "y_max", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L745" - }, - "streamlit.column_config.CheckboxColumn": { - "name": "CheckboxColumn", - "signature": "st.column_config.CheckboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n        "favorite": [True, False, False, True],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "favorite": st.column_config.CheckboxColumn(\n            "Your favorite?",\n            help="Select your **favorite** widgets",\n            default=False,\n        )\n    },\n    disabled=["widgets"],\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a checkbox column in st.dataframe or st.data_editor.

\n

This is the default column type for boolean values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "bool or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L565" - }, - "streamlit.column_config.Column": { - "name": "Column", - "signature": "st.column_config.Column(label=None, *, width=None, help=None, disabled=None, required=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.Column(\n            "Streamlit Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            width="medium",\n            required=True,\n        )\n    },\n    hide_index=True,\n    num_rows="dynamic",\n)\n
\n\n \n
\n", - "description": "

Configure a generic column in st.dataframe or st.data_editor.

\n

The type of the column will be automatically inferred from the data type.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n

To change the type of the column and enable type-specific configuration options,\nuse one of the column types in the st.column_config namespace,\ne.g. st.column_config.NumberColumn.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L187" - }, - "streamlit.column_config.DateColumn": { - "name": "DateColumn", - "signature": "st.column_config.DateColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nfrom datetime import date\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "birthday": [\n            date(1980, 1, 1),\n            date(1990, 5, 3),\n            date(1974, 5, 19),\n            date(2001, 8, 17),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "birthday": st.column_config.DateColumn(\n            "Birthday",\n            min_value=date(1900, 1, 1),\n            max_value=date(2005, 1, 1),\n            format="DD.MM.YYYY",\n            step=1,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a date column in st.dataframe or st.data_editor.

\n

This is the default column type for date values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When used\nwith st.data_editor, editing will be enabled with a date picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

The minimum date that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.date or None", - "is_optional": false, - "description": "

The maximum date that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int or None", - "is_optional": false, - "description": "

The stepping interval in days. If None (default), the step will be 1 day.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L1277" - }, - "streamlit.column_config.DatetimeColumn": { - "name": "DatetimeColumn", - "signature": "st.column_config.DatetimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None, timezone=None)", - "examples": "
\n
\nfrom datetime import datetime\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            datetime(2024, 2, 5, 12, 30),\n            datetime(2023, 11, 10, 18, 0),\n            datetime(2024, 3, 11, 20, 10),\n            datetime(2023, 9, 12, 3, 0),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.DatetimeColumn(\n            "Appointment",\n            min_value=datetime(2023, 6, 1),\n            max_value=datetime(2025, 1, 1),\n            format="D MMM YYYY, h:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a datetime column in st.dataframe or st.data_editor.

\n

This is the default column type for datetime values. This command needs to be\nused in the column_config parameter of st.dataframe or\nst.data_editor. When used with st.data_editor, editing will be enabled\nwith a datetime picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how datetimes are displayed. See\nmomentJS docs for available\nformats. If None (default), uses YYYY-MM-DD HH:mm:ss.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

The minimum datetime that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.datetime or None", - "is_optional": false, - "description": "

The maximum datetime that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, datetime.timedelta, or None", - "is_optional": false, - "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", - "default": null - }, - { - "name": "timezone", - "type_name": "str or None", - "is_optional": false, - "description": "

The timezone of this column. If None (default),\nthe timezone is inferred from the underlying data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L1042" - }, - "streamlit.column_config.ImageColumn": { - "name": "ImageColumn", - "signature": "st.column_config.ImageColumn(label=None, *, width=None, help=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/5435b8cb-6c6c-490b-9608-799b543655d3/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/ef9a7627-13f2-47e5-8f65-3f69bb38a5c2/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/31b99099-8eae-4ff8-aa89-042895ed3843/Home_Page.png",\n            "https://storage.googleapis.com/s4a-prod-share-preview/default/st_app_screenshot_image/6a399b09-241e-4ae7-a31f-7640dc1d181e/Home_Page.png",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.ImageColumn(\n            "Preview Image", help="Streamlit app preview screenshots"\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure an image column in st.dataframe or st.data_editor.

\n

The cell values need to be one of:

\n
    \n
  • A URL to fetch the image from. This can also be a relative URL of an image\ndeployed via static file serving.\nNote that you can NOT use an arbitrary local image if it is not available through\na public URL.
  • \n
  • A data URL containing an SVG XML like data:image/svg+xml;utf8,<svg xmlns=...</svg>.
  • \n
  • A data URL containing a Base64 encoded image like data:image/png;base64,iVBO....
  • \n
\n

Image columns are not editable at the moment. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L906" - }, - "streamlit.column_config.LineChartColumn": { - "name": "LineChartColumn", - "signature": "st.column_config.LineChartColumn(label=None, *, width=None, help=None, y_min=None, y_max=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.LineChartColumn(\n            "Sales (last 6 months)",\n            width="medium",\n            help="The sales volume in the last 6 months",\n            y_min=0,\n            y_max=100,\n         ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a line chart column in st.dataframe or st.data_editor.

\n

Cells need to contain a list of numbers. Chart columns are not editable\nat the moment. This command needs to be used in the column_config parameter\nof st.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "y_min", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value on the y-axis for all cells in the column.\nIf None (default), every cell will use the minimum of its data.

\n", - "default": null - }, - { - "name": "y_max", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value on the y-axis for all cells in the column. If None (default),\nevery cell will use the maximum of its data.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L825" - }, - "streamlit.column_config.LinkColumn": { - "name": "LinkColumn", - "signature": "st.column_config.LinkColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "apps": [\n            "https://roadmap.streamlit.app",\n            "https://extras.streamlit.app",\n            "https://issues.streamlit.app",\n            "https://30days.streamlit.app",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "apps": st.column_config.LinkColumn(\n            "Trending apps",\n            help="The top trending Streamlit apps",\n            validate="^https://[a-z]+\\.streamlit\\.app$",\n            max_chars=100,\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a link column in st.dataframe or st.data_editor.

\n

The cell values need to be string and will be shown as clickable links.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor. When used with st.data_editor, editing will be enabled\nwith a text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "str or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", - "default": null - }, - { - "name": "validate", - "type_name": "str or None", - "is_optional": false, - "description": "

A regular expression (JS flavor, e.g. "^https://.+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L466" - }, - "streamlit.column_config.ListColumn": { - "name": "ListColumn", - "signature": "st.column_config.ListColumn(label=None, *, width=None, help=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [\n            [0, 4, 26, 80, 100, 40],\n            [80, 20, 80, 35, 40, 100],\n            [10, 20, 80, 80, 70, 0],\n            [10, 100, 20, 100, 30, 100],\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ListColumn(\n            "Sales (last 6 months)",\n            help="The sales volume in the last 6 months",\n            width="medium",\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a list column in st.dataframe or st.data_editor.

\n

This is the default column type for list-like values. List columns are not editable\nat the moment. This command needs to be used in the column_config parameter of\nst.dataframe or st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L977" - }, - "streamlit.column_config.NumberColumn": { - "name": "NumberColumn", - "signature": "st.column_config.NumberColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "price": [20, 950, 250, 500],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "price": st.column_config.NumberColumn(\n            "Price (in USD)",\n            help="The price of the product in USD",\n            min_value=0,\n            max_value=1000,\n            step=1,\n            format="$%d",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a number column in st.dataframe or st.data_editor.

\n

This is the default column type for integer and float values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a numeric input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how numbers are displayed.\nThis does not impact the return value. Valid formatters: %d %e %f %g %i %u.\nYou can also add prefixes and suffixes, e.g. "$ %.2f" to show a dollar prefix.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum value that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval. Specifies the precision of numbers that can be entered.\nIf None (default), uses 1 for integers and unrestricted precision for floats.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L262" - }, - "streamlit.column_config.ProgressColumn": { - "name": "ProgressColumn", - "signature": "st.column_config.ProgressColumn(label=None, *, width=None, help=None, format=None, min_value=None, max_value=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "sales": [200, 550, 1000, 80],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "sales": st.column_config.ProgressColumn(\n            "Sales volume",\n            help="The sales volume in USD",\n            format="$%f",\n            min_value=0,\n            max_value=1000,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a progress column in st.dataframe or st.data_editor.

\n

Cells need to contain a number. Progress columns are not editable at the moment.\nThis command needs to be used in the column_config parameter of st.dataframe\nor st.data_editor.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how numbers are displayed.\nValid formatters: %d %e %f %g %i %u. You can also add prefixes and suffixes,\ne.g. "$ %.2f" to show a dollar prefix.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value of the progress bar.\nIf None (default), will be 0.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum value of the progress bar. If None (default), will be 100 for\ninteger values and 1 for float values.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L1390" - }, - "streamlit.column_config.SelectboxColumn": { - "name": "SelectboxColumn", - "signature": "st.column_config.SelectboxColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, options=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "category": [\n            "\ud83d\udcca Data Exploration",\n            "\ud83d\udcc8 Data Visualization",\n            "\ud83e\udd16 LLM",\n            "\ud83d\udcca Data Exploration",\n        ],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "category": st.column_config.SelectboxColumn(\n            "App Category",\n            help="The category of the app",\n            width="medium",\n            options=[\n                "\ud83d\udcca Data Exploration",\n                "\ud83d\udcc8 Data Visualization",\n                "\ud83e\udd16 LLM",\n            ],\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a selectbox column in st.dataframe or st.data_editor.

\n

This is the default column type for Pandas categorical values. This command needs to\nbe used in the column_config parameter of st.dataframe or st.data_editor.\nWhen used with st.data_editor, editing will be enabled with a selectbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "str, int, float, bool, or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "options", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

The options that can be selected during editing. If None (default), this will be\ninferred from the underlying dataframe column if its dtype is \u201ccategory\u201d\n(see Pandas docs on categorical data).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L647" - }, - "streamlit.column_config.TextColumn": { - "name": "TextColumn", - "signature": "st.column_config.TextColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, max_chars=None, validate=None)", - "examples": "
\n
\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "widgets": ["st.selectbox", "st.number_input", "st.text_area", "st.button"],\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "widgets": st.column_config.TextColumn(\n            "Widgets",\n            help="Streamlit **widget** commands \ud83c\udf88",\n            default="st.",\n            max_chars=50,\n            validate="^st\\.[a-z_]+$",\n        )\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a text column in st.dataframe or st.data_editor.

\n

This is the default column type for string values. This command needs to be used in the\ncolumn_config parameter of st.dataframe or st.data_editor. When used with\nst.data_editor, editing will be enabled with a text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "str or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None (default),\nthere will be no maximum.

\n", - "default": null - }, - { - "name": "validate", - "type_name": "str or None", - "is_optional": false, - "description": "

A regular expression (JS flavor, e.g. "^[a-z]+$") that edited values are validated against.\nIf the input is invalid, it will not be submitted.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L372" - }, - "streamlit.column_config.TimeColumn": { - "name": "TimeColumn", - "signature": "st.column_config.TimeColumn(label=None, *, width=None, help=None, disabled=None, required=None, default=None, format=None, min_value=None, max_value=None, step=None)", - "examples": "
\n
\nfrom datetime import time\nimport pandas as pd\nimport streamlit as st\n\ndata_df = pd.DataFrame(\n    {\n        "appointment": [\n            time(12, 30),\n            time(18, 0),\n            time(9, 10),\n            time(16, 25),\n        ]\n    }\n)\n\nst.data_editor(\n    data_df,\n    column_config={\n        "appointment": st.column_config.TimeColumn(\n            "Appointment",\n            min_value=time(8, 0, 0),\n            max_value=time(19, 0, 0),\n            format="hh:mm a",\n            step=60,\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Configure a time column in st.dataframe or st.data_editor.

\n

This is the default column type for time values. This command needs to be used in\nthe column_config parameter of st.dataframe or st.data_editor. When\nused with st.data_editor, editing will be enabled with a time picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str or None", - "is_optional": false, - "description": "

The label shown at the top of the column. If None (default),\nthe column name is used.

\n", - "default": null - }, - { - "name": "width", - "type_name": "\"small\", \"medium\", \"large\", or None", - "is_optional": false, - "description": "

The display width of the column. Can be one of \u201csmall\u201d, \u201cmedium\u201d, or \u201clarge\u201d.\nIf None (default), the column will be sized to fit the cell contents.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when hovering over the column label.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" - }, - { - "name": "required", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" - }, - { - "name": "default", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

Specifies the default value in this column when a new row is added by the user.

\n", - "default": "value" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A momentJS format string controlling how times are displayed. See\nmomentJS docs for available\nformats. If None (default), uses HH:mm:ss.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

The minimum time that can be entered.\nIf None (default), there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "datetime.time or None", - "is_optional": false, - "description": "

The maximum time that can be entered.\nIf None (default), there will be no maximum.

\n", - "default": null - }, - { - "name": "step", - "type_name": "int, float, datetime.timedelta, or None", - "is_optional": false, - "description": "

The stepping interval in seconds. If None (default), the step will be 1 second.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/lib/column_types.py#L1163" - }, - "streamlit.components.v1.declare_component": { - "name": "declare_component", - "signature": "st.components.v1.declare_component(name, path=None, url=None)", - "description": "

Create and register a custom component.

\n", - "args": [ - { - "name": "name", - "type_name": "str", - "is_optional": false, - "description": "

A short, descriptive name for the component. Like, "slider".

\n", - "default": null - }, - { - "name": "path", - "type_name": "str or None", - "is_optional": false, - "description": "

The path to serve the component's frontend files from. Either\npath or url must be specified, but not both.

\n", - "default": null - }, - { - "name": "url", - "type_name": "str or None", - "is_optional": false, - "description": "

The URL that the component is served from. Either path or url\nmust be specified, but not both.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "CustomComponent", - "is_generator": false, - "description": "

A CustomComponent that can be called like a function.\nCalling the component will create a new instance of the component\nin the Streamlit app.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/components/v1/components.py#L246" - }, - "streamlit.components.v1.html": { - "name": "html", - "signature": "st.components.v1.html(html, width=None, height=None, scrolling=False)", - "description": "

Display an HTML string in an iframe.

\n", - "args": [ - { - "name": "html", - "type_name": "str", - "is_optional": false, - "description": "

The HTML string to embed in the iframe.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/iframe.py#L59" - }, - "streamlit.components.v1.iframe": { - "name": "iframe", - "signature": "st.components.v1.iframe(src, width=None, height=None, scrolling=False)", - "description": "

Load a remote URL in an iframe.

\n", - "args": [ - { - "name": "src", - "type_name": "str", - "is_optional": false, - "description": "

The URL of the page to embed.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The width of the frame in CSS pixels. Defaults to the app's\ndefault element width.

\n", - "default": "the" - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" - }, - { - "name": "scrolling", - "type_name": "bool", - "is_optional": false, - "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/iframe.py#L25" - }, - "DeltaGenerator.add_rows": { - "name": "add_rows", - "signature": "element.add_rows(data=None, **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf1 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table = st.table(df1)\n\ndf2 = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nmy_table.add_rows(df2)\n# Now the table shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

You can do the same thing with plots. For example, if you want to add\nmore data to a line chart:

\n
\n# Assuming df1 and df2 from the example above still exist...\nmy_chart = st.line_chart(df1)\nmy_chart.add_rows(df2)\n# Now the chart shown in the Streamlit app contains the data for\n# df1 followed by the data for df2.\n
\n

And for plots whose datasets are named, you can pass the data with a\nkeyword argument where the key is the name:

\n
\nmy_chart = st.vega_lite_chart({\n    'mark': 'line',\n    'encoding': {'x': 'a', 'y': 'b'},\n    'datasets': {\n      'some_fancy_name': df1,  # <-- named dataset\n     },\n    'data': {'name': 'some_fancy_name'},\n}),\nmy_chart.add_rows(some_fancy_name=df2)  # <-- name used as keyword\n
\n
\n", - "description": "

Concatenate a dataframe to the bottom of the current one.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None", - "is_optional": false, - "description": "

Table to concat. Optional.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "**kwargs", - "type_name": "pandas.DataFrame, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

The named dataset to concat. Optional. You can only pass in 1\ndataset (including the one in the data parameter).

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L620" - }, - "DeltaGenerator.altair_chart": { - "name": "altair_chart", - "signature": "element.altair_chart(altair_chart, use_container_width=False, theme=\"streamlit\")", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(chart_data).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.altair_chart(c, use_container_width=True)\n
\n

Examples of Altair charts can be found at\nhttps://altair-viz.github.io/gallery/.

\n\n \n
\n", - "description": "

Display a chart using the Altair library.

\n", - "args": [ - { - "name": "altair_chart", - "type_name": "altair.Chart", - "is_optional": false, - "description": "

The Altair chart object to display.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Altair's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L492" - }, - "DeltaGenerator.area_chart": { - "name": "area_chart", - "signature": "element.area_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.area_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display an area chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.area_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L317" - }, - "DeltaGenerator.audio": { - "name": "audio", - "signature": "element.audio(data, format=\"audio/wav\", start_time=0, *, sample_rate=None)", - "example": "
\n
\nimport streamlit as st\nimport numpy as np\n\naudio_file = open('myaudio.ogg', 'rb')\naudio_bytes = audio_file.read()\n\nst.audio(audio_bytes, format='audio/ogg')\n\nsample_rate = 44100  # 44100 samples per second\nseconds = 2  # Note duration of 2 seconds\nfrequency_la = 440  # Our played note will be 440 Hz\n# Generate array with seconds*sample_rate steps, ranging between 0 and seconds\nt = np.linspace(0, seconds, seconds * sample_rate, False)\n# Generate a 440 Hz sine wave\nnote_la = np.sin(frequency_la * t * 2 * np.pi)\n\nst.audio(note_la, sample_rate=sample_rate)\n
\n\n \n
\n", - "description": "

Display an audio player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", - "is_optional": false, - "description": "

Raw audio data, filename, or a URL pointing to the file to load.\nRaw data formats must include all necessary file headers to match the file\nformat specified via format.\nIf data is a numpy array, it must either be a 1D array of the waveform\nor a 2D array of shape (num_channels, num_samples) with waveforms\nfor all channels. See the default channel order at\nhttp://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx

\n", - "default": "channel" - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the audio file. Defaults to 'audio/wav'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - }, - { - "name": "sample_rate", - "type_name": "int or None", - "is_optional": false, - "description": "

The sample rate of the audio data in samples per second. Only required if\ndata is a numpy array.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/media.py#L42" - }, - "DeltaGenerator.balloons": { - "name": "balloons", - "signature": "element.balloons()", - "example": "
\n
\nimport streamlit as st\n\nst.balloons()\n
\n

...then watch your app and get ready for a celebration!

\n
\n", - "description": "

Draw celebratory balloons.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/balloons.py#L25" - }, - "DeltaGenerator.bar_chart": { - "name": "bar_chart", - "signature": "element.bar_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=["a", "b", "c"])\n\nst.bar_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a bar chart.

\n

This is just syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.bar_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, or dict", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L404" - }, - "DeltaGenerator.bokeh_chart": { - "name": "bokeh_chart", - "signature": "element.bokeh_chart(figure, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nfrom bokeh.plotting import figure\n\nx = [1, 2, 3, 4, 5]\ny = [6, 7, 2, 4, 5]\n\np = figure(\n    title='simple line example',\n    x_axis_label='x',\n    y_axis_label='y')\n\np.line(x, y, legend_label='Trend', line_width=2)\n\nst.bokeh_chart(p, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Bokeh chart.

\n

Bokeh is a charting library for Python. The arguments to this function\nclosely follow the ones for Bokeh's show function. You can find\nmore about Bokeh at https://bokeh.pydata.org.

\n

To show Bokeh charts in Streamlit, call st.bokeh_chart\nwherever you would call Bokeh's show.

\n", - "args": [ - { - "name": "figure", - "type_name": "bokeh.plotting.figure.Figure", - "is_optional": false, - "description": "

A Bokeh figure to plot.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Bokeh's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/bokeh_chart.py#L36" - }, - "DeltaGenerator.button": { - "name": "button", - "signature": "element.button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\n\nif st.button('Say hello'):\n    st.write('Why hello there')\nelse:\n    st.write('Goodbye')\n
\n\n \n
\n", - "description": "

Display a button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/button.py#L61" - }, - "DeltaGenerator.camera_input": { - "name": "camera_input", - "signature": "element.camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\npicture = st.camera_input("Take a picture")\n\nif picture:\n    st.image(picture)\n
\n
\n", - "description": "

Display a widget that returns pictures from the user's webcam.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this widget is used for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the camera input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this camera_input's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile", - "is_generator": false, - "description": "

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/camera_input.py#L109" - }, - "DeltaGenerator.caption": { - "name": "caption", - "signature": "element.caption(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.caption('This is a string that explains something above.')\nst.caption('A caption with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in small font.

\n

This should be used for captions, asides, footnotes, sidenotes, and\nother explanatory text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the caption.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L132" - }, - "DeltaGenerator.chat_input": { - "name": "chat_input", - "signature": "element.chat_input(placeholder=\"Your message\", *, key=None, max_chars=None, disabled=False, on_submit=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\n\nprompt = st.chat_input("Say something")\nif prompt:\n    st.write(f"User has sent the following prompt: {prompt}")\n
\n\n \n
\n", - "description": "

Display a chat input widget.

\n
\n

Warning

\n

Chat input can only be used once per app page and inside the main area of the app.\nIt cannot be used in the sidebar, columns, expanders, forms or tabs.\nWe plan to support this in the future.

\n
\n", - "args": [ - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A placeholder text shown when the chat input is empty. Defaults to\n"Your message". For accessibility reasons, you should not use an\nempty string.

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget based on\nits content. Multiple widgets of the same type may not share the same key.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

The maximum number of characters that can be entered. If None\n(default), there will be no maximum.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False" - }, - { - "name": "on_submit", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when the chat input's value is submitted.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "str or None", - "is_generator": false, - "description": "

The current (non-empty) value of the text input widget on the last\nrun of the app, None otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/chat.py#L208" - }, - "DeltaGenerator.chat_message": { - "name": "chat_message", - "signature": "element.chat_message(name, *, avatar=None)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\nimport numpy as np\n\nwith st.chat_message("user"):\n    st.write("Hello \ud83d\udc4b")\n    st.line_chart(np.random.randn(30, 3))\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\nmessage = st.chat_message("assistant")\nmessage.write("Hello human")\nmessage.bar_chart(np.random.randn(30, 3))\n
\n\n \n
\n", - "description": "

Insert a chat message container.

\n

To add elements to the returned container, you can use with notation\n(preferred) or just call methods directly on the returned object. See the\nexamples below.

\n", - "args": [ - { - "name": "name", - "type_name": "\"user\", \"assistant\", or str", - "is_optional": false, - "description": "

The name of the message author. Can be \u201cuser\u201d or \u201cassistant\u201d to\nenable preset styling and avatars.

\n

Currently, the name is not shown in the UI but is only set as an\naccessibility label. For accessibility reasons, you should not use\nan empty string.

\n", - "default": null - }, - { - "name": "avatar", - "type_name": "str, numpy.ndarray, or BytesIO", - "is_optional": false, - "description": "

The avatar shown next to the message. Can be one of:

\n
    \n
  • A single emoji, e.g. "\ud83e\uddd1\u200d\ud83d\udcbb", "\ud83e\udd16", "\ud83e\udd96". Shortcodes are not supported.
  • \n
  • \n
    An image using one of the formats allowed for st.image: path of a local
    \n
    image file; URL to fetch the image from; array of shape (w,h) or (w,h,1)\nfor a monochrome image, (w,h,3) for a color image, or (w,h,4) for an RGBA image.
    \n
    \n
  • \n
\n

If None (default), uses default icons if name is "user" or\n"assistant", or the first letter of the name value.

\n", - "default": "icons" - } - ], - "returns": [ - { - "type_name": "Container", - "is_generator": false, - "description": "

A single container that can hold multiple elements.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/chat.py#L112" - }, - "DeltaGenerator.checkbox": { - "name": "checkbox", - "signature": "element.checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nagree = st.checkbox('I agree')\n\nif agree:\n    st.write('Great!')\n
\n\n \n
\n", - "description": "

Display a checkbox widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this checkbox is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "bool", - "is_optional": false, - "description": "

Preselect the checkbox when it first renders. This will be\ncast to bool internally.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the checkbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this checkbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

Whether or not the checkbox is checked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/checkbox.py#L52" - }, - "DeltaGenerator.code": { - "name": "code", - "signature": "element.code(body, language=\"python\", line_numbers=False)", - "example": "
\n
\nimport streamlit as st\n\ncode = '''def hello():\n    print("Hello, Streamlit!")'''\nst.code(code, language='python')\n
\n
\n", - "description": "

Display a code block with optional syntax highlighting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as code.

\n", - "default": null - }, - { - "name": "language", - "type_name": "str or None", - "is_optional": false, - "description": "

The language that the code is written in, for syntax highlighting.\nIf None, the code will be unstyled. Defaults to "python".

\n

For a list of available language values, see:

\n

https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD

\n", - "default": "s" - }, - { - "name": "line_numbers", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean indicating whether to show line numbers to the\nleft of the code block. Defaults to False.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/code.py#L27" - }, - "DeltaGenerator.color_picker": { - "name": "color_picker", - "signature": "element.color_picker(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ncolor = st.color_picker('Pick A Color', '#00f900')\nst.write('The current color is', color)\n
\n\n \n
\n", - "description": "

Display a color picker widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "str", - "is_optional": false, - "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the color picker.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this color_picker's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn\u2019t show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The selected color as a hex string.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/color_picker.py#L52" - }, - "DeltaGenerator.columns": { - "name": "columns", - "signature": "element.columns(spec, *, gap=\"small\")", - "examples": "
\n

You can use with notation to insert any element into a column:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\n\nwith col1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg")\n\nwith col2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg")\n\nwith col3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ncol1, col2 = st.columns([3, 1])\ndata = np.random.randn(10, 1)\n\ncol1.subheader("A wide column with a chart")\ncol1.line_chart(data)\n\ncol2.subheader("A narrow column with the data")\ncol2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers laid out as side-by-side columns.

\n

Inserts a number of multi-element containers laid out side-by-side and\nreturns a list of container objects.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n

Columns can only be placed inside other columns up to one level of nesting.

\n
\n

Warning

\n

Columns cannot be placed inside other columns in the sidebar. This is only possible in the main area of the app.

\n
\n", - "args": [ - { - "name": "spec", - "type_name": "int or iterable of numbers", - "is_optional": false, - "description": "

Controls the number and width of columns to insert. Can be one of:

\n
    \n
  • An integer that specifies the number of columns. All columns have equal\nwidth in this case.
  • \n
  • An iterable of numbers (int or float) that specify the relative width of\neach column. E.g. [0.7, 0.3] creates two columns where the first\none takes up 70% of the available with and the second one takes up 30%.\nOr [1, 2, 3] creates three columns where the second one is two times\nthe width of the first one, and the third one is three times that width.
  • \n
\n", - "default": null - }, - { - "name": "gap", - "type_name": "\"small\", \"medium\", or \"large\"", - "is_optional": false, - "description": "

The size of the gap between the columns. Defaults to "small". This\nargument can only be supplied by keyword.

\n", - "default": "s" - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L75" - }, - "DeltaGenerator.container": { - "name": "container", - "signature": "element.container()", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.container():\n   st.write("This is inside the container")\n\n   # You can call any Streamlit command, including custom components:\n   st.bar_chart(np.random.randn(50, 3))\n\nst.write("This is outside the container")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\ncontainer = st.container()\ncontainer.write("This is inside the container")\nst.write("This is outside the container")\n\n# Now insert some more in the container\ncontainer.write("This is inside too")\n
\n\n \n
\n", - "description": "

Insert a multi-element container.

\n

Inserts an invisible container into your app that can be used to hold\nmultiple elements. This allows you to, for example, insert multiple\nelements into your app out of order.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L27" - }, - "DeltaGenerator.data_editor": { - "name": "data_editor", - "signature": "element.data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/data_editor.py#L528" - }, - "DeltaGenerator.dataframe": { - "name": "dataframe", - "signature": "element.dataframe(data=None, width=None, height=None, *, use_container_width=False, hide_index=None, column_order=None, column_config=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(50, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df)  # Same as st.write(df)\n
\n\n \n

You can also pass a Pandas Styler object to change the style of\nthe rendered DataFrame:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 20),\n   columns=('col %d' % i for i in range(20)))\n\nst.dataframe(df.style.highlight_max(axis=0))\n
\n\n \n

Or you can customize the dataframe via column_config, hide_index, or column_order:

\n
\nimport random\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    {\n        "name": ["Roadmap", "Extras", "Issues"],\n        "url": ["https://roadmap.streamlit.app", "https://extras.streamlit.app", "https://issues.streamlit.app"],\n        "stars": [random.randint(0, 1000) for _ in range(3)],\n        "views_history": [[random.randint(0, 5000) for _ in range(30)] for _ in range(3)],\n    }\n)\nst.dataframe(\n    df,\n    column_config={\n        "name": "App name",\n        "stars": st.column_config.NumberColumn(\n            "Github Stars",\n            help="Number of stars on GitHub",\n            format="%d \u2b50",\n        ),\n        "url": st.column_config.LinkColumn("App URL"),\n        "views_history": st.column_config.LineChartColumn(\n            "Views (past 30 days)", y_min=0, y_max=5000\n        ),\n    },\n    hide_index=True,\n)\n
\n\n \n
\n", - "description": "

Display a dataframe as an interactive table.

\n

This command works with dataframes from Pandas, PyArrow, Snowpark, and PySpark.\nIt can also display several other types that can be converted to dataframes,\ne.g. numpy arrays, lists, sets and dictionaries.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to display.

\n

If 'data' is a pandas.Styler, it will be used to style its\nunderlying DataFrame. Streamlit supports custom cell\nvalues and colors. It does not support some of the more exotic\npandas styling features, like bar charts, hovering, and captions.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the dataframe expressed in pixels. If None, the width\nwill be automatically calculated based on the column content.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the dataframe expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the dataframe width to the width of the parent container.\nThis takes precedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat. This needs to be a dictionary where each key is a column name and\nthe value is one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L43" - }, - "DeltaGenerator.date_input": { - "name": "date_input", - "signature": "element.date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, format=\"YYYY/MM/DD\", disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport datetime\nimport streamlit as st\n\nd = st.date_input("When's your birthday", datetime.date(2019, 7, 6))\nst.write('Your birthday is:', d)\n
\n\n \n
\nimport datetime\nimport streamlit as st\n\ntoday = datetime.datetime.now()\nnext_year = today.year + 1\njan_1 = datetime.date(next_year, 1, 1)\ndec_31 = datetime.date(next_year, 12, 31)\n\nd = st.date_input(\n    "Select your vacation for next year",\n    (jan_1, datetime.date(next_year, 1, 7)),\n    jan_1,\n    dec_31,\n    format="MM.DD.YYYY",\n)\nd\n
\n\n \n
\n", - "description": "

Display a date input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this date input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.date or datetime.datetime or list/tuple of datetime.date or datetime.datetime or None", - "is_optional": false, - "description": "

The value of this widget when it first renders. If a list/tuple with\n0 to 2 date/datetime values is provided, the datepicker will allow\nusers to provide a range. Defaults to today as a single-date picker.

\n", - "default": "today" - }, - { - "name": "min_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The minimum selectable date. If value is a date, defaults to value - 10 years.\nIf value is the interval [start, end], defaults to start - 10 years.

\n", - "default": "value" - }, - { - "name": "max_value", - "type_name": "datetime.date or datetime.datetime", - "is_optional": false, - "description": "

The maximum selectable date. If value is a date, defaults to value + 10 years.\nIf value is the interval [start, end], defaults to end + 10 years.

\n", - "default": "value" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this date_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

A format string controlling how the interface should display dates.\nSupports \u201cYYYY/MM/DD\u201d (default), \u201cDD/MM/YYYY\u201d, or \u201cMM/DD/YYYY\u201d.\nYou may also use a period (.) or hyphen (-) as separators.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "datetime.date or a tuple with 0-2 dates", - "is_generator": false, - "description": "

The current value of the date input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/time_widgets.py#L402" - }, - "DeltaGenerator.dg": { - "name": "dg", - "signature": "element.dg", - "description": "

Get our DeltaGenerator.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L156" - }, - "DeltaGenerator.divider": { - "name": "divider", - "signature": "element.divider()", - "example": "
\n
\nimport streamlit as st\n\nst.divider()\n
\n
\n", - "description": "

Display a horizontal rule.

\n
\n

Note

\n

You can achieve the same effect with st.write("---") or\neven just "---" in your script (via magic).

\n
\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L244" - }, - "DeltaGenerator.download_button": { - "name": "download_button", - "signature": "element.download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False)", - "examples": "
\n

Download a large DataFrame as a CSV:

\n
\nimport streamlit as st\n\n@st.cache\ndef convert_df(df):\n    # IMPORTANT: Cache the conversion to prevent computation on every rerun\n    return df.to_csv().encode('utf-8')\n\ncsv = convert_df(my_large_df)\n\nst.download_button(\n    label="Download data as CSV",\n    data=csv,\n    file_name='large_df.csv',\n    mime='text/csv',\n)\n
\n

Download a string as a file:

\n
\nimport streamlit as st\n\ntext_contents = '''This is some text'''\nst.download_button('Download some text', text_contents)\n
\n

Download a binary file:

\n
\nimport streamlit as st\n\nbinary_contents = b'example content'\n# Defaults to 'application/octet-stream'\nst.download_button('Download binary file', binary_contents)\n
\n

Download an image:

\n
\nimport streamlit as st\n\nwith open("flower.png", "rb") as file:\n    btn = st.download_button(\n            label="Download image",\n            data=file,\n            file_name="flower.png",\n            mime="image/png"\n          )\n
\n\n \n
\n", - "description": "

Display a download button widget.

\n

This is useful when you would like to provide a way for your users\nto download a file directly from your app.

\n

Note that the data to be downloaded is stored in-memory while the\nuser is connected, so it's a good idea to keep file sizes under a\ncouple hundred megabytes to conserve memory.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, and Emojis.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "data", - "type_name": "str or bytes or file", - "is_optional": false, - "description": "

The contents of the file to be downloaded. See example below for\ncaching techniques to avoid recomputing this data unnecessarily.

\n", - "default": null - }, - { - "name": "file_name", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the name of the file to be downloaded,\nsuch as 'my_file.csv'. If not specified, the name will be\nautomatically generated.

\n", - "default": null - }, - { - "name": "mime", - "type_name": "str or None", - "is_optional": false, - "description": "

The MIME type of the data. If None, defaults to "text/plain"\n(if data is of type str or is a textual file) or\n"application/octet-stream" (if data is of type bytes or is a\nbinary file).

\n", - "default": "s" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed when the button is\nhovered over.

\n", - "default": null - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked on the last run of the app,\nFalse otherwise.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/button.py#L169" - }, - "DeltaGenerator.empty": { - "name": "empty", - "signature": "element.empty()", - "examples": "
\n

Overwriting elements in-place using "with" notation:

\n
\nimport streamlit as st\nimport time\n\nwith st.empty():\n    for seconds in range(60):\n        st.write(f"\u23f3 {seconds} seconds have passed")\n        time.sleep(1)\n    st.write("\u2714\ufe0f 1 minute over!")\n
\n

Replacing several elements, then clearing them:

\n
\nimport streamlit as st\n\nplaceholder = st.empty()\n\n# Replace the placeholder with some text:\nplaceholder.text("Hello")\n\n# Replace the text with a chart:\nplaceholder.line_chart({"data": [1, 5, 2, 6]})\n\n# Replace the chart with several elements:\nwith placeholder.container():\n    st.write("This is one element")\n    st.write("This is another")\n\n# Clear all those elements:\nplaceholder.empty()\n
\n
\n", - "description": "

Insert a single-element container.

\n

Inserts a container into your app that can be used to hold a single element.\nThis allows you to, for example, remove elements at any point, or replace\nseveral elements at once (using a child multi-element container).

\n

To insert/replace/clear an element on the returned container, you can\nuse "with" notation or just call methods directly on the returned object.\nSee examples below.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/empty.py#L24" - }, - "DeltaGenerator.error": { - "name": "error", - "signature": "element.error(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.error('This is an error', icon="\ud83d\udea8")\n
\n
\n", - "description": "

Display error message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The error text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L27" - }, - "DeltaGenerator.exception": { - "name": "exception", - "signature": "element.exception(exception)", - "example": "
\n
\nimport streamlit as st\n\ne = RuntimeError('This is an exception of type RuntimeError')\nst.exception(e)\n
\n
\n", - "description": "

Display an exception.

\n", - "args": [ - { - "name": "exception", - "type_name": "Exception", - "is_optional": false, - "description": "

The exception to display.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/exception.py#L50" - }, - "DeltaGenerator.expander": { - "name": "expander", - "signature": "element.expander(label, expanded=False)", - "examples": "
\n

You can use with notation to insert any element into an expander

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nwith st.expander("See explanation"):\n    st.write(\\"\\"\\"\n        The chart above shows some numbers I picked for you.\n        I rolled actual dice for these, so they're *guaranteed* to\n        be random.\n    \\"\\"\\")\n    st.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\n\nst.bar_chart({"data": [1, 5, 2, 6, 2, 1]})\n\nexpander = st.expander("See explanation")\nexpander.write(\\"\\"\\"\n    The chart above shows some numbers I picked for you.\n    I rolled actual dice for these, so they're *guaranteed* to\n    be random.\n\\"\\"\\")\nexpander.image("https://static.streamlit.io/examples/dice.jpg")\n
\n\n \n
\n", - "description": "

Insert a multi-element container that can be expanded/collapsed.

\n

Inserts a container into your app that can be used to hold multiple elements\nand can be expanded or collapsed by the user. When collapsed, all that is\nvisible is the provided label.

\n

To add elements to the returned container, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

Currently, you may not put expanders inside another expander.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A string to use as the header for the expander. The label can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

If True, initializes the expander in "expanded" state. Defaults to\nFalse (collapsed).

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L315" - }, - "DeltaGenerator.experimental_data_editor": { - "name": "experimental_data_editor", - "signature": "element.experimental_data_editor(data, *, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows=\"fixed\", disabled=False, key=None, on_change=None, args=None, kwargs=None)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

You can also allow the user to add and delete rows by setting num_rows to "dynamic":

\n
\nimport streamlit as st\nimport pandas as pd\n\ndf = pd.DataFrame(\n    [\n       {"command": "st.selectbox", "rating": 4, "is_widget": True},\n       {"command": "st.balloons", "rating": 5, "is_widget": False},\n       {"command": "st.time_input", "rating": 3, "is_widget": True},\n   ]\n)\nedited_df = st.data_editor(df, num_rows="dynamic")\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n

Or you can customize the data editor via column_config, hide_index, column_order, or disabled:

\n
\nimport pandas as pd\nimport streamlit as st\n\ndf = pd.DataFrame(\n    [\n        {"command": "st.selectbox", "rating": 4, "is_widget": True},\n        {"command": "st.balloons", "rating": 5, "is_widget": False},\n        {"command": "st.time_input", "rating": 3, "is_widget": True},\n    ]\n)\nedited_df = st.data_editor(\n    df,\n    column_config={\n        "command": "Streamlit Command",\n        "rating": st.column_config.NumberColumn(\n            "Your rating",\n            help="How much do you like this command (1-5)?",\n            min_value=1,\n            max_value=5,\n            step=1,\n            format="%d \u2b50",\n        ),\n        "is_widget": "Widget ?",\n    },\n    disabled=["command", "is_widget"],\n    hide_index=True,\n)\n\nfavorite_command = edited_df.loc[edited_df["rating"].idxmax()]["command"]\nst.markdown(f"Your favorite command is **{favorite_command}** \ud83c\udf88")\n
\n\n \n
\n", - "description": "

Display a data editor widget.

\n

The data editor widget allows you to edit dataframes and many other data structures in a table-like UI.

\n
\n

Warning

\n

When going from st.experimental_data_editor to st.data_editor in\n1.23.0, the data editor's representation in st.session_state was changed.\nThe edited_cells dictionary is now called edited_rows and uses a\ndifferent format ({0: {"column name": "edited value"}} instead of\n{"0:1": "edited value"}). You may need to adjust the code if your app uses\nst.experimental_data_editor in combination with st.session_state."

\n
\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Series, pandas.Styler, pandas.Index, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.DataFrame, list, set, tuple, dict, or None", - "is_optional": false, - "description": "

The data to edit in the data editor.

\n
\n

Note

\n
    \n
  • Styles from pandas.Styler will only be applied to non-editable columns.
  • \n
  • Mixing data types within a column can make the column uneditable.
  • \n
  • Additionally, the following data types are not yet supported for editing:\ncomplex, list, tuple, bytes, bytearray, memoryview, dict, set, frozenset,\ndatetime.timedelta, decimal.Decimal, fractions.Fraction, pandas.Interval,\npandas.Period, pandas.Timedelta.
  • \n
\n
\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired width of the data editor expressed in pixels. If None, the width will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the data editor expressed in pixels. If None, the height will\nbe automatically determined.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" - }, - { - "name": "hide_index", - "type_name": "bool or None", - "is_optional": false, - "description": "

Whether to hide the index column(s). If None (default), the visibility of\nindex columns is automatically determined based on the data.

\n", - "default": null - }, - { - "name": "column_order", - "type_name": "iterable of str or None", - "is_optional": false, - "description": "

Specifies the display order of columns. This also affects which columns are\nvisible. For example, column_order=("col2", "col1") will display 'col2'\nfirst, followed by 'col1', and will hide all other non-index columns. If\nNone (default), the order is inherited from the original data structure.

\n", - "default": null - }, - { - "name": "column_config", - "type_name": "dict or None", - "is_optional": false, - "description": "

Configures how columns are displayed, e.g. their title, visibility, type, or\nformat, as well as editing properties such as min/max value or step.\nThis needs to be a dictionary where each key is a column name and the value\nis one of:

\n
    \n
  • None to hide the column.
  • \n
  • A string to set the display label of the column.
  • \n
  • One of the column types defined under st.column_config, e.g.\nst.column_config.NumberColumn("Dollar values\u201d, format=\u201d$ %d") to show\na column as dollar amounts. See more info on the available column types\nand config options here.
  • \n
\n

To configure the index column(s), use _index as the column name.

\n", - "default": null - }, - { - "name": "num_rows", - "type_name": "\"fixed\" or \"dynamic\"", - "is_optional": false, - "description": "

Specifies if the user can add and delete rows in the data editor.\nIf "fixed", the user cannot add or delete rows. If "dynamic", the user can\nadd and delete rows in the data editor, but column sorting is disabled.\nDefaults to "fixed".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool or iterable of str", - "is_optional": false, - "description": "

Controls the editing of columns. If True, editing is disabled for all columns.\nIf an iterable of column names is provided (e.g., disabled=("col1", "col2")),\nonly the specified columns will be disabled for editing. If False (default),\nall columns that support editing are editable.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

An optional string to use as the unique key for this widget. If this\nis omitted, a key will be generated for the widget based on its\ncontent. Multiple widgets of the same type may not share the same\nkey.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this data_editor's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "pandas.DataFrame, pandas.Series, pyarrow.Table, numpy.ndarray, list, set, tuple, or dict.", - "is_generator": false, - "description": "

The edited data. The edited data is returned in its original data type if\nit corresponds to any of the supported return types. All other data types\nare returned as a pd.DataFrame.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/data_editor.py#L528" - }, - "DeltaGenerator.file_uploader": { - "name": "file_uploader", - "signature": "element.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n

Insert a file uploader that accepts a single file at a time:

\n
\nimport streamlit as st\nimport pandas as pd\nfrom io import StringIO\n\nuploaded_file = st.file_uploader("Choose a file")\nif uploaded_file is not None:\n    # To read file as bytes:\n    bytes_data = uploaded_file.getvalue()\n    st.write(bytes_data)\n\n    # To convert to a string based IO:\n    stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))\n    st.write(stringio)\n\n    # To read file as string:\n    string_data = stringio.read()\n    st.write(string_data)\n\n    # Can be used wherever a "file-like" object is accepted:\n    dataframe = pd.read_csv(uploaded_file)\n    st.write(dataframe)\n
\n

Insert a file uploader that accepts multiple files at a time:

\n
\nimport streamlit as st\n\nuploaded_files = st.file_uploader("Choose a CSV file", accept_multiple_files=True)\nfor uploaded_file in uploaded_files:\n    bytes_data = uploaded_file.read()\n    st.write("filename:", uploaded_file.name)\n    st.write(bytes_data)\n
\n\n \n
\n", - "description": "

Display a file uploader widget.

\n

By default, uploaded files are limited to 200MB. You can configure\nthis using the server.maxUploadSize config option. For more info\non how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration#set-configuration-options

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this file uploader is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "type", - "type_name": "str or list of str or None", - "is_optional": false, - "description": "

Array of allowed extensions. ['png', 'jpg']\nThe default is None, which means all extensions are allowed.

\n", - "default": "None" - }, - { - "name": "accept_multiple_files", - "type_name": "bool", - "is_optional": false, - "description": "

If True, allows the user to upload multiple files at the same time,\nin which case the return value will be a list of files.\nDefault: False

\n", - "default": "False" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

A tooltip that gets displayed next to the file uploader.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this file_uploader's value\nchanges.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "None or UploadedFile or list of UploadedFile", - "is_generator": false, - "description": "
    \n
  • If accept_multiple_files is False, returns either None or\nan UploadedFile object.
  • \n
  • If accept_multiple_files is True, returns a list with the\nuploaded files as UploadedFile objects. If no files were\nuploaded, returns an empty list.
  • \n
\n

The UploadedFile class is a subclass of BytesIO, and therefore\nit is "file-like". This means you can pass them anywhere where\na file is expected.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/file_uploader.py#L214" - }, - "DeltaGenerator.form": { - "name": "form", - "signature": "element.form(key, clear_on_submit=False)", - "examples": "
\n

Inserting elements using "with" notation:

\n
\nimport streamlit as st\n\nwith st.form("my_form"):\n   st.write("Inside the form")\n   slider_val = st.slider("Form slider")\n   checkbox_val = st.checkbox("Form checkbox")\n\n   # Every form must have a submit button.\n   submitted = st.form_submit_button("Submit")\n   if submitted:\n       st.write("slider", slider_val, "checkbox", checkbox_val)\n\nst.write("Outside the form")\n
\n\n \n

Inserting elements out of order:

\n
\nimport streamlit as st\n\nform = st.form("my_form")\nform.slider("Inside the form")\nst.slider("Outside the form")\n\n# Now add a submit button to the form:\nform.form_submit_button("Submit")\n
\n\n \n
\n", - "description": "

Create a form that batches elements together with a "Submit" button.

\n

A form is a container that visually groups other elements and\nwidgets together, and contains a Submit button. When the form's\nSubmit button is pressed, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

To add elements to a form object, you can use "with" notation\n(preferred) or just call methods directly on the form. See\nexamples below.

\n

Forms have a few constraints:

\n
    \n
  • Every form must contain a st.form_submit_button.
  • \n
  • st.button and st.download_button cannot be added to a form.
  • \n
  • Forms can appear anywhere in your app (sidebar, columns, etc),\nbut they cannot be embedded inside other forms.
  • \n
  • Within a form, the only widget that can have a callback function is\nst.form_submit_button.
  • \n
\n", - "args": [ - { - "name": "key", - "type_name": "str", - "is_optional": false, - "description": "

A string that identifies the form. Each form must have its own\nkey. (This key is not displayed to the user in the interface.)

\n", - "default": null - }, - { - "name": "clear_on_submit", - "type_name": "bool", - "is_optional": false, - "description": "

If True, all widgets inside the form will be reset to their default\nvalues after the user presses the Submit button. Defaults to False.\n(Note that Custom Components are unaffected by this flag, and\nwill not be reset to their defaults on form submission.)

\n", - "default": "values" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/form.py#L118" - }, - "DeltaGenerator.form_submit_button": { - "name": "form_submit_button", - "signature": "element.form_submit_button(label=\"Submit\", help=None, on_click=None, args=None, kwargs=None, *, type=\"secondary\", disabled=False, use_container_width=False)", - "description": "

Display a form submit button.

\n

When this button is clicked, all widget values inside the form will be\nsent to Streamlit in a batch.

\n

Every form must have a form_submit_button. A form_submit_button\ncannot exist outside a form.

\n

For more information about forms, check out our\nblog post.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this button is for.\nDefaults to "Submit".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str or None", - "is_optional": false, - "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" - }, - { - "name": "on_click", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this button is clicked.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"secondary\" or \"primary\"", - "is_optional": false, - "description": "

An optional string that specifies the button type. Can be "primary" for a\nbutton with additional emphasis or "secondary" for a normal button. This\nargument can only be supplied by keyword. Defaults to "secondary".

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which makes the button stretch its width to match the parent container.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "bool", - "is_generator": false, - "description": "

True if the button was clicked.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/form.py#L218" - }, - "DeltaGenerator.graphviz_chart": { - "name": "graphviz_chart", - "signature": "element.graphviz_chart(figure_or_dot, use_container_width=False)", - "example": "
\n
\nimport streamlit as st\nimport graphviz\n\n# Create a graphlib graph object\ngraph = graphviz.Digraph()\ngraph.edge('run', 'intr')\ngraph.edge('intr', 'runbl')\ngraph.edge('runbl', 'run')\ngraph.edge('run', 'kernel')\ngraph.edge('kernel', 'zombie')\ngraph.edge('kernel', 'sleep')\ngraph.edge('kernel', 'runmem')\ngraph.edge('sleep', 'swap')\ngraph.edge('swap', 'runswap')\ngraph.edge('runswap', 'new')\ngraph.edge('runswap', 'runmem')\ngraph.edge('new', 'runmem')\ngraph.edge('sleep', 'runmem')\n\nst.graphviz_chart(graph)\n
\n

Or you can render the chart from the graph using GraphViz's Dot\nlanguage:

\n
\nst.graphviz_chart('''\n    digraph {\n        run -> intr\n        intr -> runbl\n        runbl -> run\n        run -> kernel\n        kernel -> zombie\n        kernel -> sleep\n        kernel -> runmem\n        sleep -> swap\n        swap -> runswap\n        runswap -> new\n        runswap -> runmem\n        new -> runmem\n        sleep -> runmem\n    }\n''')\n
\n\n \n
\n", - "description": "

Display a graph using the dagre-d3 library.

\n", - "args": [ - { - "name": "figure_or_dot", - "type_name": "graphviz.dot.Graph, graphviz.dot.Digraph, str", - "is_optional": false, - "description": "

The Graphlib graph object or dot string to display

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/graphviz_chart.py#L39" - }, - "DeltaGenerator.header": { - "name": "header", - "signature": "element.header(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.header('This is a header')\nst.header('A header with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in header formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the header.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/heading.py#L40" - }, - "DeltaGenerator.help": { - "name": "help", - "signature": "element.help(obj=)", - "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", - "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", - "args": [ - { - "name": "obj", - "type_name": "any", - "is_optional": false, - "description": "

The object whose information should be displayed. If left\nunspecified, this call will display help for Streamlit itself.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/doc_string.py#L48" - }, - "DeltaGenerator.id": { - "name": "id", - "signature": "element.id" - }, - "DeltaGenerator.image": { - "name": "image", - "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", - "example": "
\n
\nimport streamlit as st\nfrom PIL import Image\n\nimage = Image.open('sunrise.jpg')\n\nst.image(image, caption='Sunrise by the mountains')\n
\n\n \n
\n", - "description": "

Display an image or list of images.

\n", - "args": [ - { - "name": "image", - "type_name": "numpy.ndarray, [numpy.ndarray], BytesIO, str, or [str]", - "is_optional": false, - "description": "

Monochrome image of shape (w,h) or (w,h,1)\nOR a color image of shape (w,h,3)\nOR an RGBA image of shape (w,h,4)\nOR a URL to fetch the image from\nOR a path of a local image file\nOR an SVG XML string like <svg xmlns=...</svg>\nOR a list of one of the above, to display multiple images.

\n", - "default": null - }, - { - "name": "caption", - "type_name": "str or list of str", - "is_optional": false, - "description": "

Image caption. If displaying multiple images, caption should be a\nlist of captions (one for each image).

\n", - "default": null - }, - { - "name": "width", - "type_name": "int or None", - "is_optional": false, - "description": "

Image width. None means use the image width,\nbut do not exceed the width of the column.\nShould be set for SVG images, as they have no default image width.

\n", - "default": "image" - }, - { - "name": "use_column_width", - "type_name": "\"auto\", \"always\", \"never\", or bool", - "is_optional": false, - "description": "

If "auto", set the image's width to its natural size,\nbut do not exceed the width of the column.\nIf "always" or True, set the image's width to the column width.\nIf "never" or False, set the image's width to its natural size.\nNote: if set, use_column_width takes precedence over the width parameter.

\n", - "default": null - }, - { - "name": "clamp", - "type_name": "bool", - "is_optional": false, - "description": "

Clamp image pixel values to a valid range ([0-255] per channel).\nThis is only meaningful for byte array images; the parameter is\nignored for image URLs. If this is not set, and an image has an\nout-of-range value, an error will be thrown.

\n", - "default": null - }, - { - "name": "channels", - "type_name": "\"RGB\" or \"BGR\"", - "is_optional": false, - "description": "

If image is an nd.array, this parameter denotes the format used to\nrepresent color information. Defaults to "RGB", meaning\nimage[:, :, 0] is the red channel, image[:, :, 1] is green, and\nimage[:, :, 2] is blue. For images coming from libraries like\nOpenCV you should set this to "BGR", instead.

\n", - "default": "s" - }, - { - "name": "output_format", - "type_name": "\"JPEG\", \"PNG\", or \"auto\"", - "is_optional": false, - "description": "

This parameter specifies the format to use when transferring the\nimage data. Photos should use the JPEG format for lossy compression\nwhile diagrams should use the PNG format for lossless compression.\nDefaults to "auto" which identifies the compression type based\non the type and format of the image argument.

\n", - "default": "s" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/image.py#L88" - }, - "DeltaGenerator.info": { - "name": "info", - "signature": "element.info(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.info('This is a purely informational message', icon="\u2139\ufe0f")\n
\n
\n", - "description": "

Display an informational message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The info text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L91" - }, - "DeltaGenerator.json": { - "name": "json", - "signature": "element.json(body, *, expanded=True)", - "example": "
\n
\nimport streamlit as st\n\nst.json({\n    'foo': 'bar',\n    'baz': 'boz',\n    'stuff': [\n        'stuff 1',\n        'stuff 2',\n        'stuff 3',\n        'stuff 5',\n    ],\n})\n
\n\n \n
\n", - "description": "

Display object or string as a pretty-printed JSON string.

\n", - "args": [ - { - "name": "body", - "type_name": "object or str", - "is_optional": false, - "description": "

The object to print as JSON. All referenced objects should be\nserializable to JSON as well. If object is a string, we assume it\ncontains serialized JSON.

\n", - "default": null - }, - { - "name": "expanded", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/json.py#L35" - }, - "DeltaGenerator.latex": { - "name": "latex", - "signature": "element.latex(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.latex(r'''\n    a + ar + a r^2 + a r^3 + \\cdots + a r^{n-1} =\n    \\sum_{k=0}^{n-1} ar^k =\n    a \\left(\\frac{1-r^{n}}{1-r}\\right)\n    ''')\n
\n
\n", - "description": "

Display mathematical expressions formatted as LaTeX.

\n

Supported LaTeX functions are listed at\nhttps://katex.org/docs/supported.html.

\n", - "args": [ - { - "name": "body", - "type_name": "str or SymPy expression", - "is_optional": false, - "description": "

The string or SymPy expression to display as LaTeX. If str, it's\na good idea to use raw Python strings since LaTeX uses backslashes\na lot.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the LaTeX expression.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L196" - }, - "DeltaGenerator.line_chart": { - "name": "line_chart", - "signature": "element.line_chart(data=None, *, x=None, y=None, width=0, height=0, use_container_width=True)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(20, 3),\n    columns=['a', 'b', 'c'])\n\nst.line_chart(chart_data)\n
\n\n \n
\n", - "description": "

Display a line chart.

\n

This is syntax-sugar around st.altair_chart. The main difference\nis this command uses the data's own column and indices to figure out\nthe chart's spec. As a result this is easier to use for many "just plot\nthis" scenarios, while being less customizable.

\n

If st.line_chart does not guess the data specification\ncorrectly, try specifying your desired chart using st.altair_chart.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict or None", - "is_optional": false, - "description": "

Data to be plotted.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "x", - "type_name": "str or None", - "is_optional": false, - "description": "

Column name to use for the x-axis. If None, uses the data index for the x-axis.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "y", - "type_name": "str, sequence of str, or None", - "is_optional": false, - "description": "

Column name(s) to use for the y-axis. If a sequence of strings, draws several series\non the same chart by melting your wide-format table into a long-format table behind\nthe scenes. If None, draws the data of all remaining columns as data series.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "width", - "type_name": "int", - "is_optional": false, - "description": "

The chart width in pixels. If 0, selects the width automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int", - "is_optional": false, - "description": "

The chart height in pixels. If 0, selects the height automatically.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L230" - }, - "DeltaGenerator.map": { - "name": "map", - "signature": "element.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True)", - "examples": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n    columns=['lat', 'lon'])\n\nst.map(df)\n
\n\n \n

You can also customize the size and color of the datapoints:

\n
\nst.map(df, size=20, color='#0044ff')\n
\n

And finally, you can choose different columns to use for the latitude\nand longitude components, as well as set size and color of each\ndatapoint dynamically based on other columns:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame({\n    "col1": np.random.randn(1000) / 50 + 37.76,\n    "col2": np.random.randn(1000) / 50 + -122.4,\n    "col3": np.random.randn(1000) * 100,\n    "col4": np.random.rand(1000, 4).tolist(),\n})\n\nst.map(df,\n    latitude='col1',\n    longitude='col2',\n    size='col3',\n    color='col4')\n
\n\n \n
\n", - "description": "

Display a map with a scatterplot overlaid onto it.

\n

This is a wrapper around st.pydeck_chart to quickly create\nscatterplot charts on top of a map, with auto-centering and auto-zoom.

\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The data to be plotted.

\n", - "default": null - }, - { - "name": "latitude", - "type_name": "str or None", - "is_optional": false, - "description": "

The name of the column containing the latitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the latitude data will come from any column named 'lat',\n'latitude', 'LAT', or 'LATITUDE'.

\n", - "default": null - }, - { - "name": "longitude", - "type_name": "str or None", - "is_optional": false, - "description": "

The name of the column containing the longitude coordinates of\nthe datapoints in the chart. This argument can only be supplied\nby keyword.

\n

If None, the longitude data will come from any column named 'lon',\n'longitude', 'LON', or 'LONGITUDE'.

\n", - "default": null - }, - { - "name": "color", - "type_name": "str or tuple or None", - "is_optional": false, - "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", - "default": "color" - }, - { - "name": "size", - "type_name": "str or float or None", - "is_optional": false, - "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", - "default": "size" - }, - { - "name": "zoom", - "type_name": "int", - "is_optional": false, - "description": "

Zoom level as specified in\nhttps://wiki.openstreetmap.org/wiki/Zoom_levels.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the width argument.\nThis argument can only be supplied by keyword.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/map.py#L91" - }, - "DeltaGenerator.markdown": { - "name": "markdown", - "signature": "element.markdown(body, unsafe_allow_html=False, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.markdown('Streamlit is **_really_ cool**.')\nst.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")\nst.markdown(":green[$\\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")\n
\n
\n", - "description": "

Display string formatted as Markdown.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

By default, any HTML tags found in the body will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write\nsecure HTML, so by using this argument you may be compromising your\nusers' security. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the Markdown.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/markdown.py#L31" - }, - "DeltaGenerator.metric": { - "name": "metric", - "signature": "element.metric(label, value, delta=None, delta_color=\"normal\", help=None, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nst.metric(label="Temperature", value="70 \u00b0F", delta="1.2 \u00b0F")\n
\n\n \n

st.metric looks especially nice in combination with st.columns:

\n
\nimport streamlit as st\n\ncol1, col2, col3 = st.columns(3)\ncol1.metric("Temperature", "70 \u00b0F", "1.2 \u00b0F")\ncol2.metric("Wind", "9 mph", "-8%")\ncol3.metric("Humidity", "86%", "4%")\n
\n\n \n

The delta indicator color can also be inverted or turned off:

\n
\nimport streamlit as st\n\nst.metric(label="Gas price", value=4, delta=-0.5,\n    delta_color="inverse")\n\nst.metric(label="Active developers", value=123, delta=123,\n    delta_color="off")\n
\n\n \n
\n", - "description": "

Display a metric in big bold font, with an optional indicator of how the metric changed.

\n

Tip: If you want to display a large number, it may be a good idea to\nshorten it using packages like millify\nor numerize. E.g. 1234 can be\ndisplayed as 1.2k using st.metric("Short number", millify(1234)).

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

The header or title for the metric. The label can optionally contain\nMarkdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Value of the metric. None is rendered as a long dash.

\n", - "default": null - }, - { - "name": "delta", - "type_name": "int, float, str, or None", - "is_optional": false, - "description": "

Indicator of how the metric changed, rendered with an arrow below\nthe metric. If delta is negative (int/float) or starts with a minus\nsign (str), the arrow points down and the text is red; else the\narrow points up and the text is green. If None (default), no delta\nindicator is shown.

\n", - "default": null - }, - { - "name": "delta_color", - "type_name": "\"normal\", \"inverse\", or \"off\"", - "is_optional": false, - "description": "

If "normal" (default), the delta indicator is shown as described\nabove. If "inverse", it is red when positive and green when\nnegative. This is useful when a negative change is considered\ngood, e.g. if cost decreased. If "off", delta is shown in gray\nregardless of its value.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the metric label.

\n", - "default": null - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/metric.py#L46" - }, - "DeltaGenerator.multiselect": { - "name": "multiselect", - "signature": "element.multiselect(label, options, default=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder=\"Choose an option\", disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noptions = st.multiselect(\n    'What are your favorite colors',\n    ['Green', 'Yellow', 'Red', 'Blue'],\n    ['Yellow', 'Red'])\n\nst.write('You selected:', options)\n
\n\n \n
\n", - "description": "

Display a multiselect widget.

\n

The multiselect widget starts as empty.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "default", - "type_name": "[V], V, or None", - "is_optional": false, - "description": "

List of default values. Can also be a single value.

\n", - "default": "values" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of selectbox options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe multiselect.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the multiselect.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this multiselect's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "max_selections", - "type_name": "int", - "is_optional": false, - "description": "

The max selections that can be selected at a time.\nThis argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A string to display when no options are selected. Defaults to 'Choose an option'.

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "list", - "is_generator": false, - "description": "

A list with the selected options

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/multiselect.py#L145" - }, - "DeltaGenerator.number_input": { - "name": "number_input", - "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", - "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The minimum permitted value.\nIf None, there will be no minimum.

\n", - "default": null - }, - { - "name": "max_value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The maximum permitted value.\nIf None, there will be no maximum.

\n", - "default": null - }, - { - "name": "value", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The value of this widget when it first renders.\nDefaults to min_value, or 0.0 if min_value is None

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 otherwise.\nIf the value is not specified, the format parameter will be used.

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. Output must be purely numeric. This does not impact\nthe return value. Valid formatters: %d %e %f %g %i %u

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this number_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int or float", - "is_generator": false, - "description": "

The current value of the numeric input widget. The return type\nwill match the data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/number_input.py#L66" - }, - "DeltaGenerator.plotly_chart": { - "name": "plotly_chart", - "signature": "element.plotly_chart(figure_or_data, use_container_width=False, sharing=\"streamlit\", theme=\"streamlit\", **kwargs)", - "example": "
\n

The example below comes straight from the examples at\nhttps://plot.ly/python:

\n
\nimport streamlit as st\nimport numpy as np\nimport plotly.figure_factory as ff\n\n# Add histogram data\nx1 = np.random.randn(200) - 2\nx2 = np.random.randn(200)\nx3 = np.random.randn(200) + 2\n\n# Group data together\nhist_data = [x1, x2, x3]\n\ngroup_labels = ['Group 1', 'Group 2', 'Group 3']\n\n# Create distplot with custom bin_size\nfig = ff.create_distplot(\n        hist_data, group_labels, bin_size=[.1, .25, .5])\n\n# Plot!\nst.plotly_chart(fig, use_container_width=True)\n
\n\n \n
\n", - "description": "

Display an interactive Plotly chart.

\n

Plotly is a charting library for Python. The arguments to this function\nclosely follow the ones for Plotly's plot() function. You can find\nmore about Plotly at https://plot.ly/python.

\n

To show Plotly charts in Streamlit, call st.plotly_chart wherever you\nwould call Plotly's py.plot or py.iplot.

\n", - "args": [ - { - "name": "figure_or_data", - "type_name": "plotly.graph_objs.Figure, plotly.graph_objs.Data,", - "is_optional": false, - "description": "

dict/list of plotly.graph_objs.Figure/Data

\n

See https://plot.ly/python/ for examples of graph descriptions.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over the figure's native width value.

\n", - "default": null - }, - { - "name": "sharing", - "type_name": "\"streamlit\", \"private\", \"secret\", or \"public\"", - "is_optional": false, - "description": "

Use "streamlit" to insert the plot and all its dependencies\ndirectly in the Streamlit app using plotly's offline mode (default).\nUse any other sharing mode to send the chart to Plotly chart studio, which\nrequires an account. See https://plot.ly/python/chart-studio/ for more information.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": null, - "is_optional": null, - "description": "

Any argument accepted by Plotly's plot() function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/plotly_chart.py#L81" - }, - "DeltaGenerator.progress": { - "name": "progress", - "signature": "element.progress(value, text=None)", - "example": "
\n

Here is an example of a progress bar increasing over time:

\n
\nimport streamlit as st\nimport time\n\nprogress_text = "Operation in progress. Please wait."\nmy_bar = st.progress(0, text=progress_text)\n\nfor percent_complete in range(100):\n    time.sleep(0.1)\n    my_bar.progress(percent_complete + 1, text=progress_text)\n
\n
\n", - "description": "

Display a progress bar.

\n", - "args": [ - { - "name": "value", - "type_name": "int or float", - "is_optional": false, - "description": "

0 <= value <= 100 for int

\n

0.0 <= value <= 1.0 for float

\n", - "default": null - }, - { - "name": "text", - "type_name": "str or None", - "is_optional": false, - "description": "

A message to display above the progress bar. The text can optionally\ncontain Markdown and supports the following elements: Bold, Italics,\nStrikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/progress.py#L66" - }, - "DeltaGenerator.pydeck_chart": { - "name": "pydeck_chart", - "signature": "element.pydeck_chart(pydeck_obj=None, use_container_width=False)", - "example": "
\n

Here's a chart using a HexagonLayer and a ScatterplotLayer. It uses either the\nlight or dark map style, based on which Streamlit theme is currently active:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport pydeck as pdk\n\nchart_data = pd.DataFrame(\n   np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],\n   columns=['lat', 'lon'])\n\nst.pydeck_chart(pdk.Deck(\n    map_style=None,\n    initial_view_state=pdk.ViewState(\n        latitude=37.76,\n        longitude=-122.4,\n        zoom=11,\n        pitch=50,\n    ),\n    layers=[\n        pdk.Layer(\n           'HexagonLayer',\n           data=chart_data,\n           get_position='[lon, lat]',\n           radius=200,\n           elevation_scale=4,\n           elevation_range=[0, 1000],\n           pickable=True,\n           extruded=True,\n        ),\n        pdk.Layer(\n            'ScatterplotLayer',\n            data=chart_data,\n            get_position='[lon, lat]',\n            get_color='[200, 30, 0, 160]',\n            get_radius=200,\n        ),\n    ],\n))\n
\n\n \n
\n

Note

\n

To make the PyDeck chart's style consistent with Streamlit's theme,\nyou can set map_style=None in the pydeck.Deck object.

\n
\n
\n", - "description": "

Draw a chart using the PyDeck library.

\n

This supports 3D maps, point clouds, and more! More info about PyDeck\nat https://deckgl.readthedocs.io/en/latest/.

\n

These docs are also quite useful:

\n\n

When using this command, Mapbox provides the map tiles to render map\ncontent. Note that Mapbox is a third-party product, the use of which is\ngoverned by Mapbox's Terms of Use.

\n

Mapbox requires users to register and provide a token before users can\nrequest map tiles. Currently, Streamlit provides this token for you, but\nthis could change at any time. We strongly recommend all users create and\nuse their own personal Mapbox token to avoid any disruptions to their\nexperience. You can do this with the mapbox.token config option.

\n

To get a token for yourself, create an account at https://mapbox.com.\nFor more info on how to set config options, see\nhttps://docs.streamlit.io/library/advanced-features/configuration

\n", - "args": [ - { - "name": "pydeck_obj", - "type_name": "pydeck.Deck or None", - "is_optional": false, - "description": "

Object specifying the PyDeck chart to draw.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/deck_gl_json_chart.py#L36" - }, - "DeltaGenerator.pyplot": { - "name": "pyplot", - "signature": "element.pyplot(fig=None, clear_figure=None, use_container_width=True, **kwargs)", - "notes": "
\n
\n

Note

\n

Deprecation warning. After December 1st, 2020, we will remove the ability\nto specify no arguments in st.pyplot(), as that requires the use of\nMatplotlib's global figure object, which is not thread-safe. So\nplease always pass a figure object as shown in the example section\nabove.

\n
\n

Matplotlib supports several types of "backends". If you're getting an\nerror using Matplotlib with Streamlit, try setting your backend to "TkAgg":

\n
\necho "backend: TkAgg" >> ~/.matplotlib/matplotlibrc\n
\n

For more information, see https://matplotlib.org/faq/usage_faq.html.

\n
\n", - "example": "
\n
\nimport streamlit as st\nimport matplotlib.pyplot as plt\nimport numpy as np\n\narr = np.random.normal(1, 1, size=100)\nfig, ax = plt.subplots()\nax.hist(arr, bins=20)\n\nst.pyplot(fig)\n
\n\n \n
\n", - "description": "

Display a matplotlib.pyplot figure.

\n", - "args": [ - { - "name": "fig", - "type_name": "Matplotlib Figure", - "is_optional": false, - "description": "

The figure to plot. When this argument isn't specified, this\nfunction will render the global figure (but this is deprecated,\nas described below)

\n", - "default": null - }, - { - "name": "clear_figure", - "type_name": "bool", - "is_optional": false, - "description": "

If True, the figure will be cleared after being rendered.\nIf False, the figure will not be cleared after being rendered.\nIf left unspecified, we pick a default based on the value of fig.

\n
    \n
  • If fig is set, defaults to False.
  • \n
  • If fig is not set, defaults to True. This simulates Jupyter's\napproach to matplotlib rendering.
  • \n
\n", - "default": "based" - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. Defaults to True.

\n", - "default": "s" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Arguments to pass to Matplotlib's savefig function.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/pyplot.py#L38" - }, - "DeltaGenerator.radio": { - "name": "radio", - "signature": "element.radio(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, horizontal=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ngenre = st.radio(\n    "What\\'s your favorite movie genre",\n    ('Comedy', 'Drama', 'Documentary'))\n\nif genre == 'Comedy':\n    st.write('You selected comedy.')\nelse:\n    st.write("You didn\\'t select comedy.")\n
\n\n \n
\n", - "description": "

Display a radio button widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this radio group is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the radio options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of radio options. It receives\nthe raw option as an argument and should output the label to be\nshown for that option. This has no impact on the return value of\nthe radio.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the radio.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this radio's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" - }, - { - "name": "horizontal", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which orients the radio group horizontally.\nThe default is false (vertical buttons). This argument can only\nbe supplied by keyword.

\n", - "default": "false" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/radio.py#L75" - }, - "DeltaGenerator.select_slider": { - "name": "select_slider", - "signature": "element.select_slider(label, options=(), value=None, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\nimport streamlit as st\n\ncolor = st.select_slider(\n    'Select a color of the rainbow',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\nst.write('My favorite color is', color)\n
\n

And here's an example of a range select slider:

\n
\nimport streamlit as st\n\nstart_color, end_color = st.select_slider(\n    'Select a range of color wavelength',\n    options=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],\n    value=('red', 'blue'))\nst.write('You selected wavelengths between', start_color, 'and', end_color)\n
\n\n \n ", - "description": "

Display a slider widget to select items from a list.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.select_slider and st.slider is that\nselect_slider accepts any datatype and takes an iterable set of\noptions, while slider only accepts numerical or date/time data and\ntakes a range as input.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to first option.

\n", - "default": "first" - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels from the options.\nargument. It receives the option as an argument and its output\nwill be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the select slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this select_slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any value or tuple of any value", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/select_slider.py#L106" - }, - "DeltaGenerator.selectbox": { - "name": "selectbox", - "signature": "element.selectbox(label, options, index=0, format_func=special_internal_function, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=\"Select...\", disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\noption = st.selectbox(\n    'How would you like to be contacted?',\n    ('Email', 'Home phone', 'Mobile phone'))\n\nst.write('You selected:', option)\n
\n\n \n
\n", - "description": "

Display a select widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this select widget is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "options", - "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", - "is_optional": false, - "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null - }, - { - "name": "index", - "type_name": "int", - "is_optional": false, - "description": "

The index of the preselected option on first render.

\n", - "default": null - }, - { - "name": "format_func", - "type_name": "function", - "is_optional": false, - "description": "

Function to modify the display of the labels. It receives the option\nas an argument and its output will be cast to str.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the selectbox.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this selectbox's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str", - "is_optional": false, - "description": "

A string to display when no options are selected. Defaults to 'Select...'.

\n

A selectbox can't be empty, so a placeholder only displays while a\nuser's cursor is in a selectbox after manually deleting the current\nselection. A future update will allow selectboxes to be empty.

\n", - "default": "s" - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "any", - "is_generator": false, - "description": "

The selected option

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/selectbox.py#L71" - }, - "DeltaGenerator.slider": { - "name": "slider", - "signature": "element.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", - "examples": "
\n
\nimport streamlit as st\n\nage = st.slider('How old are you?', 0, 130, 25)\nst.write("I'm ", age, 'years old')\n
\n

And here's an example of a range slider:

\n
\nimport streamlit as st\n\nvalues = st.slider(\n    'Select a range of values',\n    0.0, 100.0, (25.0, 75.0))\nst.write('Values:', values)\n
\n

This is a range time slider:

\n
\nimport streamlit as st\nfrom datetime import time\n\nappointment = st.slider(\n    "Schedule your appointment:",\n    value=(time(11, 30), time(12, 45)))\nst.write("You're scheduled for:", appointment)\n
\n

Finally, a datetime slider:

\n
\nimport streamlit as st\nfrom datetime import datetime\n\nstart_time = st.slider(\n    "When do you start?",\n    value=datetime(2020, 1, 1, 9, 30),\n    format="MM/DD/YY - hh:mm")\nst.write("Start time:", start_time)\n
\n\n \n
\n", - "description": "

Display a slider widget.

\n

This supports int, float, date, time, and datetime types.

\n

This also allows you to render a range slider by passing a two-element\ntuple or list as the value.

\n

The difference between st.slider and st.select_slider is that\nslider only accepts numerical or date/time data and takes a range as\ninput, while select_slider accepts any datatype and takes an iterable\nset of options.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this slider is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "min_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The minimum permitted value.\nDefaults to 0 if the value is an int, 0.0 if a float,\nvalue - timedelta(days=14) if a date/datetime, time.min if a time

\n", - "default": "0" - }, - { - "name": "max_value", - "type_name": "a supported type or None", - "is_optional": false, - "description": "

The maximum permitted value.\nDefaults to 100 if the value is an int, 1.0 if a float,\nvalue + timedelta(days=14) if a date/datetime, time.max if a time

\n", - "default": "100" - }, - { - "name": "value", - "type_name": "a supported type or a tuple/list of supported types or None", - "is_optional": false, - "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" - }, - { - "name": "step", - "type_name": "int, float, timedelta, or None", - "is_optional": false, - "description": "

The stepping interval.\nDefaults to 1 if the value is an int, 0.01 if a float,\ntimedelta(days=1) if a date/datetime, timedelta(minutes=15) if a time\n(or if max_value - min_value < 1 day)

\n", - "default": "1" - }, - { - "name": "format", - "type_name": "str or None", - "is_optional": false, - "description": "

A printf-style format string controlling how the interface should\ndisplay numbers. This does not impact the return value.\nFormatter for int/float supports: %d %e %f %g %i\nFormatter for date/time/datetime uses Moment.js notation:\nhttps://momentjs.com/docs/#/displaying/format/

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the slider.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this slider's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "int/float/date/time/datetime or tuple of int/float/date/time/datetime", - "is_generator": false, - "description": "

The current value of the slider widget. The return type will match\nthe data type of the value parameter.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/slider.py#L172" - }, - "DeltaGenerator.snow": { - "name": "snow", - "signature": "element.snow()", - "example": "
\n
\nimport streamlit as st\n\nst.snow()\n
\n

...then watch your app and get ready for a cool celebration!

\n
\n", - "description": "

Draw celebratory snowfall.

\n", - "args": [], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/snow.py#L25" - }, - "DeltaGenerator.subheader": { - "name": "subheader", - "signature": "element.subheader(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.subheader('This is a subheader')\nst.subheader('A subheader with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in subheader formatting.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the subheader.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/heading.py#L93" - }, - "DeltaGenerator.success": { - "name": "success", - "signature": "element.success(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.success('This is a success message!', icon="\u2705")\n
\n
\n", - "description": "

Display a success message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The success text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L124" - }, - "DeltaGenerator.table": { - "name": "table", - "signature": "element.table(data=None)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\ndf = pd.DataFrame(\n   np.random.randn(10, 5),\n   columns=('col %d' % i for i in range(5)))\n\nst.table(df)\n
\n\n \n
\n", - "description": "

Display a static table.

\n

This differs from st.dataframe in that the table in this case is\nstatic: its entire contents are laid out directly on the page.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, snowflake.snowpark.table.Table, Iterable, dict, or None", - "is_optional": false, - "description": "

The table data.\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L192" - }, - "DeltaGenerator.tabs": { - "name": "tabs", - "signature": "element.tabs(tabs)", - "examples": "
\n

You can use with notation to insert any element into a tab:

\n
\nimport streamlit as st\n\ntab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])\n\nwith tab1:\n   st.header("A cat")\n   st.image("https://static.streamlit.io/examples/cat.jpg", width=200)\n\nwith tab2:\n   st.header("A dog")\n   st.image("https://static.streamlit.io/examples/dog.jpg", width=200)\n\nwith tab3:\n   st.header("An owl")\n   st.image("https://static.streamlit.io/examples/owl.jpg", width=200)\n
\n\n \n

Or you can just call methods directly in the returned objects:

\n
\nimport streamlit as st\nimport numpy as np\n\ntab1, tab2 = st.tabs(["\ud83d\udcc8 Chart", "\ud83d\uddc3 Data"])\ndata = np.random.randn(10, 1)\n\ntab1.subheader("A tab with a chart")\ntab1.line_chart(data)\n\ntab2.subheader("A tab with the data")\ntab2.write(data)\n
\n\n \n
\n", - "description": "

Insert containers separated into tabs.

\n

Inserts a number of multi-element containers as tabs.\nTabs are a navigational element that allows users to easily\nmove between groups of related content.

\n

To add elements to the returned containers, you can use "with" notation\n(preferred) or just call methods directly on the returned object. See\nexamples below.

\n
\n

Warning

\n

All the content of every tab is always sent to and rendered on the frontend.\nConditional rendering is currently not supported.

\n
\n", - "args": [ - { - "name": "tabs", - "type_name": "list of strings", - "is_optional": false, - "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null - } - ], - "returns": [ - { - "type_name": "list of containers", - "is_generator": false, - "description": "

A list of container objects.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/layouts.py#L203" - }, - "DeltaGenerator.text": { - "name": "text", - "signature": "element.text(body, *, help=None)", - "example": "
\n
\nimport streamlit as st\n\nst.text('This is some text.')\n
\n
\n", - "description": "

Write fixed-width and preformatted text.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the text.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/text.py#L27" - }, - "DeltaGenerator.text_area": { - "name": "text_area", - "signature": "element.text_area(label, value=\"\", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntxt = st.text_area('Text to analyze', '''\n    It was the best of times, it was the worst of times, it was\n    the age of wisdom, it was the age of foolishness, it was\n    the epoch of belief, it was the epoch of incredulity, it\n    was the season of Light, it was the season of Darkness, it\n    was the spring of hope, it was the winter of despair, (...)\n    ''')\nst.write('Sentiment:', run_sentiment_analysis(txt))\n
\n
\n", - "description": "

Display a multi-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "height", - "type_name": "int or None", - "is_optional": false, - "description": "

Desired height of the UI element expressed in pixels. If None, a\ndefault height is used.

\n", - "default": "height" - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Maximum number of characters allowed in text area.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the textarea.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text_area's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text area is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/text_widgets.py#L274" - }, - "DeltaGenerator.text_input": { - "name": "text_input", - "signature": "element.text_input(label, value=\"\", max_chars=None, key=None, type=\"default\", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility=\"visible\")", - "example": "
\n
\nimport streamlit as st\n\ntitle = st.text_input('Movie title', 'Life of Brian')\nst.write('The current movie title is', title)\n
\n\n \n
\n", - "description": "

Display a single-line text input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "object", - "is_optional": false, - "description": "

The text value of this widget when it first renders. This will be\ncast to str internally.

\n", - "default": null - }, - { - "name": "max_chars", - "type_name": "int or None", - "is_optional": false, - "description": "

Max number of characters allowed in text input.

\n", - "default": null - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "type", - "type_name": "\"default\" or \"password\"", - "is_optional": false, - "description": "

The type of the text input. This can be either "default" (for\na regular text input), or "password" (for a text input that\nmasks the user's typed value). Defaults to "default".

\n", - "default": "s" - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "autocomplete", - "type_name": "str", - "is_optional": false, - "description": "

An optional value that will be passed to the <input> element's\nautocomplete property. If unspecified, this value will be set to\n"new-password" for "password" inputs, and the empty string for\n"default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this text input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "placeholder", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional string displayed when the text input is empty. If None,\nno text is displayed. This argument can only be supplied by keyword.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - } - ], - "returns": [ - { - "type_name": "str", - "is_generator": false, - "description": "

The current value of the text input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/text_widgets.py#L71" - }, - "DeltaGenerator.time_input": { - "name": "time_input", - "signature": "element.time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\", step=0:15:00)", - "example": "
\n
\nimport datetime\nimport streamlit as st\n\nt = st.time_input('Set an alarm for', datetime.time(8, 45))\nst.write('Alarm is set for', t)\n
\n\n \n
\n", - "description": "

Display a time input widget.

\n", - "args": [ - { - "name": "label", - "type_name": "str", - "is_optional": false, - "description": "

A short label explaining to the user what this time input is for.\nThe label can optionally contain Markdown and supports the following\nelements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n

For accessibility reasons, you should never set an empty label (label="")\nbut hide it with label_visibility if needed. In the future, we may disallow\nempty labels by raising an exception.

\n", - "default": null - }, - { - "name": "value", - "type_name": "datetime.time/datetime.datetime", - "is_optional": false, - "description": "

The value of this widget when it first renders. This will be\ncast to str internally. Defaults to the current time.

\n", - "default": "the" - }, - { - "name": "key", - "type_name": "str or int", - "is_optional": false, - "description": "

An optional string or integer to use as the unique key for the widget.\nIf this is omitted, a key will be generated for the widget\nbased on its content. Multiple widgets of the same type may\nnot share the same key.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the input.

\n", - "default": null - }, - { - "name": "on_change", - "type_name": "callable", - "is_optional": false, - "description": "

An optional callback invoked when this time_input's value changes.

\n", - "default": null - }, - { - "name": "args", - "type_name": "tuple", - "is_optional": false, - "description": "

An optional tuple of args to pass to the callback.

\n", - "default": null - }, - { - "name": "kwargs", - "type_name": "dict", - "is_optional": false, - "description": "

An optional dict of kwargs to pass to the callback.

\n", - "default": null - }, - { - "name": "disabled", - "type_name": "bool", - "is_optional": false, - "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" - }, - { - "name": "label_visibility", - "type_name": "\"visible\", \"hidden\", or \"collapsed\"", - "is_optional": false, - "description": "

The visibility of the label. If "hidden", the label doesn't show but there\nis still empty space for it above the widget (equivalent to label="").\nIf "collapsed", both the label and the space are removed. Default is\n"visible". This argument can only be supplied by keyword.

\n", - "default": "is" - }, - { - "name": "step", - "type_name": "int or timedelta", - "is_optional": false, - "description": "

The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.\nYou can also pass a datetime.timedelta object.

\n", - "default": "900" - } - ], - "returns": [ - { - "type_name": "datetime.time", - "is_generator": false, - "description": "

The current value of the time input widget.

\n", - "return_name": null - } - ], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/time_widgets.py#L217" - }, - "DeltaGenerator.title": { - "name": "title", - "signature": "element.title(body, anchor=None, *, help=None)", - "examples": "
\n
\nimport streamlit as st\n\nst.title('This is a title')\nst.title('A title with _italics_ :blue[colors] and emojis :sunglasses:')\n
\n
\n", - "description": "

Display text in title formatting.

\n

Each document should have a single st.title(), although this is not\nenforced.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The text to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "anchor", - "type_name": "str or False", - "is_optional": false, - "description": "

The anchor name of the header that can be accessed with #anchor\nin the URL. If omitted, it generates an anchor using the body.\nIf False, the anchor is not shown in the UI.

\n", - "default": null - }, - { - "name": "help", - "type_name": "str", - "is_optional": false, - "description": "

An optional tooltip that gets displayed next to the title.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/heading.py#L146" - }, - "DeltaGenerator.toast": { - "name": "toast", - "signature": "element.toast(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.toast('Your edited image was saved!', icon='\ud83d\ude0d')\n
\n
\n", - "description": "

Display a short message, known as a notification "toast".

\n

The toast appears in the app's bottom-right corner and disappears after four seconds.

\n
\n

Warning

\n

st.toast is not compatible with Streamlit's caching and\ncannot be called within a cached function.

\n
\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The string to display as Github-flavored Markdown. Syntax\ninformation can be found at: https://github.github.com/gfm.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet.
  • \n
\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the toast. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/toast.py#L37" - }, - "DeltaGenerator.vega_lite_chart": { - "name": "vega_lite_chart", - "signature": "element.vega_lite_chart(data=None, spec=None, use_container_width=False, theme=\"streamlit\", **kwargs)", - "example": "
\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\n\nchart_data = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nst.vega_lite_chart(chart_data, {\n    'mark': {'type': 'circle', 'tooltip': True},\n    'encoding': {\n        'x': {'field': 'a', 'type': 'quantitative'},\n        'y': {'field': 'b', 'type': 'quantitative'},\n        'size': {'field': 'c', 'type': 'quantitative'},\n        'color': {'field': 'c', 'type': 'quantitative'},\n    },\n})\n
\n\n \n

Examples of Vega-Lite usage without Streamlit can be found at\nhttps://vega.github.io/vega-lite/examples/. Most of those can be easily\ntranslated to the syntax shown above.

\n
\n", - "description": "

Display a chart using the Vega-Lite library.

\n", - "args": [ - { - "name": "data", - "type_name": "pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, Iterable, dict, or None", - "is_optional": false, - "description": "

Either the data to be plotted or a Vega-Lite spec containing the\ndata (which more closely follows the Vega-Lite API).\nPyarrow tables are not supported by Streamlit's legacy DataFrame serialization\n(i.e. with config.dataFrameSerialization = "legacy").\nTo use pyarrow tables, please enable pyarrow by changing the config setting,\nconfig.dataFrameSerialization = "arrow".

\n", - "default": null - }, - { - "name": "spec", - "type_name": "dict or None", - "is_optional": false, - "description": "

The Vega-Lite spec for the chart. If the spec was already passed in\nthe previous argument, this must be set to None. See\nhttps://vega.github.io/vega-lite/docs/ for more info.

\n", - "default": null - }, - { - "name": "use_container_width", - "type_name": "bool", - "is_optional": false, - "description": "

If True, set the chart width to the column width. This takes\nprecedence over Vega-Lite's native width value.

\n", - "default": null - }, - { - "name": "theme", - "type_name": "\"streamlit\" or None", - "is_optional": false, - "description": "

The theme of the chart. Currently, we only support "streamlit" for the Streamlit\ndefined design or None to fallback to the default behavior of the library.

\n", - "default": "behavior" - }, - { - "name": "**kwargs", - "type_name": "any", - "is_optional": false, - "description": "

Same as spec, but as keywords.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/dataframe_selector.py#L545" - }, - "DeltaGenerator.video": { - "name": "video", - "signature": "element.video(data, format=\"video/mp4\", start_time=0)", - "example": "
\n
\nimport streamlit as st\n\nvideo_file = open('myvideo.mp4', 'rb')\nvideo_bytes = video_file.read()\n\nst.video(video_bytes)\n
\n\n \n
\n

Note

\n

Some videos may not display if they are encoded using MP4V (which is an export option in OpenCV), as this codec is\nnot widely supported by browsers. Converting your video to H.264 will allow the video to be displayed in Streamlit.\nSee this StackOverflow post or this\nStreamlit forum post\nfor more information.

\n
\n
\n", - "description": "

Display a video player.

\n", - "args": [ - { - "name": "data", - "type_name": "str, bytes, BytesIO, numpy.ndarray, or file", - "is_optional": false, - "description": "

Raw video data, filename, or URL pointing to a video to load.\nIncludes support for YouTube URLs.\nNumpy arrays and raw data formats must include all necessary file\nheaders to match specified file format.

\n", - "default": null - }, - { - "name": "format", - "type_name": "str", - "is_optional": false, - "description": "

The mime type for the video file. Defaults to 'video/mp4'.\nSee https://tools.ietf.org/html/rfc4281 for more info.

\n", - "default": "s" - }, - { - "name": "start_time", - "type_name": "int", - "is_optional": false, - "description": "

The time from which this element should start playing.

\n", - "default": null - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/media.py#L115" - }, - "DeltaGenerator.warning": { - "name": "warning", - "signature": "element.warning(body, *, icon=None)", - "example": "
\n
\nimport streamlit as st\n\nst.warning('This is a warning', icon="\u26a0\ufe0f")\n
\n
\n", - "description": "

Display warning message.

\n", - "args": [ - { - "name": "body", - "type_name": "str", - "is_optional": false, - "description": "

The warning text to display.

\n", - "default": null - }, - { - "name": "icon", - "type_name": "str or None", - "is_optional": false, - "description": "

An optional, keyword-only argument that specifies an emoji to use as\nthe icon for the alert. Shortcodes are not allowed, please use a\nsingle character instead. E.g. "\ud83d\udea8", "\ud83d\udd25", "\ud83e\udd16", etc.\nDefaults to None, which means no icon is displayed.

\n", - "default": "None" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/alert.py#L59" - }, - "DeltaGenerator.write": { - "name": "write", - "signature": "element.write(*args, unsafe_allow_html=False, **kwargs)", - "example": "
\n

Its basic use case is to draw Markdown-formatted text, whenever the\ninput is a string:

\n
\nimport streamlit as st\n\nst.write('Hello, *World!* :sunglasses:')\n
\n\n \n

As mentioned earlier, st.write() also accepts other data formats, such as\nnumbers, data frames, styled data frames, and assorted objects:

\n
\nimport streamlit as st\nimport pandas as pd\n\nst.write(1234)\nst.write(pd.DataFrame({\n    'first column': [1, 2, 3, 4],\n    'second column': [10, 20, 30, 40],\n}))\n
\n\n \n

Finally, you can pass in multiple arguments to do things like:

\n
\nimport streamlit as st\n\nst.write('1 + 1 = ', 2)\nst.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')\n
\n\n \n

Oh, one more thing: st.write accepts chart objects too! For example:

\n
\nimport streamlit as st\nimport pandas as pd\nimport numpy as np\nimport altair as alt\n\ndf = pd.DataFrame(\n    np.random.randn(200, 3),\n    columns=['a', 'b', 'c'])\n\nc = alt.Chart(df).mark_circle().encode(\n    x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])\n\nst.write(c)\n
\n\n \n
\n", - "description": "

Write arguments to the app.

\n

This is the Swiss Army knife of Streamlit commands: it does different\nthings depending on what you throw at it. Unlike other Streamlit commands,\nwrite() has some unique properties:

\n
    \n
  1. You can pass in multiple arguments, all of which will be written.
  2. \n
  3. Its behavior depends on the input types as follows.
  4. \n
  5. It returns None, so its "slot" in the App cannot be reused.
  6. \n
\n", - "args": [ - { - "name": "*args", - "type_name": "any", - "is_optional": false, - "description": "

One or many objects to print to the App.

\n

Arguments are handled as follows:

\n
    \n
  • \n
    write(string) : Prints the formatted Markdown string, with
    \n
    support for LaTeX expression, emoji shortcodes, and colored text.\nSee docs for st.markdown for more.
    \n
    \n
  • \n
  • write(data_frame) : Displays the DataFrame as a table.
  • \n
  • write(error) : Prints an exception specially.
  • \n
  • write(func) : Displays information about a function.
  • \n
  • write(module) : Displays information about the module.
  • \n
  • write(class) : Displays information about a class.
  • \n
  • write(dict) : Displays dict in an interactive widget.
  • \n
  • write(mpl_fig) : Displays a Matplotlib figure.
  • \n
  • write(altair) : Displays an Altair chart.
  • \n
  • write(keras) : Displays a Keras model.
  • \n
  • write(graphviz) : Displays a Graphviz graph.
  • \n
  • write(plotly_fig) : Displays a Plotly figure.
  • \n
  • write(bokeh_fig) : Displays a Bokeh figure.
  • \n
  • write(sympy_expr) : Prints SymPy expression using LaTeX.
  • \n
  • write(htmlable) : Prints _repr_html_() for the object if available.
  • \n
  • write(obj) : Prints str(obj) if otherwise unknown.
  • \n
\n", - "default": null - }, - { - "name": "unsafe_allow_html", - "type_name": "bool", - "is_optional": false, - "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" - } - ], - "returns": [], - "source": "https://github.com/streamlit/streamlit/blob/1.25.0/lib/streamlit/elements/write.py#L49" - } - }, "1.26.0": { "streamlit.altair_chart": { "name": "altair_chart", @@ -98011,7 +63,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For an area chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -98117,7 +169,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For a bar chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -98228,7 +280,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -98301,14 +353,14 @@ "type_name": "int or None", "is_optional": false, "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "ttl", "type_name": "float or None", "is_optional": false, "description": "

The maximum number of seconds to keep an entry in the cache, or\nNone if cache entries should not expire. The default is None.

\n", - "default": "None" + "default": "None." } ], "returns": [], @@ -98339,7 +391,7 @@ "type_name": "int or None", "is_optional": false, "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "show_spinner", @@ -98353,14 +405,14 @@ "type_name": "\"disk\", boolean, or None", "is_optional": false, "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "experimental_allow_widgets", "type_name": "boolean", "is_optional": false, "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" + "default": "False." }, { "name": "hash_funcs", @@ -98398,7 +450,7 @@ "type_name": "int or None", "is_optional": false, "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "show_spinner", @@ -98419,7 +471,7 @@ "type_name": "boolean", "is_optional": false, "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" + "default": "False." }, { "name": "hash_funcs", @@ -98485,7 +537,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -98568,7 +620,7 @@ "type_name": "bool", "is_optional": false, "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "on_submit", @@ -98693,7 +745,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -98762,7 +814,7 @@ "type_name": "str", "is_optional": false, "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" + "default": "black." }, { "name": "key", @@ -98804,7 +856,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -98896,7 +948,7 @@ "type_name": "bool", "is_optional": false, "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "hide_index", @@ -99112,7 +1164,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -99222,7 +1274,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -99358,14 +1410,14 @@ "type_name": "int or None", "is_optional": false, "description": "

The maximum number of connections to keep in the cache, or None\nfor an unbounded cache. (When a new entry is added to a full cache,\nthe oldest cached entry will be removed.) The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "ttl", "type_name": "float, timedelta, or None", "is_optional": false, "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "**kwargs", @@ -99417,7 +1469,7 @@ "type_name": "bool", "is_optional": false, "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "hide_index", @@ -99534,7 +1586,7 @@ "type_name": "int or None", "is_optional": false, "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "show_spinner", @@ -99548,14 +1600,14 @@ "type_name": "\"disk\", boolean, or None", "is_optional": false, "description": "

Optional location to persist cached data to. Passing "disk" (or True)\nwill persist the cached data to the local disk. None (or False) will disable\npersistence. The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "experimental_allow_widgets", "type_name": "boolean", "is_optional": false, "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" + "default": "False." }, { "name": "hash_funcs", @@ -99618,7 +1670,7 @@ "type_name": "int or None", "is_optional": false, "description": "

The maximum number of entries to keep in the cache, or None\nfor an unbounded cache. When a new entry is added to a full cache,\nthe oldest cached entry will be removed. Defaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "show_spinner", @@ -99639,7 +1691,7 @@ "type_name": "boolean", "is_optional": false, "description": "

Allow widgets to be used in the cached function. Defaults to False.\nSupport for widgets in cached functions is currently experimental.\nSetting this parameter to True may lead to excessive memory use since the\nwidget value is treated as an additional input parameter to the cache.\nWe may remove support for this option at any time without notice.

\n", - "default": "False" + "default": "False." }, { "name": "hash_funcs", @@ -99719,7 +1771,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -99780,7 +1832,7 @@ "type_name": "str or None", "is_optional": false, "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "on_click", @@ -99815,7 +1867,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -99915,7 +1967,7 @@ }, "streamlit.help": { "name": "help", - "signature": "st.help(obj=)", + "signature": "st.help(obj=)", "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", "args": [ @@ -100031,7 +2083,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" + "default": "True." } ], "returns": [], @@ -100093,7 +2145,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different lines in this chart. This argument\ncan only be supplied by keyword.

\n

For a line chart with just one line, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto lines of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby", then\nthose 1000 datapoints will be grouped into three lines, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into three lines, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe lines in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -100152,14 +2204,14 @@ "type_name": "str or tuple or None", "is_optional": false, "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "size", "type_name": "str or float or None", "is_optional": false, "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", - "default": "size" + "default": "size." }, { "name": "zoom", @@ -100280,14 +2332,14 @@ "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null + "default": "." }, { "name": "default", "type_name": "[V], V, or None", "is_optional": false, "description": "

List of default values. Can also be a single value.

\n", - "default": "values" + "default": "values." }, { "name": "format_func", @@ -100350,7 +2402,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -100372,7 +2424,7 @@ }, "streamlit.number_input": { "name": "number_input", - "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "signature": "st.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", "args": [ @@ -100458,7 +2510,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -100628,7 +2680,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the radio options. Labels can include markdown as\ndescribed in the label parameter and will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null + "default": "." }, { "name": "index", @@ -100684,7 +2736,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "horizontal", @@ -100736,7 +2788,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null + "default": "." }, { "name": "value", @@ -100792,7 +2844,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -100830,7 +2882,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null + "default": "." }, { "name": "index", @@ -100893,7 +2945,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -101013,7 +3065,7 @@ "type_name": "a supported type or a tuple/list of supported types or None", "is_optional": false, "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" + "default": "min_value." }, { "name": "step", @@ -101069,7 +3121,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -101252,7 +3304,7 @@ "type_name": "list of strings", "is_optional": false, "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null + "default": "." } ], "returns": [ @@ -101370,7 +3422,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -101478,7 +3530,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -101558,7 +3610,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -101700,7 +3752,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the toggle if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -101838,7 +3890,7 @@ "type_name": "bool", "is_optional": false, "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" + "default": "False." } ], "returns": [], @@ -101920,28 +3972,28 @@ "type_name": "float, int, timedelta or None", "is_optional": false, "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "index_col", "type_name": "str, list of str, or None", "is_optional": false, "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None" + "default": "None." }, { "name": "chunksize", "type_name": "int or None", "is_optional": false, "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None" + "default": "None." }, { "name": "params", "type_name": "list, tuple, dict or None", "is_optional": false, "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None" + "default": "None." }, { "name": "**kwargs", @@ -102011,7 +4063,7 @@ "type_name": "float, int, timedelta or None", "is_optional": false, "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" + "default": "None." } ], "returns": [ @@ -102077,28 +4129,28 @@ "type_name": "float, int, timedelta or None", "is_optional": false, "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" + "default": "None." }, { "name": "index_col", "type_name": "str, list of str, or None", "is_optional": false, "description": "

Column(s) to set as index(MultiIndex). Default is None.

\n", - "default": "None" + "default": "None." }, { "name": "chunksize", "type_name": "int or None", "is_optional": false, "description": "

If specified, return an iterator where chunksize is the number of\nrows to include in each chunk. Default is None.

\n", - "default": "None" + "default": "None." }, { "name": "params", "type_name": "list, tuple, dict or None", "is_optional": false, "description": "

List of parameters to pass to the execute method. The syntax used to pass\nparameters is database driver dependent. Check your database driver\ndocumentation for which of the five syntax styles, described in PEP 249\nparamstyle, is supported.\nDefault is None.

\n", - "default": "None" + "default": "None." }, { "name": "**kwargs", @@ -102154,7 +4206,7 @@ "type_name": "float, int, timedelta or None", "is_optional": false, "description": "

The maximum number of seconds to keep results in the cache, or\nNone if cached results should not expire. The default is None.

\n", - "default": "None" + "default": "None." } ], "returns": [ @@ -102280,14 +4332,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102332,14 +4384,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." } ], "returns": [], @@ -102377,14 +4429,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102457,14 +4509,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102620,14 +4672,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102717,14 +4769,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102849,14 +4901,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102908,14 +4960,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -102974,14 +5026,14 @@ "type_name": "bool or None", "is_optional": false, "description": "

Whether editing should be disabled for this column. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "required", "type_name": "bool or None", "is_optional": false, "description": "

Whether edited cells in the column need to have a value. If True, an edited cell\ncan only be submitted if it has a value other than None. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "default", @@ -103083,14 +5135,14 @@ "type_name": "int", "is_optional": false, "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" + "default": "150." }, { "name": "scrolling", "type_name": "bool", "is_optional": false, "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" + "default": "False." } ], "returns": [], @@ -103120,14 +5172,14 @@ "type_name": "int", "is_optional": false, "description": "

The height of the frame in CSS pixels. Defaults to 150.

\n", - "default": "150" + "default": "150." }, { "name": "scrolling", "type_name": "bool", "is_optional": false, "description": "

If True, show a scrollbar when the content is larger than the iframe.\nOtherwise, do not show a scrollbar. Defaults to False.

\n", - "default": "False" + "default": "False." } ], "returns": [], @@ -103220,7 +5272,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For an area chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -103326,7 +5378,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For a bar chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -103437,7 +5489,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -103510,7 +5562,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -103593,7 +5645,7 @@ "type_name": "bool", "is_optional": false, "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "on_submit", @@ -103718,7 +5770,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -103787,7 +5839,7 @@ "type_name": "str", "is_optional": false, "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" + "default": "black." }, { "name": "key", @@ -103829,7 +5881,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -103921,7 +5973,7 @@ "type_name": "bool", "is_optional": false, "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "hide_index", @@ -104137,7 +6189,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -104255,7 +6307,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -104381,7 +6433,7 @@ "type_name": "bool", "is_optional": false, "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "hide_index", @@ -104524,7 +6576,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -104585,7 +6637,7 @@ "type_name": "str or None", "is_optional": false, "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "on_click", @@ -104620,7 +6672,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -104704,7 +6756,7 @@ }, "DeltaGenerator.help": { "name": "help", - "signature": "element.help(obj=)", + "signature": "element.help(obj=)", "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", "args": [ @@ -104719,10 +6771,7 @@ "returns": [], "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/doc_string.py#L48" }, - "DeltaGenerator.id": { - "name": "id", - "signature": "element.id" - }, + "DeltaGenerator.id": { "name": "id", "signature": "element.id" }, "DeltaGenerator.image": { "name": "image", "signature": "element.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", @@ -104824,7 +6873,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" + "default": "True." } ], "returns": [], @@ -104886,7 +6935,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different lines in this chart. This argument\ncan only be supplied by keyword.

\n

For a line chart with just one line, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto lines of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby", then\nthose 1000 datapoints will be grouped into three lines, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into three lines, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe lines in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -104945,14 +6994,14 @@ "type_name": "str or tuple or None", "is_optional": false, "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "size", "type_name": "str or float or None", "is_optional": false, "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", - "default": "size" + "default": "size." }, { "name": "zoom", @@ -105073,14 +7122,14 @@ "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null + "default": "." }, { "name": "default", "type_name": "[V], V, or None", "is_optional": false, "description": "

List of default values. Can also be a single value.

\n", - "default": "values" + "default": "values." }, { "name": "format_func", @@ -105143,7 +7192,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -105165,7 +7214,7 @@ }, "DeltaGenerator.number_input": { "name": "number_input", - "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "signature": "element.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", "args": [ @@ -105251,7 +7300,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -105421,7 +7470,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the radio options. Labels can include markdown as\ndescribed in the label parameter and will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null + "default": "." }, { "name": "index", @@ -105477,7 +7526,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "horizontal", @@ -105529,7 +7578,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null + "default": "." }, { "name": "value", @@ -105585,7 +7634,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -105623,7 +7672,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null + "default": "." }, { "name": "index", @@ -105686,7 +7735,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -105738,7 +7787,7 @@ "type_name": "a supported type or a tuple/list of supported types or None", "is_optional": false, "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" + "default": "min_value." }, { "name": "step", @@ -105794,7 +7843,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -105951,7 +8000,7 @@ "type_name": "list of strings", "is_optional": false, "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null + "default": "." } ], "returns": [ @@ -106069,7 +8118,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -106177,7 +8226,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -106257,7 +8306,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -106399,7 +8448,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the toggle if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -106537,7 +8586,7 @@ "type_name": "bool", "is_optional": false, "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" + "default": "False." } ], "returns": [], @@ -106630,7 +8679,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For an area chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For an area chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -106736,7 +8785,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different series in this chart. This argument\ncan only be supplied by keyword.

\n

For a bar chart with just 1 series, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto series of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby",\nthen those 1000 datapoints will be grouped into 3 series, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into 3 series, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a bar chart with multiple series, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe series in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -106847,7 +8896,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -106920,7 +8969,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the camera input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -107003,7 +9052,7 @@ "type_name": "bool", "is_optional": false, "description": "

Whether the chat input should be disabled. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "on_submit", @@ -107128,7 +9177,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the checkbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -107197,7 +9246,7 @@ "type_name": "str", "is_optional": false, "description": "

The hex value of this widget when it first renders. If None,\ndefaults to black.

\n", - "default": "black" + "default": "black." }, { "name": "key", @@ -107239,7 +9288,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the color picker if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -107331,7 +9380,7 @@ "type_name": "bool", "is_optional": false, "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "hide_index", @@ -107547,7 +9596,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the date input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -107665,7 +9714,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the download button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -107791,7 +9840,7 @@ "type_name": "bool", "is_optional": false, "description": "

If True, set the data editor width to the width of the parent container.\nThis takes precedence over the width argument. Defaults to False.

\n", - "default": "False" + "default": "False." }, { "name": "hide_index", @@ -107934,7 +9983,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the file uploader if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -107995,7 +10044,7 @@ "type_name": "str or None", "is_optional": false, "description": "

A tooltip that gets displayed when the button is hovered over.\nDefaults to None.

\n", - "default": "None" + "default": "None." }, { "name": "on_click", @@ -108030,7 +10079,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the button if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "use_container_width", @@ -108114,7 +10163,7 @@ }, "StatusContainer.help": { "name": "help", - "signature": "StatusContainer.help(obj=)", + "signature": "StatusContainer.help(obj=)", "example": "
\n

Don't remember how to initialize a dataframe? Try this:

\n
\nimport streamlit as st\nimport pandas\n\nst.help(pandas.DataFrame)\n
\n\n \n

Want to quickly check what data type is output by a certain function?\nTry:

\n
\nimport streamlit as st\n\nx = my_poorly_documented_function()\nst.help(x)\n
\n

Want to quickly inspect an object? No sweat:

\n
\nclass Dog:\n  '''A typical dog.'''\n\n  def __init__(self, breed, color):\n    self.breed = breed\n    self.color = color\n\n  def bark(self):\n    return 'Woof!'\n\n\nfido = Dog('poodle', 'white')\n\nst.help(fido)\n
\n\n \n

And if you're using Magic, you can get help for functions, classes,\nand modules without even typing st.help:

\n
\nimport streamlit as st\nimport pandas\n\n# Get help for Pandas read_csv:\npandas.read_csv\n\n# Get help for Streamlit itself:\nst\n
\n\n \n
\n", "description": "

Display help and other information for a given object.

\n

Depending on the type of object that is passed in, this displays the\nobject's name, type, value, signature, docstring, and member variables,\nmethods \u2014 as well as the values/docstring of members and methods.

\n", "args": [ @@ -108129,10 +10178,7 @@ "returns": [], "source": "https://github.com/streamlit/streamlit/blob/1.26.0/lib/streamlit/elements/doc_string.py#L48" }, - "StatusContainer.id": { - "name": "id", - "signature": "StatusContainer.id" - }, + "StatusContainer.id": { "name": "id", "signature": "StatusContainer.id" }, "StatusContainer.image": { "name": "image", "signature": "StatusContainer.image(image, caption=None, width=None, use_column_width=None, clamp=False, channels=\"RGB\", output_format=\"auto\")", @@ -108234,7 +10280,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean that allows the user to set whether the initial\nstate of this json element should be expanded. Defaults to True.\nThis argument can only be supplied by keyword.

\n", - "default": "True" + "default": "True." } ], "returns": [], @@ -108296,7 +10342,7 @@ "type_name": "str, tuple, sequence of str, sequence of tuple, or None", "is_optional": false, "description": "

The color to use for different lines in this chart. This argument\ncan only be supplied by keyword.

\n

For a line chart with just one line, this can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nlong format (that is, y is None or just one column), this can be:

\n
    \n
  • None, to use the default colors.

    \n
  • \n
  • The name of a column in the dataset. Data points will be grouped\ninto lines of the same color based on the value of this column.\nIn addition, if the values in this column match one of the color\nformats above (hex string or color tuple), then that color will\nbe used.

    \n

    For example: if the dataset has 1000 rows, but this column can\nonly contains the values "adult", "child", "baby", then\nthose 1000 datapoints will be grouped into three lines, whose\ncolors will be automatically selected from the default palette.

    \n

    But, if for the same 1000-row dataset, this column contained\nthe values "#ffaa00", "#f0f", "#0000ff", then then those 1000\ndatapoints would still be grouped into three lines, but their\ncolors would be "#ffaa00", "#f0f", "#0000ff" this time around.

    \n
  • \n
\n

For a line chart with multiple lines, where the dataframe is in\nwide format (that is, y is a sequence of columns), this can be:

\n
    \n
  • None, to use the default colors.
  • \n
  • A list of string colors or color tuples to be used for each of\nthe lines in the chart. This list should have the same length\nas the number of y values (e.g. color=["#fd0", "#f0f", "#04f"]\nfor three lines).
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "width", @@ -108355,14 +10401,14 @@ "type_name": "str or tuple or None", "is_optional": false, "description": "

The color of the circles representing each datapoint. This argument\ncan only be supplied by keyword.

\n

Can be:

\n
    \n
  • None, to use the default color.
  • \n
  • A hex string like "#ffaa00" or "#ffaa0088".
  • \n
  • An RGB or RGBA tuple with the red, green, blue, and alpha\ncomponents specified as ints from 0 to 255 or floats from 0.0 to\n1.0.
  • \n
  • The name of the column to use for the color. Cells in this column\nshould contain colors represented as a hex string or color tuple,\nas described above.
  • \n
\n", - "default": "color" + "default": "color." }, { "name": "size", "type_name": "str or float or None", "is_optional": false, "description": "

The size of the circles representing each point, in meters. This\nargument can only be supplied by keyword.

\n

This can be:

\n
    \n
  • None, to use the default size.
  • \n
  • A number like 100, to specify a single size to use for all\ndatapoints.
  • \n
  • The name of the column to use for the size. This allows each\ndatapoint to be represented by a circle of a different size.
  • \n
\n", - "default": "size" + "default": "size." }, { "name": "zoom", @@ -108483,14 +10529,14 @@ "type_name": "Sequence[V], numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null + "default": "." }, { "name": "default", "type_name": "[V], V, or None", "is_optional": false, "description": "

List of default values. Can also be a single value.

\n", - "default": "values" + "default": "values." }, { "name": "format_func", @@ -108553,7 +10599,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the multiselect widget if set\nto True. The default is False. This argument can only be supplied\nby keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -108575,7 +10621,7 @@ }, "StatusContainer.number_input": { "name": "number_input", - "signature": "StatusContainer.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", + "signature": "StatusContainer.number_input(label, min_value=None, max_value=None, value=, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility=\"visible\")", "example": "
\n
\nimport streamlit as st\n\nnumber = st.number_input('Insert a number')\nst.write('The current number is ', number)\n
\n\n \n
\n", "description": "

Display a numeric input widget.

\n
\n

Note

\n

Integer values exceeding +/- (1<<53) - 1 cannot be accurately\nstored or returned by the widget due to serialization contstraints\nbetween the Python server and JavaScript client. You must handle\nsuch numbers as floats, leading to a loss in precision.

\n
\n", "args": [ @@ -108661,7 +10707,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the number input if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -108831,7 +10877,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the radio options. Labels can include markdown as\ndescribed in the label parameter and will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null + "default": "." }, { "name": "index", @@ -108887,7 +10933,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the radio button if set to\nTrue. The default is False. This argument can only be supplied by\nkeyword.

\n", - "default": "False" + "default": "False." }, { "name": "horizontal", @@ -108939,7 +10985,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the slider options. All options will be cast to str\ninternally by default. For pandas.DataFrame, the first column is\nselected.

\n", - "default": null + "default": "." }, { "name": "value", @@ -108995,7 +11041,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the select slider if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109033,7 +11079,7 @@ "type_name": "Sequence, numpy.ndarray, pandas.Series, pandas.DataFrame, or pandas.Index", "is_optional": false, "description": "

Labels for the select options. This will be cast to str internally\nby default. For pandas.DataFrame, the first column is selected.

\n", - "default": null + "default": "." }, { "name": "index", @@ -109096,7 +11142,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the selectbox if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109148,7 +11194,7 @@ "type_name": "a supported type or a tuple/list of supported types or None", "is_optional": false, "description": "

The value of the slider when it first renders. If a tuple/list\nof two values is passed here, then a range slider with those lower\nand upper bounds is rendered. For example, if set to (1, 10) the\nslider will have a selectable range between 1 and 10.\nDefaults to min_value.

\n", - "default": "min_value" + "default": "min_value." }, { "name": "step", @@ -109204,7 +11250,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the slider if set to True. The\ndefault is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109361,7 +11407,7 @@ "type_name": "list of strings", "is_optional": false, "description": "

Creates a tab for each string in the list. The first tab is selected by default.\nThe string is used as the name of the tab and can optionally contain Markdown,\nsupporting the following elements: Bold, Italics, Strikethroughs, Inline Code,\nEmojis, and Links.

\n

This also supports:

\n
    \n
  • Emoji shortcodes, such as :+1: and :sunglasses:.\nFor a list of all supported codes,\nsee https://share.streamlit.io/streamlit/emoji-shortcodes.
  • \n
  • LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"\nmust be on their own lines). Supported LaTeX functions are listed\nat https://katex.org/docs/supported.html.
  • \n
  • Colored text, using the syntax :color[text to be colored],\nwhere color needs to be replaced with any of the following\nsupported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  • \n
\n

Unsupported elements are unwrapped so only their children (text contents) render.\nDisplay unsupported elements as literal characters by\nbackslash-escaping them. E.g. 1\\. Not an ordered list.

\n", - "default": null + "default": "." } ], "returns": [ @@ -109479,7 +11525,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the text area if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109587,7 +11633,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the text input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109667,7 +11713,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the time input if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109809,7 +11855,7 @@ "type_name": "bool", "is_optional": false, "description": "

An optional boolean, which disables the toggle if set to True.\nThe default is False. This argument can only be supplied by keyword.

\n", - "default": "False" + "default": "False." }, { "name": "label_visibility", @@ -109977,7 +12023,7 @@ "type_name": "bool", "is_optional": false, "description": "

This is a keyword-only argument that defaults to False.

\n

By default, any HTML tags found in strings will be escaped and\ntherefore treated as pure text. This behavior may be turned off by\nsetting this argument to True.

\n

That said, we strongly advise against it. It is hard to write secure\nHTML, so by using this argument you may be compromising your users'\nsecurity. For more information, see:

\n

https://github.com/streamlit/streamlit/issues/152

\n", - "default": "False" + "default": "False." } ], "returns": [], From f9dab7053867e8fc29af19d13e2b4223c00124c0 Mon Sep 17 00:00:00 2001 From: Debbie Matthews Date: Wed, 23 Aug 2023 03:42:35 -0700 Subject: [PATCH 3/5] Feature/enable deploy button (#787) * Add deployment button gif * Move deploy button in app menu docs * Update image borders in app-menu.md * Sync streamlit.json with release branch --------- Co-authored-by: snehankekre --- content/library/advanced-features/app-menu.md | 24 +- public/images/app-menu/app-menu-about-XL.png | Bin 40355 -> 33240 bytes public/images/app-menu/app-menu-clear-XL.png | Bin 40505 -> 35800 bytes public/images/app-menu/app-menu-deploy-1.png | Bin 0 -> 129096 bytes public/images/app-menu/app-menu-deploy-XL.png | Bin 42289 -> 0 bytes public/images/app-menu/app-menu-deploy.png | Bin 0 -> 48206 bytes public/images/app-menu/app-menu-developer.png | Bin 83094 -> 77276 bytes public/images/app-menu/app-menu-print-XL.png | Bin 39903 -> 32682 bytes public/images/app-menu/app-menu-record-2.png | Bin 110745 -> 113019 bytes public/images/app-menu/app-menu-record-3.png | Bin 189840 -> 191597 bytes public/images/app-menu/app-menu-record-4.png | Bin 189484 -> 190647 bytes public/images/app-menu/app-menu-record-5.png | Bin 97383 -> 100557 bytes public/images/app-menu/app-menu-record-6.png | Bin 131953 -> 128853 bytes public/images/app-menu/app-menu-record-XL.png | Bin 40108 -> 32893 bytes public/images/app-menu/app-menu-record.gif | Bin 4616177 -> 4890256 bytes public/images/app-menu/app-menu-rerun-XL.png | Bin 40002 -> 32792 bytes .../images/app-menu/app-menu-settings-XL.png | Bin 40112 -> 32901 bytes .../app-menu/app-menu-settings-modal.png | Bin 98214 -> 100439 bytes .../app-menu/app-menu-settings-theme.png | Bin 132101 -> 134480 bytes public/images/app-menu/deploy-from-local.gif | Bin 0 -> 11153517 bytes python/streamlit.json | 12037 ++++++++++++++++ 21 files changed, 12057 insertions(+), 4 deletions(-) create mode 100644 public/images/app-menu/app-menu-deploy-1.png delete mode 100644 public/images/app-menu/app-menu-deploy-XL.png create mode 100644 public/images/app-menu/app-menu-deploy.png create mode 100644 public/images/app-menu/deploy-from-local.gif diff --git a/content/library/advanced-features/app-menu.md b/content/library/advanced-features/app-menu.md index 56abd006f..9b20dc234 100644 --- a/content/library/advanced-features/app-menu.md +++ b/content/library/advanced-features/app-menu.md @@ -3,7 +3,7 @@ title: ⋮ App menu slug: /library/advanced-features/app-menu --- -# ⋮ App menu +# more_vert App menu Streamlit provides a configurable menu within your app to access convenient tools for developers and viewers. By default, you can access developer options from the app menu when viewing an app locally or on Streamlit Community Cloud while logged into an account with administrative access. While viewing an app, click the icon in the upper-right corner to access the menu. @@ -123,10 +123,26 @@ Reset your app's cache by clicking "**Clear cache**" from the app's menu or by p ### Deploy this app -If you are running an app locally from within a git repo, you can deploy your app to Streamlit Community Cloud in a few easy clicks! Make sure your work has been pushed to your online GitHub repository before beginning. For the greatest convenience, make sure you have already created your [Community Cloud account](/streamlit-community-cloud/get-started/create-your-account) and are signed in. Click "**Deploy this app**" to be taken directly to Community Cloud's "Deploy an app" page. Your app's repository, branch, and file name will be prefilled to match your current app! Learn more about [deploying an app](/streamlit-community-cloud/deploy-your-app) on Streamlit Community Cloud. +If you are running an app locally from within a git repo, you can deploy your app to Streamlit Community Cloud in a few easy clicks! Make sure your work has been pushed to your online GitHub repository before beginning. For the greatest convenience, make sure you have already created your [Community Cloud account](/streamlit-community-cloud/get-started/create-your-account) and are signed in. -
- Rerun +1. Click "**Deploy**" next to the app menu icon (more_vert). + +
+ Settings +
+ +2. Click "**Deploy now**". + +
+ Settings +
+ +3. You will be taken to Community Cloud's "Deploy an app" page. Your app's repository, branch, and file name will be prefilled to match your current app! Learn more about [deploying an app](/streamlit-community-cloud/deploy-your-app) on Streamlit Community Cloud. + +The whole process looks like this: + +
+ Settings
## Customize the menu diff --git a/public/images/app-menu/app-menu-about-XL.png b/public/images/app-menu/app-menu-about-XL.png index 3fd4cef2f7a3e35319532bdb3aa54e8954dc2da6..7d71bc312a2a9c8c4647ddfbe2b7a885c0eac777 100644 GIT binary patch literal 33240 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 diff --git a/public/images/app-menu/app-menu-deploy-1.png b/public/images/app-menu/app-menu-deploy-1.png new file mode 100644 index 0000000000000000000000000000000000000000..513afbba43be6f8e80ee7b9a6ceb80571698e7a8 GIT binary patch literal 129096 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 literal 0 HcmV?d00001 diff --git a/public/images/app-menu/app-menu-deploy-XL.png b/public/images/app-menu/app-menu-deploy-XL.png deleted file mode 100644 index cd09ef00f7745e441e0ba5533cd1b4c85da88226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42289 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
ZkEy`SqIq)D-;``^tbjN;L>bW(jO6UaR#!forF~ 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%0Af_s)@n>RUqDg0j7dBP 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 literal 0 HcmV?d00001 diff --git a/public/images/app-menu/app-menu-developer.png b/public/images/app-menu/app-menu-developer.png index b57bc818fdd5cd0535f358d141e3043dcf5a124a..3a3119a07f772952ce68296cbf65bd19e6babfb2 100644 GIT binary patch literal 77276 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≶K&r9$YR*MLqQghkO@h2`C#!U=}QA21+yNsz|d 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 literal 83094 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 diff --git a/public/images/app-menu/app-menu-print-XL.png b/public/images/app-menu/app-menu-print-XL.png index af3acee42b90a6f4f428a0dc6b2e059238780234..41c70277ce48457806c555ca15877c2bd786dbcf 100644 GIT binary patch literal 32682 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 literal 39903 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 diff --git a/public/images/app-menu/app-menu-record-2.png b/public/images/app-menu/app-menu-record-2.png index ec09d4a737de8ec1cdb52a611a71bb324fcd8362..ca8535a18d193fc039b9315c037888e1cdae1815 100644 GIT binary patch literal 113019 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

    ew){_7%jngm1zP`IPeR=bu-$&L+!N* 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

    =i7+c?f1J^-GKgTA#z{e|`U=e**xc_~h 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 PE{>6&xo(;Ejr;!t8cM{d literal 110745 zcmb@ucUTkK8#M}g(4&axIW*}WMd^qLC`h98A|NI7BE1Hr_k^PY3R0vO0i}}=kQ#av z1T^#-I?{V@DJ1!ZqyC=n-oNf2cb-R?%uJG*{qDWr^{%yc-aOS(VYtYCk%oqbK}}Ur zmxks7FAWXdr$5gDM^v0bl7K%Ko~s&r(a^B)o&KX$)4jO^9HjNqRgtGD?crPnUi{(k zSo1LrO?fQ+i4`3U?I%$+#mD;ov>Q|BQ_XzFq<=VQTwJ~RD*h3_fc`sC-q-w)tNFnn zc$)-ibrcoL8(E&}{6U)}sF}~N`B+93BJ+Acf#D_Ry3%|AE($9BJWX%bawF8qGMpGNc7@BOEDX>b1C|6qGY_4odx z?|;Po-Vcqxz)So41>fI~&ivk2zZLq&@BPFl|9^b}GRAEP1IMsQ**?wnpfNJ(&Xjfk zLT*goppY5ue|_I0_dyZbJS&Cs4$?F~6bQU-6i|p^!IgO4Uk}!o;q64Dw(}>=_-*Qx z!0TV{I$%laS28ezz1q1-lgJ+uQLqg}_H+yN#I4fi4JqF;ztfFQpruhyXx1>~kihy0 z{yhJ5L`E+3X7C?0nJ%MokAJnr(^479&^*W`8t>*{A0W=BTd3!d(|`Ac1THqe8PZX( zZSwofU@_3tAJ*}ubU%+^bqfE8GrK|;x-~1y`tuOKG!TKlD16WFOEe?Ss*1ik^XPbO z24ng28k)o?tzw|vy|b+p&i%UXQQgXOnqoMn`F~*&&eZ?E;xw{*QI$-hqv;C?KK>QG zMMb)szdn%W{~36M%?0rg;@jHI8rk_T5!}&**|1yF{`1kUCUh=lytYf;-Jh41q^d_PM zn;YayrTxGph9N5dex{ce9FNqkaw~g4(xT1yij~)A8S$R){pUPrX`0^r?ygTo1MO%8 zAadjG)Yb}8&z-=7qS}S{eSL*9A8=QGKQ30u?%=LAc;B@!JT|@xMfREqCayZ1rCE7+ zJn5w!>@%k`Cc^ORo;9*8m>;P>{+Js>R0b|*hX&0_&mDdjRPPIFq*Bi7SX%PXEUxt$ znsH0mcYSknV*7c!MtcY8Gy?~#5;9GDI(h_k)z$J9_U*=ft%o~h@D9EdvN#1_*g5|( zf+yy9I!MfM>cMgrk1Wg=hhHp%O*s-JaTcuE6VTYv<<9epnwpw4iMdP_%E?=c1G}tYSg~pxE1OC7DtCN6-G|)&UhH$ zIW#iT_WEk8P2Y#dG+K+Jt6A4h4sHbJB)Xv_>-=Jo1e4RmteyaiVLy@Z2SS86{6 zrx@6HJPpST6IS034GsPA)Z((tGfd0#i%cR2gpLQkXtn-Vd^GAS%0j&-Hls~dH)|$J z%lB52=DI3-j28ksI74hNan^olGQ9W?*KzmXrsg$pDy+PXC1Y_bF7%A(W!ZxtMplGH4%Bf=l-N?%_Jy$>9Mygztf))a_q=tYZvW#jnmrdQu14b^pkv2h7b1=Yd|V4HX`3|z?po;>W$M->(nHzYwpmP4=@@g!>Myl9Cv4IDqJK{CdNmVBm;C3? zs5y39met9WHXV)QTUeW~1Z~s=p-~e_SWxIepF*q@d-g*@G=5BgnnL$Z_s`XIms0nd z9?^ykruEVWEvw+eVZ-RA<7tV~+BvcA8b()tFnll|tu{v8urde3&}2V2vCy0QOqL5BOA%^H&T zCE;;gqfVXO0BUpshydfj!eX`|)EsJMLb-2#n1ZCA%_-33U0tz>b*XB)7d)})XNxY@ zE0l5}9}(9R=8JMM2L4@h9S!rP@b>vw@YO={8mqW(v?M!JLL}Rw@OIV#*?%d`fuoxQ z-SW9pW^cigSWn6d;($swU5=q1`OQgVC=l1$FDf=3x=IBHMxDZyPpnK#W3Tl|MbTfs z!1HTP*-Sd4*mewM_-nCMh2TRMH$J;cl^b+C`Es78$L(~QVNsL`oVyzRLbdpCd^%`z z%vCmMyE^EEG{e}|DTaxUE~_CT%1NxC6uQ{>;~6+O3q~X;uRq-HlIXv7OFPT#PoDfw zgA~#xN3Ke2%yL$UC_PL5olZ#{S>$NktG6UwQ_m?)zk4|~H#Ra_dYs=yy1}0 z<_`VH$$Bta2=Pk31(8DU8G8TX+y9S z$JPu6Ub(1;cSKc>yd@tIbhiScqav|%9rHkkigM?qZVIPL*e@n|m8F%n2d+Q@%28iFoz zyxuru9CQEVQ|jK5=@_iwSx=c3_(nrMR+Yo8_HnRhhW6K69PUF!WRn5-tcUvJEGBOC z`Lq~{4;5|HAc0255E6-EN&&*(L zNzrFiZQ9>{@0lR-7>ga(kAJ!ovYhGrb~zhED${(DFV=2%nhCyTrs!55r_w?zi>~Na+zXH0s$0&& z?=z=#yuBtdUOf#vzk&HiczK>NMr@PZHX68&`h}j76$zhoOchi`!eX(-L>=90c5cLj zC041jx+V8+QU9fvstsH98kacle`#Hu-tZz@{s$dB z4VT4S-4+$-yPC8bhM#>}qk@Uo#06D-abDnA;tOTX!|)v)-6Q5Wle=<$9(yxX*!`Lb zw+Z`w;_)^s5+!wup0SCrWGW7)oG9<7Si)@G$gARhTa7JMDHefz$QOgd)17kdmAxR= zUO8&;lZ+#au5?Kum%`*1Vo`V9HrPe9v>)e4cErXycufS&hOt)CXzAG)TB6!~3{8EW zSosg+rC5h8ro^@py2mh`Eh^vpJ}OubYD&GSQNNz2|A2pLI`uAJmjB#${5G7*dOR6q z$ug&g9?B683)uVj!;wkI;jqd3ER#w;L&{=V-Da3JONjNOIRbGT3O%f2|lBku$gY5}v`jBWg@y4;n^3YA z`+c`dqStm_Q|P)R15f^E-3I`auVCb5xOTU;O~t4#r&x7{&ovkQ2@yP`3B3V3M|%`W;Mys66!$#^84uA zfj*z$Ou_mg&azjNU?i*spz)~IO-aGy-~o}acg?$pWo_W?=G!pewX%wk2b*stY;e7s z1J?cy9wyE=QhMO!>r|MHFcz5cAb;{U9qe^_3>?E!tD{}YbdPxW-B~TXJt{|B)L`QS z26O_|YU`1Lsst9-pAY=$o}<94s-yAsuY=muGGjcyh-oPR4-&@>G_xtLm8*;({Bz%a z3G*VeM61?td-NQyE|o&I$!9ivE8yOo1_1?blvArtMsrn^9BStxkr!uk^~)WRsG7GI z>PU}Yo@@L3@7Xzyju0Uv%}_de2G%ef;J%dAnsX#sy>H?>`pF(34$>0nVDTgJ>Y5>k z-&$?jmR+|RAd>zMFwWte~0!5ww|WrXeW2NBACHlu09CeWT(kD<;N zl*m8TGbAsTh0T^D(VYL(FARWL1i2RTlb-`aWVY=+7)x7#N@g8kNp?Ds80HmhrYFtXaAjVtZ#1_8vQn+o>b zV2@7L?%0lz-FiFyVF*n12W)CVe@xPJEL&?A}hun+xjns|c~6GQ0oHbG6$ z_jeakPPqj8{es@qt14WF(MB$t1LHmbC|)r^VN*m zua{Klnwy(H+*`5PZRMd>X-?p`)WEOjF#urx7P#KNG3GVbOxljEg!ySnx#u!~#+{jS z4K3kvu#-W(il_w}06Yn}H(oWg3<{ZSxO2(7k3v$iQ&RFy8d8T&vb%hxPq@|Q*L?gE zkG&ev=HNFi5Pq2}y*pdR$Al%1IKOCUJD*KlkTMpkvd%Ry6E~&CG;GCayY0W(z(XJq zCDYBu`Is>;t;c2a7$0lS0_xY^wvf(u?Jhdh^{~7x8DGL**ek zv#sH66$%mdw5cO`PkXrh$PzJfTX_3@UA{sp>C3SxL&^fK2_3ekU<$2M;xy8)%S8q+ zPs~LA-Arl{ZrledicYsxwwrCkX(OCqPz+IhKRGbNz1f(hKyAHnKE*8fO90f3OWM9m za5qX1_SfH-qi9!I0+dOElyFpOZN=siJ!}|zh%=QwEiye0eQ*xwx&35$%UBRaF%bzo zHt#qS2Lx&A{kK&aUgR_n+~w<^NDQH`S@?YRD0<6x=xb|kr7NYpdrrELe7C)% z(Nijmu{_vyP!kx}y|0s$W3lZ*LM9+C+09yolLHm-+kQ=xd}!lrxW{-gxN{s^y)G?@?M%+t zk&GKrgD^tW#(n09{DGZv745eQj1Ow@|AIMP=XYJ5EKMhb{*20r}HKQjsW6zz9k0|H2JN9m}*pH{**BOX%kJg${dLiu_P2t zwy20{r86D+9F9?{3!_IS1NP^t4J|vvJ7PF8s%OtU`@Xk_G@poP`uSNOP^X;bcH!-8 z_7tRhnXovpZS zFzfFRegxshAq>#MJ=&gIjm()5uQFs(DxXUe|6-nF7` zOjBHI-udbJ%PM!;P`*bVR|L{z%k009Cj)*B>ONyZcF+GwCm;Su`gNR!=IKAbgG2NG zqT+vtoQCHAn+8)N6KauPQz{A!?%dK+5IZ}2#Vm1B?pOP{>l^D_1qwi&cMW9-L{~Tx zi8!+&C&re7t^x`{%{aocapuWq@+4BIrZo1>VPL>X7KA-m>U)!hY+- zuXZ#t0Sep@(!m>02%^$i?GfSXqZfA*rsE~|U2H4>R{Q6+^AQ$8Ql0?~8}nb_=Q*SL zR9QEwI$+Di`Zm$}ViFYC3c0G-IIt)#ZS8_93%A`Tg_FM*qiV*;hi`C0hW|GFjbCrV06m#)YQ z25oC)awN>W=c=^FDLb&;{~)7WcAqzyqaVCt41DET-HGZkuO$Q^75%sMsp<0N(RLo- zVo;a5v-DWSFj6rFG0_HEnLDmUrP{~m*R4KUE-po2RW4v!@us`$fRcRhW;_-+A|p-j;Zm&e*fJUjk4F)jDS}Cu-rr>cKL^3 zH&(QS%I@*DmptTOu~>_FEUo_K#_Wxs_Z3Z^_XZ-? z-F)#^iKUR{zE;{2@8}xs?6sneS9j>45OA?;Au0dnf>$yzwkwoHaEY`8e ztgjYXQCfOO#Iy6Buo+0ke`}!m68q5YbHaMeO-dl1go>*GUEPecwGC9F5r9A6Z`E+2 z5eSQo+)f#~qPtt?rUrU_a8S&1E?$?dIG+{GeJ#4ZGEkYI^_ZDi$JmnR5CYMW z_J8{IeOvRD)mv^S@!Z?Gq+fpL zQ6k-&wY3~kNFE}MM=0CJqQtuwlXLWPRY&@hb{7ZQ`3d=;MjVPn*}xz^`n{QYMd68z z*OLS{2OH`_Ox+X-XzNbD*McLa7Y`GCXo~Z9`Uf~4VI!iGfk0~f`!QIp{3d)WJK(5p zgHpfl&Ywr#TQ8KJzt911Drr#xREY`BxRuvHO*zkUq}Lr03Ctk+OFMOwBF0aTK6wyp z{RyReJwtvr<5f<^ytZn(DWsMsy+Q%oFB!)lx;rJcfDA1>?2gz=P*5|z68D+r@~!&y z_N}0e>9zHnO=Zp0rfn6|O#=1kt)|pi-Y|5^2WRfFE`nxxq0m+{9k@Q~w47NHIy5)w zbu8xrl(|gpv7{vranFTsKc|3X*Hg;Yr*3XGpYPRy^+@z$oAO{_#YNrv%Za69N5!Jq z{$G`rsUUTaA0Jhe9|X;##<~k67tSg^s6HF6s01~Cf?x8p8O69oQ}11R>%lxM{s|5d zmLLop9ep9$5CO#*d7g(`qN9v?Si(Wru|L^;V&vZ|0}Ij)$B{I;9_RiMTf7zcvVwv4 z0#CK88pCz+$&jUV;0+N3$^%3}!_mFx9@i6l-pz`b^DRkDmEMph>;GsTOS> zUw_axZlQE$SStISc`ovGB(dITH;uz43{I8|m&4E0mQnZ0A=LC*M++a$zC!ITwx?W> zPW`qxD*5&ZW%bQ2mNueeB70H*VPEL-;;{dz&hW=810`eCV<1u468FT)#3&~dS3b+C z{K=$6*(Z3Qd8@AI%HZ1m{dn|#n@L&yab7{lmCo-cQyV~E`J8wI(1PZ3mVBCa7l zI=j)f*Yi$QmY)0MxA^H}46cOO_x2jkQLMRNlg}v~WwtP1Dq}y)QV8Dt`ge4T%7j}3 z)D_S-bs*-~9G*nuzzy2^-5Jcx z3_e_!uQ$p0XqElR%U4X&!-5V98lQ~O#l4Chw^zGxJ^!L|rbqLj3_<$YgJRS=aZN?D zRi)#}iF)EcDBL}uFjh3g02TL?!g&3Mj2Eodjh`&rL8nJY=8C)7!n4A2iu*9;H zM8=zkwj4D#%^Of|d*H^w2WuSvOozBzMD6SPy$e^xofDdC>d*Mv;1cqWa(C^$b_(9m z!?8Owbq0Oi*=t|W3x{K8N90uegZ7?TD>Ao#TH@K7?FFDUWVS3XVyP!4GVF1IKBPG3 z)s=xEr~Mq*VR%uAa8r`0-wNtl8kYY?i^^s~i}ERteJ4v^HR0A_=?J(u#Kgk6!C;Nx zW};MVwxGab&IbVt))ejZi+6Av)>aod{U};J3TgoujBBxAisHlP)U&%M`@QJ#3Zx{x z;94UKqa6Mzi?x&cVwTfjL0fJtC>=F1ooop`CExMAa7x0|Qg;Tf)Mo}xeOV&d8*)6w zN+oYoPjiq9jwmp?KT}BIU<4mLAF*)N>FiE_Ahgs&xKsVUeIH%#dv5a zMC@MprEBq!>)4?AXz6qjiIDb#mK}h2&t>Wb9|s5Td^tb1K;|KHzlWtVqr!r^6 z^TZg#^10nizv&0fdr4(qH(+>^1`ciermb3^^FwyWT_^ zIw&i-W$d57{6@#moC7%-7%+6mlR9BwZa`aXZS`kyUPvYgyuxm$N2`V}y4O_qmo5UP z&&f_aDb0@7y%(~Xm{4C|O8!fz6gG6tX_k)c=qK!ozK!H1?`Kor&XA9ejXxI@%N>o% z-Qt!L4`<|=UL&qXZB%qp*jO!|Te18jSkpc#X}#Ta93uwv*k-|L{+k{p)_k)EynSN- zF&AQJE_pNq$Bgb%H?MK+Zpm)9A2%P9YpE0xhvv+)RtC>OZ7jmL`WB>EX1%L&4v?9g zrQ88FJTf;njSWy<43O*KqfwjP{cLj1SUK1I=g&9;@m3x`Xh|w|ixGq&a&sg6)FTv~ zoOyqDrDaDNVE^y`_8 zCL_T%iC&N%n-(O|Bw8Z<^8raP5m^hA=OmfF0=Z$z1cKXL0GKU@O07&d`JRg<3jj(xV-mv+%_rGbC zCX9!+%yGI#{C+Oq%wLv#GmnC<=yBh#P^7}apMb4?Oo{=?yV!HNlG+8fNhdr z`MMSp`vExo`bcnjM`z%v^;(5UB=Yb4PwEbIVFSJv-_);*;%VQ7N5Of$BO0gyewEN1iXkq^I;rUoO?g*|xf3x84 zZQ=k0*}a4TX2h|Rf{%#CpzS7UdN%T|c1qhCQkr@R5JiOM7qYV^=jvDMvUk@9=l>;b z#mUtH_f*uq8JzHTX-Nq?v;OwBu!2Zi=KT07GZ!o5ZEpBn ztB=Wjmcc@?qR_+^T?l=rU4fu(ak`$2*p2X5$MSmJa(!9>_b!BuiFv8NMIf1pbWjN9 z;+Z(Hi5{=`S#xRBB)?GP8Z&qh5vSY#;>bWueG|8*Tgz{0@Ud22cNgESIimeBzsC(X zl7w?h@vU?aBL-Si(w$|_G9=aQrW3@2P#!vl5AF!+68RCiIdBF21yQoWf%a_fq&$SV zZqYf{s=cv@;{mS$VL3b3e(asN&q;xfoS%W4EQBvC&R*2sQoua+Jdl87RNOCJXGU9^ zdUfyiTPy-4T|M%xrRf=Y%mcEaP9&4JiM|WEC;5ed3Qx!rs}uT$Z5Eyx&rTzcHs-l< z6`m*zpxc+QYhV16i;DVt?(HDl{7>wHxz8d55OEP}l_c&4hopag7t1-Kv#9awZ*#iKGCf4)bgKp7&$?!3Ry-a52#C8&oBasX*1i zL?t{$j`ETb#O600;NXfOAB}lph{I(SBR+-}J`l5@L&>qK?cihCasUI{wF;rCtgSLu zC9@fM_^7ZSmfdGm1xmbtjOu`z(j`?ihY;I)>TLQ8dtZDbG}i5V#`@Sb;^$uQyl)L> zhyoC`bUGIOjN_sI^CwvkADkM5{5OYj>>?7*Lq+%v(d_7Q8&g;;6B=czuY_U}RWGX? zdLc69?CgB;-&_>9KXCCUllSbq-ekV*9Up_$u}65 z$rn_`JV26ydJ0AyEM=EQTkz7D0J9A=6&AJ&h_PV$ze7B>#q5$ox0*6oUU zxpW&$aI!jiE1?yuDLqkjC+mf(<>)4T`LTs%S3C7&xwCS_n6T67gR@APD!hYzuuK8b zUtiQry>s2b$SMp^#9`h=1M=|Sd~|W~K=u~WI_Y^6R^<*j4|dx*+O%Z1-qXF-{ga>k zr=VMy@80)9+g{l*-wEw@CkzO62M$z2Z+hXg`@5TeYju%VngoE}fWpsG$^1Q_^{y7; z@l=qd72fnVCr{8;or={%@*Qq4ESNL!o0akB)tHHG{y*aOvabuxP_2T>cjr6oV#oBy zv%S0aNNF*~dIGik-Se1hh86*K505vzj5+GPHK1MbOo>7-R6}KJ zitosen4#)rk^>0CMTl$;pW&A*`pQ`Ie@aTQ-P$P!+$C?riIGLBnG+R)Du+5Vg>e1h zuD6m~6orSRF?VHiJ0Cals6Uf$I=~^Xn$-WYJ~vSF zf#J7R?2e8fNV#~=ok@LPUMF_=0<z%6~o-3*Vbp zp3S=n-98UKfw9D^>pog1hh5KHm@3|83E%%0XiyR?f_c~HY zz8a!2n_IOBgs#7OZEc+85yFh^46>{w611%ujlCX{V-@{Hr*0(9ku9yE3>kxku;=_U z{J04D%~Oe?_`2yXuYkRE|g<;XG?bCfK1u0*0P?Hk7Gd^%HYw=xuvH{Z1E z+^!)gMnT-;^+ou3DguB)t@63nbSooRmyNP;8~tV^n9xaTr(=DeJ!Rt3I~+e3q7MD8 zUfvV9USk4vScDh|T*4eKWrWQ-M4br&41C79KeWne&z}3rqIA8ON;xiW*--)Qy=&Rg zhI@Lx_nRgdhkfWtKC;Tt4*rK8E(wiI@tbFmZZF2%m$dIn)k#fG7P$=3%#@LY?agO@ zB_B`C%t=MIsuvRn#VuuTxf~}8+HLODnODS(vAdM$7%geTPxPt^H09t?EX75R?&3d5 z>(FU29(lp$tkLN!x`R79<0EC-RG+b$54rn84#RI*UcFi)9laqUBI$5b$;FYxq;rbU z#ZM~|AFd0Il*C3>FDo6CY5GLxfCMW|m9is?uHE5R)~XjXIN65kOt?QEI@-qYzDm^B z7cMFoib9%K>wn{`wq9oltfDgoaq7PxSz~}!%V;>e45e-Mr`LD`(f4%2Bv0QYNNWc& z2#YK?3FY~^W?o}o!ydUs-94OQ6gqgz)zJP=in&8(b)}Sz8Y2DP^Bb<6#=0{*Rwq(n9((QDZ0OWY z_+6JUIUZmZH`kASGlI3IWYyToedWU{GTO2**|I>C6X?u1*qQ~JrxJJA1yz(Ut+M*;BW=2J4cp^_s9bu!lM?o&pzDImJy8f^ z`sCf>A73J%V>xQ(|01|W1}psqr2DJp`qN!vVy8cJFhU1E>v(`=$4k*+vB@k+=0<#W zW~{eDvxP45Mz6Q$?Vjfe9u;*ZET&j4R0zeeL)b)1UnMZU$&<2cqfMw$-yA(6?NK~7 za52#uVok!_@Qq!6fGCv_2~HH4_0i#sGj?iAVyWAR6e=-d%L0W2THUAfgi)fh+YB+p zqz(K+6VS>Y!%2p1I+mGi6YgjQv!L$keuyrzYQ40n^bYKl&;nBIcX>R&8Y$TX9kQ!o zDg1=AZb=z;H4WORQvn!r(C#h@#Enwx4M0_cFNroCE}2FzEw>stVOR|N5qP7EzjQ^7 z1}4sNkHSpA@Md%{M=w@YADnK;2~uD8b-)+tMns7Y7S=;MYH~haNBZj<>-}BXQF?Vh zf-wq_K2DbuCCKtes4b{zOO#k~W_iu5GtwKU2wen8_J#<;v)c=jQOE$hW?hJTIciWmU z`i`qL%3B&@kW1>!F9vM#Y8(J2>}}IA(b^mRQ6Zcq{I+&h<2Spg2?PU&Oi6zuQ?1&^ z?AFU*VeXKF@)GPI;Fx7PWf!EtTxgz?9}zmHrW`>Oj9hMIeu#!uwrzfrLFBNZJGs*N zC4EJtlyPXqgER(bTI_ra8-V@z9C(3Var{5xNY zvSI37J9R7nd>tVXUjnm%(Z@UQ887mkE(RJ&7n!mMbn0IwbfZCL?tMQVM=wQ-IY%6O z_B%M~we7dZY&JjrDYy2?=6}*e>_`BNK-8th1785MQ^u`LFLHQ0?7l1z)PJ;g_w2bU z)R88I6Cg~1g(z5yAeGIE)*R>QNk>)M+@UNHh?;XzbR+_#gBgg_F_pdPynN{`LHwrR z@=(WlArz~7SvkZlbJAz3o>*iI*Ke%f|5x0-&$GP!@072jg`#f|lSJdQHQ`Ip*>ep1 zQ8IEGc@>fP3)icAW*p(hQB?hg*>Y0E(z-_!t;jx@rg5?GYN8cy|?kM2+J6eZbkdVc%p z(Fd#=LY9dZ6&$SO#yl`O%+Fe^#cqs@;`1@XSz7mH8O%yx%2r;za4Z9_6mEB>4ynys#tjBBlW+p zQYJlA(HL_oTFGs>F6a6D-VF})kr1fVZzjYKIZ?Zu6=Y&|{=aeXL9)1|H=Yw@lF0N# zhE!5nVd`O8Q$7zm$!>M8UtL3ez?pbDH35X zRx363REL=%X}JF>?g|6ht5bAF4B_mOGgESG-M+Fb?v!zMepvG;=Gu+hii;-!{TScC zp^|3ZljVKz+d>c_(;r^vlbh4*_Sh87!VTZ~(EJ$3-{6;eMR!8@!fbAVj7c@WC4ql? zzX2u{XkwVMDb}7eNJRL5oU7P^;(qY%8A<)KK3E1Cq zAK_GrF<-$=x|dq`5p-^;S`db5RAyIpM&wn3@2C~21Zp;I7<1wrY`qS(?i2w{TgN$5 zP6)=T0>+ZZb~9B|W1+M>=bE@-MTfiw2v2Xo)!lAM-NU6$-z=)y6BJ^dW-YEB2gJE4 z>%NkLf?J}UnV6HtgOe!aBaw!Uit@QgdW3oY{@%A6u~oHV#qt9U+szHnspr3@LOSlH zXCtmH3OP0bRGJ#IBHtC@EtQ&K$L$Q3=DjlBNVgR23LbGnXtx8X(rW{t;i7BandFhzsw~?*X7Kh>SzCTn zhhF7}w?S7Sb(>&db&^MjPTTvJmqGjpmaM{VP>rz_QB0d`_XI{h#N#`_Sz(rxeSp4O zupzM*<~!Q*SZ}uh%L3npA>)~NWmbc3 zOPauA<&M9#-20Ae_H_+j6jA}?3n&{vjdYGs4_6CW5!{;<8v8UefOd(~~prnY5K9o!+pZcT?HEfunxje0EdKS}rx<=$Ln)h{kc zFE2IWTlS-YRg}B0w}f8z4Fe>eeNvsq^G=ZovFS7^zw%Cd+&WA6%f0J)*N|n`db#$d z*zPapv)$QDD#`-O5g8GY@kUoBiDBg`P_oT z)n3*;KXi6C!Y!jA*<=j^0fFK&qvz!NP%!;^hKqQCYx$sA|E=6ej}lS$yH`kqr__K~Dhg{rMO4Vz2jmWyQGte^^E@<<~p| zcy>e1;BR00(eCT{Cr3b*W|OgXbdzPZXZDRmRZiCfgj`S?Yx54lew~X{ZDTzQF?a($ znaw$^RxS?e6*&M@jSYIL`RSj$lA0YX5g*ejuZ@Qqts%oax5|)+bTMhbQc%0Y$oe&4 zIg8_rQFDQsxz@bPS5Hn z1d~^V^M(wVmC6_vAO6Sohw}ADDYY>~Msr9@A-$_U{P+?x=81x+r~{yngVh{WZ*rJh zTC?$~xz43-xX$G@v{5Pxm^!ZLZW&}ZWF?J1a_A$F`L-?X}?F- z_=iB4$@sXu5M(a^;3g|N%&o!}J4IFRx=%Oy3;DU)cc-V3?(!sZWib8a+)GTb%zht2 zC~e$ZQ94(j4tNct#wuAGOV2ZMPYQoZWZbPfG%CC^2;h)3hC&0^Vu)!_J~Z#?aD!f9 zdnl#TmKoJvB2!>KQB+*~2CxF5o-R7oUF~cWv@sBHg8!HFL-_^)5e-tibhJJQ=i=Hu zw83Oe6*@nb8~&K5zdCN~j52W5>CJ8G^h@^Ua@qMz+n;dx;lZ~RExDv(e}}b6f7rl* zZ&^xdo&$4~^<(~GOAMAxBJioycC@rZ$HoKtQaP4VwI$?jWMizllOOw__mweC~ab+!VPGRx=GRW-cmYnWuznd6d&c68!<+yO8&btuh* zxLyqifpGJK&B5D1%2PCSHn||6Hk%Xtd8I(gH5YIlt2xUiyXC7}%6E!3xca)3>0iA) zg@s^XWb3X}NRGY}S+c$KYQF0APrz>pX!^)@8Wms-Y&v41V^k+pH-}{Y3Hvkv^Y;Gv zD-xl6hKQ{MMqZ!17uqh&uL7fnEJVsg9_QSHpVXG43>4M`Lrhn(^2;1)g138H{z;AW@w_$ZI zUd{x}F#TzPHgtJ0`tE{mog@8%x=|92KSGO2ie6_`Rp~!cx9=^E>c~!K&v!IRd2wFgY^k%zjeYzRSjVE zXaFg*Znx$Cu=mzsQFdSdC?+Z*DgsJch_pqg7<8B9sC0LyN~j=6cPQPGLk$QBLwDCu zL-)W8Faz`3gFcVn>w2&EpL4Er&U>Bf-G4lf-1j|q?7j9{Yp?ZLpWU`*)fkz2PWnaI z&sV~ON{V7%&Bsljz1RqbOQU1t|pdw-i8(oaZne!S3AqVukz z9v&W)V%ZqEgmM|U@7Bi=hz;rLzD1k3P5vVGv2Q(eX_-c zWWj?KF5K#f5s+v617G*Pn${}bc8+0}WdjBww~|jFSI+1NPzt<0$r;H|D8mMTObYa; zzb5;qIhxxo3_Q2c(fQMF-HrpQsy($3h{cd=*1>__-s=Ng^uywNhMoBxIsyd&`&b0*uRo6?F|wJ+WU`u?edNz0HA6J>0kD~er3TJ6)FUAp7W>f;Ms)SRCCC2nL=-D?}c zmY&s@OqWICBpSTNN-HXB!h#ik4;1b^qzj4RoBIuJybtLx-mk8vR(Q@+0O zbHT>Q!xL%-Z##5H_iuQIM%bRE>0&k$+IPzp@D!dC#?r6|yZ;<)q8jI%chU%N*eGmV z+_bS+c+7(7imTS$-XHEY`=K+sgDnocBz>s`!ki>*N5sZjx`k`q(m~Qst;P_Bl&BVEoa`hG+dKw@MELS1)t?+)d4(hHcstm& z(o@jLfhT^aRMSIQ9JAi7m(;c9~l&%qKCB5Q25bwl~6%<5bNYy4J~KkB8qy^DmhdjM-xs^tKpYA+3+V2lh=2-I3~_p0dtz z#W|VL)IN1>tJQPbS=g?RGCRWY;8C~F7}6ABuccZnB^6ZOd7y>E7O&Nwb``bSr|nun zccF0pa;`ruFJ6quhIbi_>2B9zYC%dIkBqtLHWobs@PRM|4H(W1r}r%(NnKbZ zR^&NAY>i!#*{T)fehyWCu*hDy$FEwvMd=A~LW|JOv0GNl$|t9JeOhc~V4FC4K`(@> z8|9|MKg;-q8qyNxh};V zlC<_;Li!<>4N_F{hf#A$cd4edCh98X^Zh5#2ApD zczAUYnXCQkMXG`x)}6VHVkI@m>PF#bO3n*B`PL;LKZ`TsgjW;;Tw@}u-*KBaW3;1; z@f$^xyV&B{f+0EQ@uJ>2@10PR^)mr{`E*A@l(MIm_er4as=}sYXGYd>m0GUvB`rp* zwY;7>y-Pe8Hz}~)b2s0zaofX{R?-Mniv$$zoCzH@IbR@Jn2AC}7Wm|Q9zHo7`hiO~pwSm3=y0OOC}R1p#X=s5o;PjkqRW&9m;+1Xx!r!eO-ZVV z?k7$BbVa7RE3y6de5H)lNS9hE3KubgGT%j2?YY5j^IvXnfjszZNENa&Lp#^4;%osI5X#2Yc<2DSzqG zv)@3lGu9kd>3~O6TjGf~<&KWD0wc@D6Gjh@)=Cft48rrb5$S8f;}dR2u}cmS!7Sgk zSg-Fyb|vVds&W%3f@5ukDe=xa2jz6wYSSIJ+z2nnm27Nvs7Ru8kxxwx)pEp%6gjLX z$1~U#s!%|rz*TT+xJf=&SLtDf_^Fpdns3U!Ab4S`sOpIm@iVmrl#@`kt;{8lz6%mA zIxd<5K-#Nzo4Qcz&dJ=Wo}8zIa7CthjIaB)#1uF%ZzdH~_A~E9eA%Ytnp{IL&<(6D z6eb{e0yOhzcYk`S4OwBc{@9ULn2P30ZQtFmDxH6;;F5{cmc=(pdL8q4 zO7#Al?-VlL`#8-m#}E@YIa+Od`>$ssv^uM09(yL}Gr$9JyM9>y=WU2wRkH0%_9+|m zM*B^CwDut$&;8G$KT$Gj;kV8K zed6=!Q0{{Gf2%h^Ut#ws;|$-Wyd}RE_+>KrKYN*l&Z4GqGn(5$^G!AMUxqv)??*jx z@5Nm-fBbPniHQD#)zSM=h~^LE*pFSxzvo5Cq`#$L>76ql2;2VJjDGOOyui36{p26A zMIxe|A0U5H*s~`fdr}hlAC97{Lbm6Q94qj+p9ygP{oMcL8|?nz7kqtkW+$X#DX)W- z>7RmFP}l^HU`zu*yCw)pW z@gIH-BBK8fSuFn>>HJRt`XA22`M+QAM??JoL5i}$y1jLL)4;!xI;VhMuPGP6^nZw5 zWT-K}Nd4sg0eX!FeC&@@LM)9?rBq_F(MVwNDyTWolyO~3i$+gkfwDNB+ulV_jHiAM z>(7!NlY)`ZgA+ePISzxl8~n+-ECI91m%Y9BOUxg4_Q>UbH3SP%J~rwAE7|)z6cGIU zc~Wq>!EIFmz_5|@F;BS0fY8fdCfpE*HbWvCY82;*yo(50TXbajO_e+WlzACk@bmkG zJ&N6?&B6(+RKriP4-*kB+T`R4@}mL%Q!@|TQ;LhJtEAyto>DFh@k>ov1=c z-yA*wTEpMGsK?J{?;9~3R9q0E7{*mQ&>hM+FSc~K1Zpc8m&f3u3>Bd2cfQJdzRek4 zkai;^gcT}xpbiH#pnqIH6NpHKZXY%*<|mCYf^*(M(q4Kbw@wgsD-*QPqGQ%t>@kU% zef|#A@gNTTs4|Z5qY2Z92ywG2f*sMhd)Se1gg#5;y-p~$7ln@MK{>%k5p_G@)<}s& zoe1+Td2IE^LM5?;&a2DX@)Q>wzdUtJ%2ORWHoc()O@Hc4x138WVSC{@Cn*R$H zIhWwj825BQ$LXOHj!r2i*!5x~^B;BMzY}n;2)q$Q$rMiGE>`27a1k0=fc>}leQxh7 zLDcNSSo5p-@5#CvgtV!stHW*ENP__>QX9}zc~|cEaS}8iXhQ;T1HtREvFUZP;}R#NL7Wsn?P=tzB}#8pTFbO|>rLJ%z#G zvhH8g;&Zc9)k{sKRqmjj4*Sam)3BcgYD zS+`nQ3xF~C092kjpghvzdih23p_4g(fgT!&4MUd*{;iCso>cW#QygGsdNfi266s&A z^VwDy7hL-qx6|7;!i{jA&3om7RIHd4#u*9SY9d3mgXWbJFuj^a~M zn}9L4sjo|rYNJ*}2q4Jm8OF?0)IK;amF^v^Sj|OxaYM;C4HiU%JY9vK`Ct5`WIuOU zl(`U@>fy1|!!!eUem+%JR=(2v@^A!uFJVQg(~cQlo7L%l7_ogIwJ{5bvS1@SpoY1r z-{cGH9WJ3nqMyCY478fs=Op)ll6L()e1-BJrYnXgQkjx)8@Go5umV1d_uL7H21K@$ z3mHF}T15DmxyQ_BjROEtB7k)3Mowsk)jwlO*y-5Yi)1i!h^a+b+u?8vM!#}Lic?At z`KPrY0c%jKK3gjQgj13S@2kz4kWGe6K=%CGW}vlIKSubyV9PUX+KQ`*ZVb&qeI+Ix zW1^(A4{p{RuIcHCuGc*F*sR+r$9*=N88ySxTfq+Ha@s6@Odo9ZF?jHhI66GP5QE#2 zS1)xwagUP@(?BM06Fq!r2Slv2c`Yq@uth{bDA6T-_wx99#TxD7txdoqV4bo=&g98@ zgsnBYFbim**)H*0Bb=Ag)Mu&?Sd(IlbhM912TU#?ExA|KtAe9b5H+p_5nu7pPvB*Q zPA>MOd}rsMJ?!17@IW?ynECOHthwHrDQSD9d?g7}R<7$>o4PQ(^Qtuc4qRkubqK;- zP(Wi<%_w(p)RM=6uR`E&RZ)PVdU3cgWb_W$TYyT;)I`@)h(N}%sF{GN?FYIo!Ls5? zL!7J|a$rbPn_KmoB>UJUk(pt&hHH`+#%cElW@pAx94#y@Y*N{y+jz9FbI5ecUEdo) z!t*|RmLzrWuhsLSX%L?_@KfPx&+hDlffy4BB(Fuyvfb~Y&pO!_?CEYAFrA{`9vwl_ zkabd4bKMM{IQ*7?3f_l}+f~f8<^X<0I3E_e0540Lu#_JT7R_^^K@&2 znBkLBn%-WT2bq>W@7-D}5$yg_;ZW42Pk<{|8-aCqWEk&VP*UDeIvCq+EC>q<+8>1$d+7A9EN0Oa^1u@lLB%h$|yoI^jX|_NC>66$qebBBRUmT9(0_8(#YDF^{1gEAe*gjW&mfqn?>+QsIM;mk}NSca8Y9Po;fz zVhJ!gXq$h`$+}jwKTYOEiCX9i1`MUCNhK@euqR8%Tsj?P=1jZpTjaCBUX_nVS$yTr zk`Xw)0BMGm2NthMN}g9bUtVu*Y7?m|&itc~(j*SSyPnE6)gPMgTzjnwT}d1tXI5r%z7HhmUb zKTnZy$JHEA=QP$}S1E|;f5=n*GFf)2t^LtR)ZCxdHv=#)FG>t?dxeF-Pka(vwj8Zm zL}}XSX*bW8=l4KqtgOU~U9!&4uB(c7beYo&mOtPESkWEd>;c>ffU+-LPdi*TcU!G7 z8yw8b>Q7uIPa1y2jUT?po*%_BkUHqF7V(~*9Y){lB5lzXBsep*Y7^jrek|~dBWa=# zsDSdtU{JBmS+>W!#Ai{t^m3$v6WzcNf7z_W))Liw#Ln{b(VKdIuz`bZUfPhN>*}*h zN4Bf5p>_7ND9xOY10x$zL6wU$ZCZKx{WsvX#Skw#7Y|a}av9(o_%-?l_yhx4a8m`& zzJjAtGZ>*g<#E@QgpPSY&&>a&N!cMsbLz~1DySZhDovNV^+{R&P?4bF>x%$& zfwQ(p2O`emjxU|(Q85E$S;%`vI6Y<}*Fmk2uxrBVk3%NCwbG$Lw8V*zfb}`Q5Vw6t zZ+nip2MR&dqwtNKUFJ3k*P_viX%wwR8{6W##6K%0I=|3*$Zp*u7p zGn*gYVkU%X0L#7lt9ih-8C1aFq*P3)6$P=8T?M3f--YPiGXdD?nhM{7QwCQo8n95p zO)~J@x-R>ryjx=st1`LKsL0V*sSnz^JkcM9Z38;KfB$|v4&ASe57_X)hqG;#t}HkP zp(W}f3g|qZo0s$)D5^t}RNHRw+e>h7Y{Bt;s}AAx__?rJDlMzh7jH&~=IQB0_NKdv zT6J8q-YRK&eIOOSNDgMRfnw0X@|&$Cc?&uM4elhN=DrltCnd-HF+$9%vA{pIILONg z49xbysExn85p-^D+{Kvs9PY2m1dD>n7X)X{wHvrRbez=>m}&BJa@xd*z$%Z`vStab z#+tWUI%N5!i4(TdYS^}30beL);b>G+c!NKzxelGMaZ35o#SWe9xv#MGvzGqz*v6hw zFY;19-6e0u&F%}~sKvbp?0RW0 z`-Zfv63UlbMM}&>!brKbMLLfe( zt5+spo=ENVtSz}mm+@Fmgpqr6F~!#e064#Fcx~(r+bjshvEzY*6$iMzQF~7Ff0Phi z$oo-t-_n2uCW4bHiXkj9z3J^cE4++{wjm(I*O2iUyUrOIf z*`bXUE^wNRp*HgxX8+L_>}6DQ#6PFU4ANZAa;gcusmb@!2QmtW_~)jF$zR*16wZ zAT>5e)HKYZskyQxZgRt$T(s3;hNbqb-;51XHA_vMRpff76u?Y4OS*zUHAHSodDpf zli+mMC%b;-7=>J<+vIUfTXVZ@Zn%gDSa2;SY>ymj^CXNtBs#OS2tSV9H#O<$z)4d08a z*(zCcHVMKnUsmTS=V`uPL%8=?tLJKQr5$3?(rVZFmg)A_FdFnjklv-+OJf;TCNI+8 zUE=aOn)#|GZrbxb%YAFazevBuHf9?M-EJ#*T%C_ubLyijND0w)c|m2zcQ5@toZn_k zi;>lZMx0;Rs-^`WX#!?PapW_PY9HnMP%mCMQ=S!3XU|~2&M$1 zLiFv}SQ0hA94#|387=I`bL>cYw-9mNf;NJnune^dBYyFYF^RE&gB=isrYwCN=E%a)(lMG;ZL>I3BBS1t{ z6r;(N6Ze^IT{vdP_gACUR(XwN%31m$P+NP)U?@LOE73(cLyk0f<;l;@CYlZG#g$)8 zO>LtNG`Vd(J$z}phy3&_Uk<0p`E2Jh;k*8q=pwhsg;>*#U)(4C;vB)B zDPd)yC2Y)W42FRRVfLvV+}oq~GrATohO04VYh^^jcN>!2b(NHq?p_BPt)5Y3OhkK@ zvv^iIf+-hw_}lX-P>Z&tN46P1>;>90_l z6Js@5#PsFLVreVLs93btdZP34nf>LJ4H**NQll>6{mm44RkZi5Jp zr(~pk?tHsi6-P}1g4qM7^>&vXwo_+4zBr=|D%Q|ggW0AI`W4*4m`v~rHCHa@l`AIr z7~Y+_I$efZgafp7XQ@_7Nh!1L%&5P1x9mr<$7&8yu)Pwc_cH%@(PK|C%AvHf z>(n#9I5jygQ?{Hdk`dB;Cb$3|;f8=4XJ;$j-ueUb3+dI3wlK0?i!OsS|4`-zYSRxoz zO1`%Po-4LH;;>npF}&_|1JC+zN{n5t(g%rL&y^~q0>fDp$4e+kB0%kJ>z!aBJ)OZr zkB(Ak^i8R-d!%V%zP49at`kpY3xGZ95J+1RIPZ$<3#xsSg97>$Q)_82dv}vKPJz70 zfvxY3O4ZH}TXGL}VZkYB(vfXkhi79iNUG+jao?gKy*u)O3lz$zTEdVoqp-dQ&gU}} z%<&4rwF*H6v0OQB9zj)S$+#%`w*}DeYRaz23*DZma{66>PDC_91xS#AESpQQmOAGQ zqgu_ZTuQ{M_GZxO^}#&Ua@`NS)gBc2Gxxtg6JW4jeTE*>GZkFMy!qmTIC?WA>}>if zMQBNA81w?0)U(Sq_2Sfl*PT%gS4|0)CexGLlG?p;`!k2GRo`cYZx& znuC3coNfqMejl>_xSkPbSvfd+a0`Q2a-ij}@P~x24`G_*zAE(CsN`#F6hQMdVQMwl zBPP`3_?Z6}mxX71&YNH19%2M@VF>lgghTGb)n(E?_g0`9b(6$%wD}-op=qoHu>nmK z{gSY}B5F=AQEG!>E^e3WK08GnWQ`dwZZO!>Ba^!MWHF4#ioO79LbL=5ie-3kQHR#FY?-45uCz!iApC_t*d0MnQIFZ`DDc6qVf6C@d~@PImuZWhls#MGq0H~|GU@d zsa=C1bxe8lsMW{8l7`03rv1$e9%mh^doTy1W?hos-k%Y&WSt*Q>Z^&lOUG%+dDM&P z$yrdn%5rcZj9)!fQ3fgSUe8!NT?&ilIaWN^#zewrIs0c<0$3#D5vQi=pb88Mpc-@M!ue?72A55-m9!d=36v0bS zb7wBt!P+XdZ}+8pn2w63VVpG^pMyxB7O_OWc7?WO-_3!K84MvjFKdlY($@56t2UHC zUG;}Omiz>_=i9W2QuSMAw(GD~(Pg?dlVLSU1+@pS@*RP=-B-y>c1JJqF1eeC7eH5p zYw$G!`t^Gc(;XtKs`qhZ@0dLT3u@x;laa!P%!hU^RvzAqIhwup_?~;u<@QYVq_8Mm z=hhP3_KTcxV{d~QAE#8ggjfzJ#r>}cy+hG@i^}yM{u^Ora9GS6Zy7i~BdOY|NgEh3 zSU!2{EMxITM{ZK5aOWzTY0fDxAnX&##}4{V zG&<0Am$9zG=3vKUq{0qrK1ypgs(@?>6K8>|gahA*SXD=Y!D=X9sEChS4!t4rn!dm^ z;yTJ%QBl!Tq_a>DZqS$hYNXO3ZqX}HB`E8zYPQOwflo!6rl#4z9akRAAG^sE7S`d` zBl_az29v^Qjj5e^^#~JnXSO=D>>8)8O#Kq@Pp?uz8%yr@S?HEq-(ptJ4-98lZhA;* zE0qlN{jI_v%w-xXPCnWw=?D&HRTj8J$ZcQ79Akq!79wRPdb#luQjfaw^s;1Pl&;>m z!Tj#R?$%Ygn31Dt;C)j=Ty;kld3jbRVd6@1=@NxAFVe*JZSSRq-x0qA#7K1hqRXBl zL7wV;kF8eyan2b0y+D5~Tt4K4)b)R~(_fCS`}c@<@^5SZ?}5ut{$gT|55E6B`To5? zwEHg@==k6{>f=ZKdjZkYJKlfB>i4mm#(yz0$4CD6CI0EG|Diqc0;t<_G30Q030vDD zePZCkeLZ=G1VnWIX+GqHF&8s#Nay_&91yko-KF@YQno$wAJqmf^R_0S{C}QVool(a z&nXZQI)mZ<_%ZM+P`!UIx_q4=Y*X(`-!$ACDQE61aA=EUW|xiS{)ajr-00n>%iwM# z{UIrELRS8F6LmfoTdLd?co4xf{BGWx$M`!Ai46Iq$X`Cs|KmZRngXCY&JboR!MXk2 zZsG`{>`l^Js3-Yfk1F+k()+JR!L|SS9(%vvBlQkk?r-;aZw3Gt(prv!S?M`7PZsC& zS5_mr{Q`c+)y#h$4f+?9RS*%y>xC$Wg!0JKS9Hejgj_X+2PZPH56dMAG82>0+M6fo^M$yNFd@~ekmV^R272-}u+jEc2wEkuw>zSqMt2)RBFQvL*7;NNZPy*ROPd()&POHCuvtf$4Ue$lqyxSyrB`CTU%o?M6C=FERkWi8$Y|kWHC>*ag-w^w>mct|Apgu zlbj-m-c3-VT4aH}R6A6lT;=!td4(E#FH!5~2r~n5qTtyQvmr|qxpGBlf4+w7?GzmL zbCHQ%y!q&LrfH zl}7G;YA+r89PlNo!T)NiLr(e|lQzeEV+khDHb;#rSDohUQ){EJuC2#frh}O*1KFw} zv{$ZNwG@}XTcs_W5X-`ZTk|6$q( zw?9T{zLVy){Z*o^Rbm{It68ckW`O|))52^jZ@h@cVujmj{p3iYU6fB)SwUQ_@u%|w zzI`EjMq-B4m$b^AV^+tiPHEAH* zK5gS(RDZR_Ybr*dd*Y>JWh26vg_{L;8IwXk5P!(|Uc%@Z(4VKHb30`(8{~w3H}6e7wF^Kq zHTUSjpUWjt^1)A}W;Wk%3F8dD%gAU{`L=Vq;ghgc8*mtUDr{Y}8CLCF-PoMYkWg+` zctFi3nBnsAUtjm%fUIR;%^ zeni2l8r~YwDt&@D$hBWzFRf;$Ys#;|H>96(| zud%AVx-i$q1pKg2_wDe1KAUK&{@B~lk1ZoL8&3_n#-aUlwk)2{PHIh)i_vPmy67#^ z^t{SjvF|1pk#}y36&16OIi1mVk!0oIvKW;3o|4k1BmY5SAV)O0vJ6kRPx`G*~a5_aY&YPB+D&goj_4CAem8?gMjMsfH>@kS; zMp{g(z+O@?%M((szuT0^aR#>e5nsv&^EyWsH{!338I_|DPsmUF;41`SfFFjPm=C*%Ey-fAXu03U&+Zp|5ELZ2LDH!ouXG%KI}F zRc+5!i2VEg)^CnW`-)`j?Mt*jhK7aSRXFe8Fh(zX233i>lE51E>z4|!=6{-K&wGIO z(T|}G0rSLuXZT@DzFZPN<2SVui8r4<2LAN{L={f})Sz9i#B_ac@>9C=F|<^M%}iBN zvgbX1GKDM2CsBSE`{$-a=Z-<$z^?M8q>9#^e2-GzZqaY)%vAZ;C-t^YIRj8wqW4nM z6C+pIh$#yH{qbePV^{UjEhBrmmi+H_NJ1#+ce^=$?Dy)6si>gWjN>@v2|(08t^U}n z7QJU2P@LJkdPA%=Nu>6lb3{bbksf$`5L%lO3=y!h;_&j-idB^ZE0aL=t_hcR*2T& zlrmpGeaG80?Fo05dDMn%jd(b%=A-s<;X`i8n9ap_ds-3@3BDS%amrnH7MGEf)fQP0 zIy}s73u5!|VGa(!7Vy>9pzXJ?>{%UWDW<-<9+aGx{y_5X?AIVV0S+YVWk=E1l$^R8 zm~ozVHpn3Is>_xy6XSJO^}G;+HZ=*9p=|2QFQ&FNQj(G(6)4K)&V;J8*%xbsWhMvI z>ygQ4_a~mA8lG?W6qW{Z;@Z}}jV5kF+;NmkP7`^C6(CBuy|w2w=N{Q}eP^hxpqlxy z;gLxs!ow)F#Jor4a^+giBYp<`G=F+mCAB)0N)AxADOL8Mf!;Xm2cNbtqn zUZ}DTteczDue(7zD~gVajb#ZII*J$HlPEPCI|ix}{q!Qn+X8jY!5hMNhf(3vCvnDC zjRC~EEyjq+Q?@gE=UWn(pi}i_CbNbvb3IqC=1vC-UGF98UFKTR=HS$-*{&wNX)%1w zh@FAgT481eDpi^tai*Ciux@kP2)jN}C0}MfVHmkGn8jFOmsHiIDwJe8kpBI}X9*w% zrx)ZLsi}^5li;22eWmpq{A34_;(ilM2^{M;$DkYGz=!+o`t5C;s}=-uD#{(j`jJSf zHR~E*#8qvsAmGPHsOV2stnZUVNtw3pLr$EYrUjZ3{lhe}3w^i-)v(1T6SsFw!mvnfYUehgc?X&3y_l)-R=L@F zh6U8{h(5`MGEf75pwlNU6@H)N3-v%0c(LE+d2b_`Q0-AZb(;LF5^xJsr3S8_R{{34 z9pY>?R&ysA%SbECMiRvqHQzxU2R}F162`>%=(gDH+o#BMZ{bXb@|nruwX?frac3`; zMMB(=8js&B)1&(%Cv_DYYR#q3SN}?eDkK z^gmtQhJ*<~bk8>(?8c?K`xafLqho)U{i;y==ZU+e!1QXA*{AhqX+54=5OUm!HlL*B z1eugnB^kynNI~RHEVIJR+WrCvQ^PJbcP>-o=QER?oY(p6=EI|-Kil5A|LTYL{)tYC zrq|8}B_3pe6l3J++nFm*(IJ0c(QaE`lS}^3u2P!_f-&{BTm7il`)2yP!Bq~6v68R1 zUj#IJNq#$7CwtnArmWVm3#3F=q!pnzB}`kHN4#Fwf}|^C+x0x}(m~^As)$4EC5hxG z<*6dTaz?VKvPjz7=i3j7I4^z$Db*;tvMEh>?P?I^d%C^Q#<4yYp zzmCv`Lb4pyJT?&7jTB8yPmewPuFAxs#>SZ@wa+sh7w@h#L%Z-9gk&XE;i$7Tv0E6A z<b|vH+4Hz)Hxn{+zIcGWzimA4X6HZ!X=63Fhv|qDTS)`}y zecN~6Sw?{jM#2bj&}@xV#Pt=MlP+|1f!|gaUtfM2Mr*ksKXFM5y7u*RkeyLWDC7HV zDQDhW<(~!6cG>GuvT<*bi-meYdg-CpY-t7F4HxP~>D8`(-A1;>+>|iPW*t4_w$AIi zlWA^WofNOgM~4Xr(XOzS{1F-!X3#OZ8_LQ*dfNCgzZLz(N8aHhsAA=tNiB7ObV9Yu zHNv(#(R{Uj%Q&i54@ZtgOvG?GyV7`}(9XCcM~>hDR%1!l5L003U%r>8)V_uAKG?tB z?8F1J0-8{%dkdiqavb(JCrP=26$7+8`Dc`>VOPw%-mXcVDopf{?(mkjD@U(FZEexY zmcuQN@%LrWqUs4HJy`;U`I^V&(kg!C|IWUh_UziTyfE~!(R7Z zsiYXHW+}pAhp>aW8nW}Nah!Fd86;f9 z&acP|4vxT#3aT-a&im-9C3>h1NLp546304Dzi_obxw5Rw6N}WYuxr_2NOw;7<@&nW zTBF1|OT+VE>5c6YBc0ITzENlG_F_s`G*V#w`h6a4#1I?js~@lYE_&3nIjxOq_=%vC z^&_e_=kH$Jp<~Ig?IdcpM|s=(IJyX~AX z>Hpzb*>z(fT7{0!G;oC8@dX`upbqB-o6`iJ!nP|PKJQhbrY_xXS*|^Nc{2 z_0CJdw@sNM=`u0*tYAWeY!F8cCKnK|cF(VJ+7PZ-KNw?NdLB9gVer_Cte8YR%zSft z0`u4qXL3&}!JYwZKteZPihagJ3~||IkJ(*7a12GUXoy+XT6pg)53o;QH%5xP9{Np2 z0yR@reaYj9HGh!}Ga(?cede-0-2>|%V4^>6+o(as_U9~UtXa&!lUj%w;`zFER$U@4 z(mfj1OK9*XPjy1XwWGm?_MZZ&0S*1+5PHC7v%5jQ`M zqiv!d8--`-^R72YJ|ZN)u!JPzcJ^#(D$kAFcQFq)-0$|KA5Im@gKjZJoBRkH_c|0( zpLB4i%+;xyM7q*Jc}N$TVEOCwyW?9E7?GB}tuWb-b@^&})bpqmhn#ucq^_fVuvg6~ z{hwckVo?)doBK7J$(4~=DHjky=h$F>JbODDRqWwjvpd)Z7J@qaxB#oUj3iIg%45Fh z!eZM2>Kj}KIvUH)Fh_pNU0SylcAnD|9HfRxu>HYT`wcd@;SCfHb*Ce^5fu3rALUwC>uuN9^271%u z-s$;{-Za*^No=Q}QVOvzRp~BxE$me1yX z9BnsW9&CVKoF-ZZ1 z7PH>rG?tEH;fS%BTT~pW(Tg&lDC@YukaddK9sk0k=k|+K{j7Fqbsvk=0oh87@Z9Z}{En-Zkvf9CPoOO_fKlViLv!?z1F& zirCF3I9#qfn07a4+yV2<@G493hBE7^>gi|&`h)H;`sq8nvpW!jpB*0_wLOjbWo5&=ud5r~sO|I;!@iLoP!=(-0m-l4i zSFcn)#5e>d(5pi>P_#L!pW_Q=o39`ccfiWeGSBIDi{0wkZH*;qL-fYD3rV|^PZq>u z#X+F`V3u=f@Q`1l+Bs$omhlC0XhkNJJ^@u;8#NgdC|-zbA4gPp@bIFco>os5+LOG< z_Tq0`6cS%tD1mND}^2&8`i>+N5jF#aVRQoLWR6HiIVRHq`}bo&wJxIo5i2E$j@#L+)I9QSh>CM zts*o&{O&^i^1w=}>{#S2v#R&2(o7fQcQ|ocrKYC$AiJEo3FPM)z9ilCz}k~#3jNZu z3NF4^z@nOaQ^-yCmTVmNBXY4~!$ZC7$BU2|9@GAt4e(`WMS;gXsgxYr_eg2_?J7J* zl!hd~)Y63o0wl2uo}(l(j=Ke{_UyO!YOoAkZIwDZoIR+ymOC!C8HZ=^Jbj*DF_ZY_ zO7}i*@K!7H>1%_yeQ6nri)rNjd750POpdgHCof^bO_jM=WOfcm6mV)|B@eQK&fib4 z9$J3<;`6n#K`ek>$P%?=skRyRW+}T7ymGzob`kCmk!E%?7*JPIl5 z$Aw6s)Mz1C0YR^?Sv`fR?y4bUkK)Q$H$fMI+$!6t5mE)f^ zBo=Y3T<^uI+qz! z-gfslJpq%sVFv26g(8FSB==jKwRe6={z(<)X;={=$QpOqXW2 zY(MXWuUrB@ShP|YbXNP`dys4&CyQTFUz*6NYCC-LAOqXVm!$=e7~}k#u69SmAjRvx zIn88PyV4cyBrF5153CBg126Yc*mdrEsGjS51&#^a9YmY;HI(?Ub}AIey`%~1&mAM zMoY~k#KhhcV$OC!19pMJi9FQaHkRT-gEZW^E5m+nX}b6)d_u8^fvQYq#hL z|yf3Fvajsx`CU!@}N-%<=wTvEGu!B2RyFa>@W;<-USHfoyvqWI-D zMg-qlVZGV?W@Iheo_Q@=zs^^l>C~j_EFkhF9<7&Qy~dm%*xm9eP}6N>q~Y>tXDdB* zul38M$q7al7NyVo6mrIx!#RQA4towf{K*FjpspVt&q2b8I8GyQl=cG~o- ztk$iOv4vrfK_a1p!`z6L2*@o1FU=%?pBOV`L}3tid97DR6Pwj@7@b^oY4=C%I2Nwu zUEb>NZ`QCK}`Qb^{^ zZKHD%4L8=qmiWt7-<`0aLyn_&mj}5i49_ACfBYZz-t();{@eDpfg+-}ASg(&0SW?2 zla7i?4@xIAl^P%*y@LfrrFZEfO-cwgbWjjNF9AXcRZ0lG2M7u08}I$w&mL!=KjFy> z%@__a8PSCH=d(^j)jlY1edTPkNTYaFSWsor`R#&i7 z76=3~(kOpVV)0xi)7ogu;!dAcHxpaf05)jV>{m*d0>eL9vJkzh!lMq9xopfCsi0RyAmWLDby-nsMvU60) zUgf?h2WPp8RHi!L^Om4jU)<8UhwpqTU=*V(wum)!xQAEZh1X=`6%Z~9oDmm>Bwth{ z`K>wA*898pO!l$Vt^(7Zr7yDA3?s?Xw4d@tNmM|i_3@hR`YguimvgJbv^ z>)2a($8XW2(DddMT_%87+jf<3HZ8G7r(>6nwz%S1e0pSwm12F?4M(LnIm-o?POZ17 z7e`%8=|r7o*DHk1IMwJzynz0ChEB(*FuSppIDb6nTKAZSUZv8twz964xT+NXaK^$| zsw!mdq(LuM`=m&?+~!-w-Zr_^3VUbx9hCpkaaQS7wLu2oIt>}Q0q(slCw#Yn`?zbc ztLLt%^KULFU30E8K3ILYt4=u4k5U=l6q(U~;*-=Phcs*V>Wz=KMsjIj32JSo;>kzU zLrNUX(STO=>XDTE&36y&E{FA)OCz@DFEMHL%{V{oQDvj$V|f@G^=7&BVHvC+lb81$ ze;YA7W8Xbi*6yxn($_2n5xtVfoRth#Wd324)AUl4+1kE|y^k1l-X3GIC-~|fFfLQb zOUNog=GiivB=2F!TK;5d8Q&`}PM?=WL+dXrdw|!?l*YNcGlY!N9h*R<>v|4s1=PIZ zGzC|Zy@3DDj=M=i4Qx;|r!YPz@Wg+gsnkLKn_piX)t+3stF82Sr8hm`+)(cG`U1t8 z+=B1XFfil2WHh`j)FQSptv>g)tbuLv>d)B%h$igkFG8PU+WlysUzpE4@SA_ioCcw` z2K?I#rn>p(S8!h&M)jQM@4oR2c^VvN*ddT;HI_&)>WyRF_tk!CSS^F-GD@4M=ie-Y zk7J-Hhb?B5@^{iI>#Y0SM+?>d_l6bYP9J)(HlRkeP>))yGQ)Qp%W;X+5v%MBMoG0> z-S2dFQVPB!Wh)TPp%77^tvKUwqfx_PBr$?Rx)zrowY9c{CLt_jbzL`QuH@??O5>0< zsEVFrG331>f7$|*883g+<1`FM*4(Ffy+7TNh2u~qaVzNj1Cm|q^A8-|i~m56tMX?{ zj3|6u87+@0=q+@mN1~%pEqu1N4w?AeH~m{_59T^@%ITcBdX{=z@bx{5lspv~i4AZZV?_`LgNCauNzTF#?3F2B8zyGvEtI7O*IlJwtUPA_#vXjJ6V zSob2sOBlcAuQ2*$<>xyEKZIWTYe`U;r*)cEYEwsz`Im%V4B+KgXByJqOqZR#!5eiV z=^LQo{jjF}M=s;#ZB~#=&EH639IpDFAg9qRx-MZH?pIG9@J0dpxzb-u_TIiR|e`@Ha9ys*3NU6 z`0VrbV>(Q#RAEbU{>Gk9twdI1yswITlf+VH3twa;PKIB#%5NON-2a?29rv!!z z-SJ8mC`uHwy~P`?0Tp0%^^sDj4!(>-d)$;9`f^#wG8BIcUA183h*U~Pmy7tY)JRTL z`vDJ#96De;ZZ9PNeY12JKQBYS`M}xM>NI$PUY`CVFtb^8HfC6qApG_OBZzQfVq{}r zKc5~qFHJ?bu(#j&Czf*2DP^xibTioGr?s37@{fErnunZL%Ih+5I`K&=s_$ACedmKw zcHV2`@XpOLn0)I>#kh5-GsBbwE{EVT@Gzi%z6*9dGp;KslQjODl2B$(enwZ3t$yO@ z+&QbJC!mZev?e2sG$2sQsw%?zv@>CY_qf`+AVOS9X z9=z8%Mk{vMD!aeTTL1iTVvx+dKHCno20AZ@C5`Wh2 z^|{NbpFWipvs%AY%Kufn*BHGCq(4MkutP(Vy`Kx?Q$sgb!dTlH8a{FZ{&?0D?dXC2 zmeehnMptWX$OEq$sC4w*rwSde{JMqWgPJZkTJ|r`9_S52+opU;suQ{X*J$sLKzRgqih{%BVL=$81tRjSIGY@f&Rj$#p8p&#&9w;?ViDWcZyIt zW`N|KK3jkODRm%$Id#P!_CaU!qrb?V};Cc)v(r&JlIs+IWTS_gHYjV02 zdXF?@5}NZk@aJP|O8fFYj}e~Vosc3TqR`MEa+UZ|W_P$$_lIu7hlOyz-Ep5SS0~@2 zdcnyTrGNIQGR0Dtv@qr3AZ#*?$cj{Qq_9`s=N_Tzi6MOSMK^zja?LYRnE6pGhDTpoan8k&AAasubidAoM|*79Cb75 zd`)XD)$T1|C>o8dr$DkHWI?#*@B15@!|Qmpq?kyg9De9jD&#e;iS9t!Ayr10gp{1$ zMTMDZiJ^3E_qL0(JuIo%v5EcMuq>|!$x3#rDmX6ae@W0M+ZC80d5sH+?!sMUPm$_0 z**C8oLg$d?6+^6rpU1=H_s4F&bylBD&9(^(D+Ln2`IG=r>D%UPo4|ODs~D4q3a&^p z{~CDW8GFGL>7F<_jk*oF?1;g=5DHAmQ=`l%f_B;A?PVVM13BpStrxW{*z57@Z zLwm*$WzBcgEze}rpT`YMOZPgUPgN8Go$-P(IENbLUEJf3U{twX(>&#$LaO?e=Bx_H zF4jUbF8+7g%PPew&WChXiX)uT%{`7RHlSNiqlb3QO?cZs(7|QkHj4HqG z4xwLxij!5zP$8Hvg(+Qo*cl}PaV=Zjn4kXR|2QSC1#Her$@6x9|8RKP)`1&enqRxW zsj{ToWzn-LTjI4s3mhU(-d|*9d~q;8v7v|p9?)~$(zNY=xM7F{ z=rB|@S!nx;D@OSnG8=O42Zxepg|0P;$aQZeU0Acwh!yN;3%gsVyoJEI>30BkhSE2c z>T;GoJilgUQ2?erHs82Wk=h!Jc{GXf$e1HaZ9-2ieJKR#T`u#T4Qj`f(LYMbP~d!0 zZx#8+qCHb*e7KZ%@2rOyJ36qGru}M$>A4>a$$5mY60W)-K=!CeP};FThoxYh2JB3FSUHUYCbWQ z@hqFA8^*?(l4m5jvh&-jS4tUo13sDR*1b{DW%$El_s~a>;Caxe$QeOetyAzLkuP|z z)otiL-|MPqNi;KQ*vjUWUMUq1Gc)DiAxIMAO)WvD%((62r$E@tjmh}cY@@?pGnNA_ zFYCaeR#b=^VAN_HLGC^h?caq#??FQCD$zS)TcVsm6TwgJ~&K3o!=3#7zty z78qANk~=!IUGo00nwH*_8WoOCBPb^7pyN@BZnP1i>{-WekvUfm!^TVTI-JLA-}vyh zW+%u|`#<~{YE}LC2Xu#T9`BQJ^vz4>EyCh`B)^nioQ#H-N*o`|FN{N$$D6nsFH72O z+n7;y`tzHPi5Bzr1u%e!u*L$id21-EYI8Q~&~r-F~;ZPzE#ew+B7H4lcs&Re0n5p*;uKhB`dX$0A&9MfZ! zxA7k?$j7-)kXwz8a1Q=^%nvmYh7U@4V4}A)U93jUUwt@mMa;Ru4HG^ykvld60-hLD zZ>voyhoc`VTpoD`agtKdIndj5bTmA1c5i{4!fY0!8|SDyuN=NAB3oEK7y_NyTd@^} z;$90>=p=smOy~33Kwcp^8m(d&E+&9cdQ9jk9lSrFezGw7QN@Lb=a{p{yNUN~v6I=a zn`%Aj3vkHVlG0Oo1p-B7_Tyf3ak}nKkb6j@DxN8`N4!5$qC-IyF9tXCF+ja8U-2~i zZQ2Dt{s>`|J%~x3`DNn!C|^gCS2bS1l;9z6+s~O{FppMq%eDK?)IM!4AAZ-M`i42v z0W(}6*@eqyp;*88JL^Obcjc^vDPh0nTlkx8FT<-`vhyY1zeiL!MviPbSDpfb#kgkp zs$T0{yzz}DPS)#Sm^ox5@4Y*A?xfNPERA5LE04b7N37ehG__`yVknj}^!Bp#hfV5r z=oY9EH}sIo(mex?r0%5tUGybj5{_E_okljy0^-@$tC5mH>U5lYK-jyUZfJke2-Dk5 z#fA!vg<`3&*$~3T#}C+ydbA(4=gp`#l!`g~wAkoF6&enzq|w;#C{=tICy{Q@{RDYU zD@P&d!ryff5`7sUJnWDc_B2!FJ~KO0YG{@MNq3&h8XVhTBR5Z8rl{&lEpOO(cAzM1 zw6`q0&$S%$+_Fj0?LhzFE89KmvCMR;F;2>43?jJZ_1P1gS1ty~ejM8X63+KMfY0aD zDVwRTA;S(SNyIN%e^J{w7Kr}p*G~N+>yd;dj%c3Uv*H5KOayW5@TqQausGZ>^+D{N zF~WY6GOylAi?qAGYh*e<4aiWgRzH+eo}!huL|&gkVs9byp4TUzQs6C122=KV=emI3 zPpA$a7?aBiu6(l^a&KiO+2w>0uISDgpV3A*T7#Qp~Y! z>rbut6>|@EYz#Yq3#uaSvSjzkVEFZ>JbPxyAu~K*uF4hXCaLFyGYR@=(5S2cgESmU zHEGYBp-DN!a^=u5$rG3Sq>2m8eiDN3n39Z$(HiwdaZ4jD&wlKS2vTeD*v>ExhK@-m z)lvKwpW#$X{4%Pi+Ss+K{1E3*I-BN?d3-6py4+N2&~8v)bg$TYLlYUEkGO~SUH|L~ zob^M;tct(Gj@KXzQJ!#-EdN{Uq>vG(!psVP+u?4SG)QVxu8nuS`QP$er|2>3KZ9-= zyNkX_J-T5X?KAoAYxda90{NrJgwpOZ!2vwdup$n9kbVGpj@hNStq!m3+^;{HwxYIs z>yrvp5@G5t!>K^wmocm(gz~8d1zrnIFxE7~c$N&^3(}o(#3(NUc#pJGIcm~n0JH6D z%-UQVX%`059cKgNs}E&1N;AA_s5r5=@di1G)Zu+{7w!BpUsEBF}LF zMZ`X~o9ZGXEEtNcuL=|CG<|CwvdJ%X5`>901SwmCCZRO7#6KIu(CdVqp~+&w3*LKv z;kq1@5#muXH;zC08+toemX<-+M zI6=a|uj+=6`Kd>fwo$WKiWcv%q73nis{#LwVFf!%;-JUJvw=E)g`2EXIFy%RvxF%lpr_`GW3@{X&?I~Q}PG%G{zlC z>WqSvkYJ!0C^V-Pmmd9m#0oqjod;VE$naMe$T}rDB`O+jqgGj}@loeFx|0>Q_vNYG~|SWF7SGcnHrkaZ_JYzLx5YM(X;;S6TphFx}Z;D z3ZC+^3UAX%`i(XGQ>VLfb)&Om-Wih;#_G-7CY;p|_C~q-z%10rb~*>+o^vC4PsgiW zcMhu9^43mesbrNWr0kBngs)|5H5}-sdQ<-HP64MSy*Tyh`jIx=g;Cev@4)k;8Q2Fw zcb@RO<&Y+LcB`kM7(4j<*)^#$2lxpgsgdbqBe;EjNT%qIZ|`Uj-~QNfWhaW$6^d!S zI{`~)hO4Lh=b9A1_Qb91Bj%n4$G3qZDa)izictkhqsY7MT4GXn*q$V8)qR36L3X-h zm|b=&P3F$k2lnFc7~uW)9S@~78~jFXd$HUPCI=>$uZjV)Y6<54BZL5~%vck|a8Rd0 zwy*OYGiWu_A4`f{hxtzoDK?n#^p;0G(bmp16Bg5*@IJb^K&rH7084hiDC;NN0Tp1#mNRz+{#9^Zefv@GjO z>0F9zr)x8FyvjY7KWnQs_OYiwCesyGTZKY9pew6ctB?cM#P^ZopXLEa3H%~eGqu$Xt_=M za;d<99LX+^mH&P$-`ADAmCr5>mVsyO)5GIU*aXN2#sYVEwbW>k&nq~p!NiB^=Mlkc z`67J}ChmTq9lr}k6~eJ|E{vvz8w%TNVwRdi;HADF-Rcf?jre&S7SDU`ZfO z^Xz55+xbHU&g>nNNgKkpyYibOnU0JcDZny9xHai_R601S$a}Cerc+_B{<-xc^^vZT z?MuqokpZbrv7_ZD>8ofO)BY9!Kg>nlKxojb_g~oV_D%(SJT6$beM75lcCUCQY{su% ztt3!wys56 z)0`slJ7ZoeAS;03!FDW2r;#=x9d|yIlJ74&F<@aV82RvD*+u7COL&@{uO8;xP;%8# zJ9mnp3Q>+N*^RcsvU9Ir`#Tkwjd4uoibLwp?a5HO4j}o=LCdihN*DLOgoVX{?cra) z#gLtAx3VTC4S&=#0j=7o#rIy{-6i)1?=|n=+85nWs2fd7wxTm^!=1V@RE)Uu!yPT_=y+WS_*I_@jK)#$GD9g3-D0;fZ!#N~o z%VyO2du-=FtL1^wMu#%*=%{tp#sy>)P! zdrK`(Q<}$w+NCA$p>OFA*wp%6YjvU=bAD9;lV7IH=CFwFx93gtyU$a#VrG&ffeEzv zOA5?vXFIxS_63?;b|b-w7BdFZLDsCY-=3abt887~m%Jp*Ce8LNcV@5FCH1DL%yhnH z*vAjZg;9gU*pyv^t7y;X4W`2<jh<#k9=$}9wiVqgrrRblu zU&cF8Txl`MqDJ{^Vhq%HqO ziW`4Vqbhvv+FV-_+D8$y_WK}l9Q`rH&#hXI9hAWNibRkZJ*y2OR^rcwtUlgIdDsxY zFe5RU5ch-E3zOZkyY^ zaxgU7@1Oj-kzR^!K^kZec)EsLw6lfyLDLF z)MXx8QyWHCbR>HeP`kN#hN*S)87}E?y$O%`@xnJA&p{dfu-US3xehW*_#IV$q`_0q z3vQ7rmXkS<1^@kKkNnWElrY|uYraGGkHaQ;DVVkn;sh&fbi+diY38&SI%FDwXU8G! zQ=n0-#!~J;SxV;_r_`H^(u#c*Tb?GVeQT=Q{D}EtYN|ojx95C=Fwd+pd%rK8RM^`TWwF`yz2jwoyb-O%n>{uTBl{?;w4XRCF1@pxSYw~Y-$#N5NM{B7$i z^T9oGqB`ZZp+bX8i}|xS2RR07VN-<=E)5UG)!G>rQ0NXZa0u)3Xt3D^hR1w-up^U$ zuC5>v#E|Q3#o}JV&R~JO+7rIJ>oT!`|C~DH<5z8)SfX3Xa{isL4UW$%`m^T;#Oxws&YMUbG-1ozp?|q4a*gBTvMP;3agtJiz~|eJU2Q zD<$XFn7*u?%HWu+tM%pWbNn&c0VFZ|a>>q467{5gjcB^2_N?w8YUC@AJ6@bPcZ^|&-h}5`1dyf6Zsi+glSluDD?&lI*pVPAJ{H$TwXkgUjZOPSLSOF zjnYKn37R$>(zo%8Vus(gNe^>SBOM^{p zdl+54FemPYw&+4RfOVJ0syfuhM)TDzo`EoigpeUFhT99~udm@&jc`B#vU{^!Ggjr4 z(5BC@a_S~GcXP-{Wu=Ffjv_ij_Ds~parvtpW^eG_jGL~R_ zwBxl`A!Z^he9sP zQf#!5d|4{7+e>~mZYz#V>5-_Yt zV9D`1dgJ>no41st*Rz)N0NnxNgw*+~@^s8(@{R)jh*{469d*c;u_dB7`ipR8;c{1c zeZxV#&~66=?f8BA`(~K0R;S|2N#n|JB;~=mk~}Qz6Mw{-aRM3g4es~=-J%N6e!AB% zYxWUbL=YDhh`eU>mvFmQ@b6!;Y+kDq84Yx8c?Kd4ysd8|FyiGYLQ58LCmAX&td6=( zZ@DvY+QgMJVidXRxgUD{`%}sPy`E+&d4H-&qhS37NL{%o_gD#LQH-;1n7nJdRN5g_ z^F;6zbl-MhX-z+#L|mhWc^rEqNX;Gi`!bK5osDK>W`;qvd`T-V)Hz52?!Z*>(~0y_ zj}74}crO_{H)P_e3y{w_pDcm?vcP=W-3gBw-+mQ+n0H&)<#HzKFOrD=`>CjJTZNY5#Z*dHej1QDwxwF$k&gTpdBHC6#QAM5Jr9eqqi>e0c={vA;1- zo^EK6sXyN>K*|3vgz#aULFJoVwCe@Ad-@04tAY=2>*O-tG@J0#Nfd|O0_j(CKH0HN z^W>V|IVt!ZYD`U*Zr9@9sS^JG3(GK=$EXTMMRBVtJ$VuUf?ABBW!5*q{rBuY=Mjct z@$`>u7VlJ<^>&q5;LhLCtc)0NW0wZ1cv;@xrN2L`{yUfBVH_2$+dn?l0J`G8`yT*R zsdw>TN{RZ>sjo+WDfNHfQ~&(`LplC)EdKYA5crqji(}%2wATBc?sQ6(smcPHT@=_# zoO}(ie4S1JAiCvG@p<1%#m70M-4f>5FG^BJHYbk#l1KyQpO=xwyt!1;$AmfR$VaGtJ=0td zs1P@RgVsDQ?TVZ>h_&K5gP7rkC=pZ1T}~iCVGcRcPlNBy)ykO-;_{Eo%rtl2Urg0w z^g0u{BJI{b>E9CzG9#3N=hbfs3v0e4wU^nfeBD<(Q{@itP4P49YxmsR45S zvEJo3^SA57x&jrac8GlA8vw#wsDkO?gbuY=W!<>cLje>+p)jyFp zH4E)nk9VJjzM=uiaTWr$S5Bp;KPuFa^V2}tj|)BxW-dPQ;Ga8M*)g5T8whHa5TEvK z-pI&E&ZS$oI3ww4{`2wgQvMRrKm8%U-qW1nny!uVI8MVZoNrWBGVh*%$vTyub^L0h zVrto-DK++S`X&{wyL`4=jQW9&UDN+Jbg&zQZiKaGcNK$sCih^Tu3PSMWNMu^QQ7EF zmwNBeF3^AUJ;Pb$-v7YQ)C#~P*zoZ*cm|IYIhJ0!qp9?oZ$GtYhmr_UF*2$h5eFby z1VE7wTpPgCstr8K&Cy}Tnw8HVZTY!0?)h9=_HMfv*)+FVXk25lgyPUFek^&%pd?_n zHB#Yljy);z;zi9WC+@a*p|n$rAgI2?)4A55P_vn6W^P%VY%66lRA790;C@VEq77f( zf*+q&c3F&oq13qB>!4DDpT8&v{C}yx*q8#%Y!_v;^I8OBmdc)QnzI;ZbW~KQ8)%Fg z%(&v)-pJSVZ@sM_0_>eK3{5&eD}ik=GrT3>-%#wI^LZ;ZILu1dBf>RrZ?p8 z_j8Q$Zx)jI^^|{74@dNb=Q?1PPF;ndWOh0NZE9(Ds8Qk2=UP?~s}2Ce-3Y!cB*Nt7 zMvWG`naXaNcTfq0j!Gb%JCyqT7njsd%}NBz9!3vQ{~?q7PNy%s2(K+U)W=iBU=LFu zTE|T{1u5l5O*EYVG*qN=8YFg~o}~?7k{}{Xg&iPeH$b*n>ymG|PUmb-c00~YZoLu# zcq*s=0(*=LO#uykj`bkGV0E;-^c)D#+(7>?R>`L@|N2MZMvKa1Qr4`p3GtDkaI`7i zTWb~^y}ytAmHr>X%R=5dKTpqu?K&{4Y#Tne*?FfA!vJ zb=hn=49p!FhKOQjhvktD220w7j5kfy6J8p3cX~Jy0gpYWir&avb+XH#4DIadTM;nK zPHVnayLvR}Q-`z4W_5DdZ_=C*VzyXSpvulBA>}vDXwJ6#&JUm2y@G*@?c_UHV3#FJ zT-uz%L2mjA59_Q1WaaofM=rIPG=H+f?((RaF_C;hzC#Ty`AeDDLoIIVWhlS5gmD|m ze+j3hZHw;Y{ms^lo1IRR^|EvI-lwa^>On#ytK=fQG?i?WiC$#Za}i%6CARwi2T0^3 zQI<4o+|Nu1)XaXq7-m zSv#?|>K&9YW9qxv=FRhV?oxXXQ%57?xF5T#GIiSF)QIm9%BNn?x(SY#-PlZTFE=bf!DaDPo=74oKZ${*H z-M808GnA%qxkx%DIgyT1%HG6A%4?*|#x}hmUVl8EL&(MoMO*_7H9J?7s3*3YTj z%qLmnk^bK+v4rX0TwMe6CG3juI?9`a$#l&_&51w7XW-axfX?X;2{@{K+o{`SVLG$7 zv{nT`E3u{UhRifG4hMmk5NQfkXF$;2a~nhRe43VfRX`Q)sN@h`jNDr9D~&dgAUU_= zOITX%$MbBNESGt8+GeyU4e=u*HFz~P&T!rF9lvnF8!C77=W004<;Dw#EtcUI)O1ZS zaEpC`toi5Da6uFwr#WR-I(T5E>n*BH5z zSHd>70?~fGLr%DFBw3!y*pJLEjJ{MMD~HhFH6B#$P)K<2Tvx&*NSbt|zg@i=zWnOK zVC5@WTgl;#KdOkt!2);V<1}pgS}!r=c;So$ zv;0*VK9jN1$D>u8;VMM*{|)HX^tYQ0U8w9&W~zhF^vE5xv*$zUdXlI#tuK;w;i8;o zwQQRIt4z8~PaK6V%mTRaxZAIE$*~@0Az#dWa za+(pjbhwXaw@m?Q+FeUh9dU@VZrtv-5ON*v!!w(?b}_~V3)^Zm{=QHeP6f%e*~_%K z$?xDL`=DXF-I^(tegGIgvyMXDTLV5v%K{dSXb_%{d_ZawEXA{px72xExR-WwH9S4- z)sVDF|Hce&?Zg9-8Oq+qt)(5apPp$T7Da5dcPl z*Qv0-dp#er^s5;c%4BewU2<>k=){9sKEN{byNbbqT1VYZqiT&Z;pU)3h?~r6>WxWnkVTw3& zsHD`77bkQ7Uzk&{szq#?KV>}e5Q`tQ5ddb_h?p3y5|0fhrupZWjR&4RPIn<_V$v0^ z=0|mcU2i}c)$=qa5?Nu)H>KQHZ?n=hd$R%);Sz;I3Kji~VKI@;BBj^$U@ux|7DzO1 zRg;AN*LA$E2JxzyCUuF~JL*PbELvi}C9fauN^`Z6*21E;C(yHPRy?%;$pN97HV!;N zNurRe{lCI4n*w8`oq%nxQn(o6?rUO?eBt%a0DF>{Fg1u@qQX!DOU2WnoL1ew7Z>iA zy=t;O}1bb z^@j2|T}m$;(Sr<6hgX%Ar%EH_GI5hQw_dZ2^j8`N@jGJM3w=6#y0;ymaj-q5rt{UI zt5sHCeWX{koV(8kU3I8@R#^MJREMrD-uXV~AQhu~&sCk`wOji*Q5zU_nK&nYfQRJl&=WNTtTB+DEyU)(1>@^7i#N>^kSuk%|_(16CfHY~~UK{G!A zXX%S);eKm&$MEh{GmVk!oCTPx`NUD3raJ~XI8u7hYGklfnb;aR_)fpt!{4ysCZcK> zdrnu?ZCNmO6`9chG2W5qYDadQpMS{SoiQYa>Mj=Rd1$gdbODj##d|X>Xy=u&a&$mq zGRa83BTpCc8qxpbg)x#icr7hjmm6SJxggo910dN5=VrwjUgb%-akBlLyyIL9A0^Qd z_GXBm+BI&jOyXq6gEg$2*KU9b#1sQ>0wqB%ATICwtN( zW>hPBw$uD#C+eze#z6Y>g#Ehg1;a;;AYE0W1;Wat0!q#pI#A~k2I>s;2*bq)Pz38^ z5#!c!3Oiyhjy{&BF+3OlUVfQ>gN=@vABV5ZoZ}({Omzr_Mu@|q`W2>*PcMt47wWjW zJRVXu+_9$rcCcfsdbD()GEwVUfOB~-#FGu=+=iiUnIN;x<+yib4knZ&##cbfGl$6m zBFn)vFtpP!?&a%G*$# z`LF^}ibr2Q)|+;6-Xpva?kw1_%vd$uB8^yNY&aC|&vNZ;eA-bkXXsG(hzjkw8W_e> z6@G&n`wyaUV1~&e4(b`aN`XzP6WJb0ftU&%-zN&RyG0*_(!D^!I5s{KDQm@}ol^Ft zOG~4{I?mO!ZvBu+aK*yq^=_f`X{p^F!K$sWB=z2Q3MsB+(l+b=%<-?WkV^N$(2N|zutZd6@85X_Z*XM#!0*n1Q zLCmXrBaU|oa_$wa*gr2mSa-YWvqgEW21a7N*ou0c_1~S?@3N4+yt6Q&vs%A)G5`G+ zREw(6?Fd%r@!ZPzUE9^}W)E#=e0N1$d7ya{EsQx{aCO*(D(bv=5vkcJ@J;O1A1mE6 z3QY>sZhX)w&t!Zw`z&s%hD-bv8^gw!=oFM+DVwy=9RJKPJWF6=`4Kya@F4XqDpmWp zgzW#ke_mSIrOf{qi^F@#^E~RQHUjeG?R!<*QDIg>%u%GZ8U;wQl2gbLvP%pM%74CRozb1ON%SFhJ$1{~)Nh|#5XUX+Me$k+ zjW-&-xG3It)<6Yal-jU8wi*s1=gmW}bMymEYH-d6km;>MQvxKwQBQ z6k-kr)MVChZ{QJu_Mq5`)MaXj9Hms zMTfdh34gWQ-yr{E|FBassi^RoQgRsG@4wXT;m?!q)dAtji4PoJCxyr=G(7| z*SD&Bt;+oR5(+1za(xzhUn%#THk(}kdSy^o%l9CY#(Q^pgqKoMamsslWLhwq2&tHG z`T*=HYlQ+qqDC3au47G#D)}5cEB#H?>;U?i+a;4O=ywd}>+MuFpnCg`soySlRGX5{ zueMfYg+HC8;w^a)D&E4qJfnJhLKOt^b$G9ZxzKUtc2v8Rw0zpcM&WmH_QKJ{fTGa? z@k;7*yu9AbLJls*4DufN*CIzY{&YM=4do1mF0%+h=vgG2ZaP!;hcajeqg@(0H-iMUGkp$+iZvoUS#aIB5_I-fYGpJ2`TaSEc7T$X(AZ z%t9|Qg$}Zi^&eIU7TZy#lPqH0UjVxa06JIBo_x|m%T*xa9Iy=`aMymFotNlc zH1GcQtzMDXBW=-e^!+KNypA7a2&q1_n#&UttmpxyW%9Ra69#@hM5kE}qB)tF=<+Yl z1X?s*IoD*SG4y*~N^zPqadmucXa*K2fcQEq>a+Jxc+rorTq}0G7vAbUty?m4uJ97* zgW58}Wu`U~td7_x7qJv!aLY~V15oBgIpH4HYY1N>L}Du91%S2T^;$2;f0M`FPHmVD zf^+EMSNK@v2o(F}6h-&hdXO%zSntG0op*STtE*Fwp3Z4_#%vjX3c85e4~xCZ7tl(4 zuw^3lj5kQkC`G}m*; ziD#R=VMEn{ic9yi5Z>)^{AR`z6+I1YcDxMb%y*JmY(}d@$QzEJ8TLXnGIwuaHtp!I zixDTE3RXxqon~8J?44HQzs_N33!kQE;F2)pu!*=1^gxp|-T`!kmeZzkys|gmmW~^7 z1+!phahoAsprkxWldbh&Iw-BHq+SDVJ6AR;&Pk<$6z4d38SJfHZ{>8JGJ4FNkIwjb zS@hWKHZ`;6rP4F3gA#qp&VpxF&#vq47n|LC=scZ5Qmfvl?@zbNh*iF52;H+H^e+=! z71|F{((mR7F%&){JqpVb=Os>Ifc_`eup=g&&kZxYhk(w`j=nFBHK#$WW=zu6=CViY zPFo?<(qDQ{X`o$dP!p3uv|hC5)$&WMxTF*M((8yU>AP<6t7$U{9K=;A)6qUVJ%>fC zGQAh9rrgvoWm@dhzl!~P#lQZTYn|foFQswiD?zl6-={NKjNY)M95!2GAiTu!{E=I? zZmHZmi#x&7rrZXw0y)3n4&UrFIM-ZPafa2X6l{=z!O+8&#Dw>#rJ;{&-JHu;^Je#E zzBp$xPH5*BjQ-3d|KJs)G4bH)+C3Z*h@28Uk8zfH<= ze`XRCNLgOl#xSiCzh4)#8oqI7gh-JE@f&wdi-FW?u=+K^^iD8~U^&!DlAGs%(~M1R zUH6xApjYkiAR-Bs5-(*!0#&-282t`Weyej$JZ#0F!Oz&XZa>Vdt;&CS`U4h`qa#flru9@D8bhuFJI}qOQU;19mruoYt>|eUX68Dn+g*YtA zPxV)}`qhqF{~qo5;xtlsAkefNYKznE%3NJPKo_S8EsZKthlXXjR2q2bq4x5;hpi_- zatQUDIRYE7<0*jmhjtiNz=@vzBv02RES%AXz;W6_C0>~H1f3A($xv6N*HL_0n@=b2 z8pUR$g{^Fl7K_7@S*{sY_+t6j8rFxt9;CCpTu$#ysn;-~A2)+JuL&Cpx&O0d9^n6A@@m zZ*1aAEV`E~Www5QerfiA;;UXB^c*ApY?Kqw{*spdca5tX^Ju>xzn_yTi&S$zA;CYX z8Uv4-#Mxr#rU7gAlm~KfbyyE+EQ&qalrXHH9{(hOviw7XyYF-gN z2{_p0;g%Gmu&3TTiB!L$JgcM~eex)=Z{fiNlRwx`6Z>3sO`^9~ISD0zh?pNh*2nq{ zZ95s@GeGS;2QAMFZm=23dld?2_-Y-<&w&eO$u2h^D0)#M@HY4Q6RTse?%J}Rw13&0 zi;)ybT#|YcrlpK5v7PNgh{BejnzvYJ>6wW`Tq{ng+feoc|_#6Y_fM5H2W65j%%_k8i=J1Y4oBhNVt&C+K& zxte0nQoR|rpZ`F?#I&U!&DR03FrR{?}&PsoKO7D)N?^z zs`2dFZN$U?@XKo=O$2gv%S#S7m(&^*80rIF*JkDzC&gjC^=mz<=m5|XBKd(9jw_Ga zYco_|SFb>PWSQ?ae2LJ@aZ{%YqM?s(jkq3OqaA~J_#7Pu&w93#$H=7hVzjKrs8N}p z?|*?H>T~=YXq5`Z{_H~Lmyl7Y&eJE^lWpUiuX~GQjRU=9OhBk6`idQosV_N2)kC{y z4(j<7_aMw?N7B}NM4tE1R~9S{(C^sw%|s*RUp-~evMf)suf?9dMzsirIUioE8U|^f zG6}C+vci zQ!fGjO@5CNtRv?Jwtds*C6~gB7lb3{H1A=hp5yq(mT2E^W$k?nFND4ptzS0vF$;Z= z_3Js=^Jx5q;NbM%FaPb)e_htPRZdRvdGoO_f9VYOO#wTm7J8Puaa6a_k)VVY`3Y`ywkNIUZiU?h@P1G*cZCeAH5UhR zVSyJ!|G8ur{Ck^S(n*{1Dy4u~4ukhx?mPXMlV>Xkb=(>77t7hlZy~g2?eIT-i4fmB zR!2*s4bts~3daelAAm;@CZLCaHiOdW_S#E2qK7s$!PU^A>IJnGgQ*gy_cRbJ9&9iF z1LVv*#qz}#kYxYErkr6YmNcBKyMOSMI-xUH^r{_qCc-y&zh3CHfLjslV1!IOHr~`n zYKkQQFccLhl%NTa9=g#J8s%^t28vXu!OnjjQc?D@E7UJ;-@PI*>!X8!j#_o2;58Uy zcd!iuTjFP8aY_Gdd}kQxB}_uypIUwQ*Qcxs(*~XMeGD|_0qstzD+I*vw;eXzpuSbo z0|Yi5s#!H|-x&6=>FjR%GbTANX4| zJ}tj|OO8%HR>dn$vgLgXmSgXV<4_hqTx$3b##o1jt|)(sGQFb_+e=dU zcEDEM!fZ+DV3G}-esMS})7&q_!mW01=6mocw4;G6*Kw9h)ONJDy8hw2!|WSTm@oJF z;qMZ&yVz7D?8dIx3b?-saV4Hr;LC8csB+FK5Bw60yOGdWJZWS3y`xoM$ zP+cjEvU^U7w5-B)Q-5+@EpYqO1$Ks9_Aj%G)IC0zK?lkRFVy-woACp+tc-Hop^lIQ ztI>HFcN|}=*)8@>yauiXKyBNV#<-<%Kl}%RYyen=(+S1)ek~oAn3)7xm)6YzS3>wq|v|zA9Zcpzsmyl-0Tx; zskhRj`_y<%Dp6s8{oG(nn&hdNbc+_XevVet7c#EaY|)SqDQ3QS@lF$$cW+sY(`dbK zkc`BvBLO@fW9}GZ)XqW@4pKmHXtXn-L@>V9ee&pra}VkbHD?*q;BN}+&#Ss5p!sT|xBTMx}8=Z3`ROct%R!3-=M?!&1Ed|(8 zJd7*ck@mtQJAO%gz^aaMjncKoeUrn!Z(!bZH12+s;Y8l?&4jE#8No872FgK@>eZi} z?VTPQiqSkU=8$Cc$N$6Ld&M=?b?>66FZznT07_L6kg7=Updt_i6bKNiN-qKFouIyo z(xS8=Ri$@np@R*gR4JhsA@l$N0t5&NXD zO`-dK5`7m4V(gn|ie!DjK+rnqnYAh$ZZLPkP{*L{x<}V8%7+v4pDuz$8SdVjO9GOC zAC}hEM{-0)$3PbWv7rVHbwZH2VuQ!*_uC+nq~6Q*0Zu2M^6pB$L%q*lkWWG%2BB@r zAa`2?t*{y43F=4!#-HBbNj*WIl3@?)y`c^HN!=GQm6D{Y$aWs^PpJj_<2#m!&CdI- z#BD9*&SZ&S*~K3s2_xx`Zk+h&Fn3*OL~%>%UGS#(Z6W8;8^3kR(yRpIFyD^8UZb6A z{PB#@K{W|<2~3{71^=MXzr`a?7_)@>2i3WPngew#J(fg38@y8nqUOrB&^HCjmg|cS&mOV)?9#*UprbFCC9g2Bx8Ca z4{+zLyR$75kE)LH0a*Ng^N&zbqSN#>yC7aN5}JQOZ7-e7B5mU7XEVY^H`V# zW6R<^A|t>9NMeK zhv@iB{KM%*-_=l^45z9eN?(fbx+C~P!l3QFLq{h*;&NVUCqF8>o)w4;9p zwt83S<$T6=c1(6ctH0R*Iug*o51${H>#EN`dPx?ZXZ$7Nwk6P>IrlBJg?v3i0wa0n zvFrG322};;;BY;z2AI6rap7d&617U?dd#djm zKYJwvq(RJmRrr-G@z3*-T&+R=K9DK%d6cB{{eD7CmR&yQV1@nIcS4P=MIYG+lnDyS zRsQ6{k{NXeo4f+1OY;}}iG>*L4HcSMH@BtL93XPHHn9dY6x~mA+VyJ()EK(sP{xO& zx`IKj9h6xev{s?ne0fu0<`^Im{fCkH`_R5MS%`3V4cudUdH84d#+p|BSkZwH;9YkO z(hl?*-JnquG;jIHeJMn0H6+SC@TV;EHQX5-8k%ZJ(fX?T4er{w5tciY5wkF6|M%24 zH`khbW5f(X04YL3q;5a4nN;NgWyQ=?_2Ee;*)-p=?PJb9~XHU78x;rl;F5t?V zB2>tx<8pmC12`JFgP!>+vuu1wU02?f&3Ne@rKKgO-M8;3(LzQY<Zpk&j zVyezJ@Nnh~4##!quq z&flrg@zuSc+?>qQ?LktktS%QS4M&d)KK%ugU_0#oho#+2%*3 zV#CLswY)1IZN5$@TaNJ&wL+rX0;jA#CDb_n^{d-loe!{%>Zs6Jx zy`1~1=;3wW-N~|3(=|>3)WE&^q6Sz4ZAQQN^6|oG3e6|YZ?qZ4P5v(nehN3#p`GAPPbFg725k|Flo$n0jx7sa~ zw(yqCN`|;I6?Lt1Wd8H(l5=iD=~QM5*Z$6aU1h)VRau|=pEbUdgZj| zYzaU-@5~y#Hob0{Cld{+yR}40uX|KCpqJ$1U;bR6=Dhl2Pr?r+@ANl*cwp zJg&J}>%&*Z_KbqV?tz*b8nHmbq!eh)=bB`e8sr&Vo{D>NOHD`=Y|n@&E=4|O!FWs< zbBka3=TcDasS#OM=RYO+B!l_FLATwlql4uRWs9Eo)*UlHLS!;A?wCD#H;lzC>UG~p zlqMXxG@ZW@ZCL#TyL)kUohQrWzU@DR`Yj#-fu9jLlLMW&cH@4Ad+(En@0kiZ7-#!e2p*`&^H@NAy96i}I*Y^kD4RQnnAxS9S^!qd z+w7*)t)hR4pk^xS;vG>5gow@+Xpwd?abN+c*oaZG03ox0X;Fm1HOoFykQd~A2<(}h zy`5)Y{m>{&sgO)>oDD|OGG{*lO8mLcuW}6@01Bw!Y?vXoI_TFS+cpOot>>0e(gK=M zV!tz%uu?7&ar4SF+luvL*rmSehvRkvQJsE@7)P6{h4#Lpb3Tz(TOu>b=@SEv{zZRZ z8eq-y(7tq2ewj9*AT`N3oTWnF%~~?c)#D9R!eNo}*3_sJz8wFeOt^k76{QO-@_l=t*1wMRipOC z4*oL?jHk-tiM>T}%Qc&M8e=9o`*AwMCF&nsmmwIYqvT-H><~f#B9a)0S5i~B=k<@w zn;?f)iOi?f7)!sN@(TuWf`)G(ZuzAVCRR~vk-g1fZl(Snv7Ioh2)POuyxD%9#_)#L zRmB1QcUNM*=lax=7`Lz4-az^(7*Nvv>qilgp1);SV2p$>y8Ev-WnUExL$RrBRXB{^ zYe-nDKya-tww3}tv+9q;Oh{b=SmDIh15Ow~bgjRB|LOkwvuc?|etdfd2yp&zyh9ez zD4YGwR$0WXs+Ul6g!_UpSkzfB)poa-lj-Jj?&e(|)uyWLLLu4@;}52#;mWs=(hAgJ zXO_ByubjbQqF5_2v#Eaf08jLfJqSao@*i&P?`*B>)f%8|e)$Zbbmkj+Idpw|4Y?_) zc*iID!1y;{L(Rf$ZB7ZoW9DR|PKawrqtnzgnet^A_^feJ8~$}{7= z%hp#c)NeVio@baV{O5kjpr(9RJ^&p`@Z)K|bc-NO@Sl+s8Mj-&@D8)(6Wrs;R#KP@jc0yT0i!{X70 zMelK@)}%;YCaUW>u+A zr_#?jag%?~c_|jU&eK=C9Q)VvKfW!}2bAQWF#hP6f4#{VzFxisZWk8gc|{Xs13%{V zv(1W>fxjFsiYw+e&_4$XKtRG>c94SnqMO^nXRYS<|OB~`_I3Z^EU_NMEv9NPfg969y8;%)prZ?^fKKe z`iDW#E(8+yH+U!MA5UpV+Pr{8d)&*&1uaKdSiyKXLdxZpm*1j7HIVrcjJpcx5>u~U zy#XEIF)>j%h2Y71Rkp*MoTX0vTuwB;b~cTlXL$n~`pj#6TDzNsczwo3x>rA9OYKM& zgH>W3{)!#5&O-&S_pQU|Y-~fdcE#VDUE`ipPiX>u6AV?-#mq8{MQFjT5k*hs2W0-t z;BRse`4>^<{~YQ%szCuIvkd?CyqOB3hqI@1IMUP`@?k5${R%S}VgX=e9ynOb8rVQ9(X3z{NoK459fo@ z;h3UW^IGo!1?=HSU~a@8dJYXsf9b_LvGNG*wTQ+fKFECE+ha@Pd97|udl^|8Jjz$x zxlI}Om?~|R)9gr=?O9HYz5?i1vA|LAO#%J(mX6CIXcZeRiHq*`%dWsv+-Fda*-pExr!hl@NRRLK| z?000GcG6_#-AKV1?-P_C4sTIF<_1&Y{>JdIyP#Rs`z@_+>L!xV0me!YNCcN|I&acNso%)eCDhr1{AxtWq z7dB*loW~ypW3C$+0yS?}E?2@%dscMJ%NMrvRm?^M7@kGn-Djm9vo7b9^w_1F{r`G% zQqH1SJTQae^y__*6?GZ|G~KMfHMh?w1yB}aMx&5sLnTZ9t|b}!K5Cag!o756WtQB6 z46Mr`&zoltAXLL5J+alRc5|^TKHsR&`K!91k*8>xOT~i2(zg+zW7Dk|-LUgQSHAop zRk@PmwRtVa6#Be|ZY@zRmbI^a`Sx0Ga7pRJ0zN)QGGFWIv!bQJJb3YyBPThd6>BNL zD3dy601LZw*Kg0{A}((fzt(W;uJf#(*5xKpYG}X$M=#Iw3YsS#!ijf z_3`7DBO@I`mSc5%_ol$wY7bz?WktOzjYk;VNu%LUFHbB0en*?r&lp^t4)U${?tmMb zI=56!_C?j{@xl@qqU8WqmwRif$awXmC}>yUxv3WxcTKR?XGsi`B;{~P_R1BrJ^@5s z!qH2)fHiK&AON1C@)&&}$y@qW-J4k`PW-@Ca|-Z!#993*K||O01X7$1IW1sPkn_(? zsy@&(D1P+uv07Ndf+A#f7@0I_-P!P5FB7IFV44?u=Z+ezDtYtmx7QtUt$)4I$x4o0 zx0n2QJM?7hheM&$pyNSPf&DK%;8JfvA~*%iw8Y7e#w8by8^B;;70GkHCv<>o*VQkp zawEL_+4bmi{Lxo+Ex3&~#>i_)Dp#kg+6M<4-@c@d6DbW}PTdaAXX zSI9cI;7toKOxkdSUzL+HDTPJ7S|2AbgI)MS%W;n{cl-DJndHMAy$8}RerPeT31hTqw zF9O1nF>ykM2u!Qdwd*!8X3RlGrXRp5vJ@z~{DfsARrw2z;~w}_%$Xrrr~W-bhY>XX zGP=`X*<}K?_B7y~i>M5aSsbb`)ziuR@fG-)PU{b_+fBC59*&d2izPAFzySn)^R}r z6h!OtM7jqrU{3U{1rHPd9q-c$(DIpVr>C#;^9$`r{g~k|mQR{Gn#b7HW?O86xn+Dc zN?S_K{p>5P-*{J@oG2Ku$r)Q z)>7b~@}n!AZzNqAGTj{*@O7#`xV>i5+R>s6b}+#9tp%$#3>fS>1b+n=sL;3eGBT;% zW1gr0hOX^h?S1Tb*S7`nV0yDjf~ZLkw98|2Sov{Lsr$5c zdh-TvmYyGm8YiM}l4nFY&c+E-5S%Y_ z=H~=bwGpY(f>)}F1uu>kdKV^kXTimx$jK`OthG;z*d+5|kqhvD;}ex;cZIEAJlWtk z$rzo?3=NRl$b#^snmpyUI~5NgxGgiw;rE=HPYOs|mY&OIe8*$Qc0RmcYCntScpKZR zAAMcd;%A&Z#+u)jolDjc`^W;f`Kp7Na}&8{DZYTm{3$^to8IOMHUN_$fCRIF4DtO^p|TUlSpW5XWcafGk$-2>|Fum2@4fi{awk55 z5&5TmzQ>MES|3a^Aj19}>=F?m*jGNIU{M@dXK$axxzf&%O+nwT*IM z)%)M@N`-~IcH{$SFpK7ybiM>qfq(Y*vs=O&26CYm;GssgT`F=3HD&L{=$42 z>PDhJ->dUyE`oL8lINe`Ijdpk`p%Kew{Opg0-+8Dl_&d&hGsT$f``mqyo^E|`mIdDaid}f%j~pr z>_Y^kr22M2^PqWA-P(U_j#Zk?1P9V+m7^R6AUM0!^XCY;F2K|IQ%{R}$I64wRK-lq z7(P(568#wga3$azQ*tj!s$Idm+I_mT;B5D@V!*WZnr4|9)pVuc7S`~Y$xrVpG!hmPfpY_@L89mftVG!%| z51PR@9oZlI5)HVbA|Ku#;G4B__**lLC;y?umRx+T8kwG&*MghPpF&L0capDl9BE zTpr8%8M6NS`9gHsIt=F(qm**RwL!8^7|kjDAUKttN${Oe&V<(O-?t`qE6r(@W1zd& zzUeT7%9|}CeFlbSo^tpKBN_0W@%jd~!$p3CzFBSm3 z7`?bRz@r#)$V%R8&flA99Zx(6zB^>lb2_5OK>6U4;3P?+E1H<4yJzkKy4nuBxodi^ zBXPU_DwpgP0GRFPo1Ynf7&89c9lnkP76E@>fYPGp*l08O!;d-J8w=EOvV-z?8Nsih;b{)-7- z^@rVSd`N;2SO~~8(_~pmi4DL4;TZPEa>zXSHI0QzHXlx%+%$P$*O?l0vwM{ewlmUd zosn7Bpn_{d;C7wTY$$iom2-T7w()kf)%wM;dZSd|9Y#crb#+BY&f8AFiylH?q+O$8 zFqT0*&OEh1h2=;3sd4^o@~np+=TjL#x4lPOFnuQ(5Y_7Rq}vndTB zs$OAq(4H6QAj-nY2?z+dyJauiA}nViUpGs7!Um>}))9J^=-cQGnAmE->Q%qnidz}v zyz#*9cFtpz)Uc-s$wuY99>lvxR0oi%%|Wgrx<4$7Kk2RwZ$bESP>m4`)U%0Qp$l}j z!=L@;fIwGSe3GP-Fl3c{l5;4b6}Z~IflSRlK?=MIa=QpLu)ZqUZ=nJ;Ry320|2D1U z+*H=n=b$yKg9-%a_Py2kGS0n<0oq@$?xHqH@((SZD+Xo&y(kwE*C7re&}62sl%mkY z6PS)srtS(|d_sOWSldq}CV+)$eL?*5Kdyk2?%2nT(yUzWe+N_W7Psq&AB&>WHmSnJ zoz&@G*G%2xv4YxMKBN-1ws>gk zTNnKFrz_p6_e&^Id|2ai0o#u?yNu6jedJ@)`gr%8Q&{s^EeWjsxd7>3Uzweb$sw$3V02A`0Od10=xCODS1nVgzM0<^!e;mPv>2mLTvPT zIl=OQA(!8VtG)W2HUxFIkDWvg<)Nsd)55ME-^dT{Crt5>TRl4>)raD-L;Ora%?kgar1n<>~!yVlX6j= z1Zd=9Aqz69Fg=PhIBK8b)fdr~-uP;x&s@G%1g<1ElMoZuy1t0#3HBUN?J6A3Lmb2A z@44OXD-|)Pdk-p4wu$Q$mD78dg&DP(y6K~KX^K`Gc%$&6=lH(w(J97#fa}L>^a?1I zF=Mod)M?FZ*6dmzB3r;>iH9e##_>3t!qsEknK$%@ipqn0Mz@RSdULG`JIOgCQW?Jt zODPrs-}CalJ8o&F$QQ?s#z#Hv2@cS4+b%C6k*c*^lKf{Za9wVD&rkJV7|6|6eg5+N zZ372x(5PqIRcx6S_@V%p+H%WSvnH4jS!p%u)gSiqNo%2x^@plw4M71oiZ|V*pu9V5 zP-@J37)3On$nCA3wJ-?O`I#E9c$VGelg_;~F&-ZaMQ&Y%cg1q?U!6b+IH_3B3VPNU zwBJI>k+3RPK*5!(Z*QqHnmU(gx&@Nz_rlYIH`D!2Zq>o{-r1G4OBJ2(K-euE07@?M zP3dUGi{rz7R2YT2)>=H-iE8*L6Et`ENVAywUeyJ?A-7PH^`ne)Ix>>S!ZX6;azWpF z?cxP;-f7{Qm1pBPEN^Gy?;4_O(fRv3->Mr$uqN!EW)@2D@kz}O)b|9(e921%qkWf^ zN0j|H7gO7>U%!qn>#TlXRdl|tdg`mkN2h+#reQs5wLGatxsUCWKg%6Wy=$|SSqoz` zz8A$E%A_{oz&Pj1(Y_MgvOKO!Sy}cNV`k9GY@-=MWY<9O1zIm>ZXsVZl54aUo`~VP zUSTez@gZ5+(%*t5OmM65Ii>xeRpy6JeycIudzOZ|^Pzi{mW!Wg*tmms@=IGOTTAa| zn+{d?->BZe%Clb$S;r3)m*pWC`toifa|= z7w9wR=RT-;AQ?2;+?c@|S>c#*lJNVm!ZAJj9LJ4xBHd4`gh_jkp5Ii0+szod$&ReD z;P9LJ&@>O^Da%dRD{JKFRq2k$xq~+F166Bz#4@)$GtZ%1ewJ_QjL4z#*J-rHmC1E| zU1cK<(4|C1c%@HD(I+Bc6X{nKi@5_){le?|D^oF@hK}+S>Uf&Tac<@U5SXskit7sK zWUuu6Mu#?!n7OZ3OTIKq4cdGGL;H+XXB#nb^A?&^Bo_-R3ha9JL>k#%PRlE{NmSYj zsSg8=OLQ5wuaVMYh8)?mKF#y|tl(nitMS8x-qQl*~>fY`C{XHG6#7uTc+`)92-~H~JLO zl$FR$N{0<2a(?$3XX&P$X-|^AuG6WTUs>%(ZVwAHQ|IzCX2~=8)$L|nLp!p#_uK@d zxc=r)7{N&EndAP$7`_jTKRo(&D2>^<7P-NsV(L<@Y38{)Uh05@f z>`)AEBfXtOXvuedMcW(`cap7GEM3YUWIhn=3!Fc z>Ee32?Qu4P`pGUpsc{T4U*M_uCKQys(QnGn_I2eEb1@2-2wJ^hjxY8a>{b~VD6zzS ze;tztui1YFj17+NZz7XVk8q1bU2m8wt)iz%_t!WxY1C1dk05e#icGN17g;Smb&}os z{J_?--DjOE*XD<+yIQ+gjT3d7IuqIyCS>@J#N9|PeFx48IH#b7NITPkj1RX%afYTY zEXQCDT4m?^1W!2Qfra7grd29$Tttnxx#Ysaw^M?G7riX}rmIDVGqsv_6Q3z~t*UBH zXB6dozkV4l=wco)s_iywPEoUhmcB3~ExIGcDD348XJa+{!T@xUhdEX)oCP6N)jN6P zqEg_U;}`Bz$om@E?**XJUI_2!Pmg%=7!CD)*t>A~t^f36y2P8?(#6Y~!VXk`9Y_3$ zD8g(0G=UB+)mYE!$+hsu>5+Y%E=iIehMCm9y&*I4kG{~0ki#xz zHpe-t)C&44eLxGch}5`yw*9r9{JQu|DpEBO;l3M>pAa)CFBljXCvNZT*Rmwkpq%T| zU)Ks}%9j0|aBTUMe79=NbNn_-{n6BA)V1JMGS5uz2~$K0qxfLs0L9pn_%K zs*SLH44-zC<=%`>)5-%TF4|5kVP+`R*`=k`Dz(sfx}@6;Ut$$%{L6o{K*shZrks$k z=_tK5pUsSOMK6!;Ps4|9Vx&eWO$bj8AO+>fD6MX#Ph$8v%n8%$7PrCl4$OU6K;aVN-gz7*!B;Jfn1_}5tQZ2e=e z!UIl)XHYu?1ert0u_w#RO~GY%E5Rt2^Pz)$&e z*05CNdroL^`TTKTHH__kILr3O^qws3aK^$<9bc__ZC7x&t+rkTdc~g)G!7Dt^V6$H zUuvvHy6wEhrG_zn@R*Hz+(>J%EYW@*%7Sw$c<>-{e#mJLPLx}&Cw+j4)YlXZ@v>wn z1qli=(MTWE3C~X*X{s|WoTBg5%wr37^v&0a{n;`N)A4)X!DH@d=JMmsqt)*OUDj-1 zZOXaPRcP82TnlzmtDW_WlA_W!ExkGD?tX8;$SEwL4OUj5P2F^iMJ{d(Ca__uXUC3M zxxk*AS5BweA^GkVC`zm&L2cUTcponm6`Ek`CtjL{6Am0Q1W_qS@tR&k@r}g$B6Bjc zo<+b?h4C*YqOihUBoy$Jml9462RUg~6jqKE$ONx^QFlBMo)NE?3EYAsx8~2_@Fwut zOpM^BDh6&S8g)v3Dr9mi&S?A<@Nz613R2$sonEyy*&5cvPg`J>JZw6nj)BYJ#sZce zBr6fx$dB6+I-Sgv(zF0bi=PCo&Yg9+RdXBwW^} z*R;x?7Lg~VTu9|t=TfeOe}@Sb8gq>MQE2$6FT|dXO zHC-r5epy;fIZAoiu4#1|)hH$ZG9R{docl+L7Nh#^6etgXmvM6W-wX`zzc|;-XNh^v z{i-5&1Tw~N^jj)}^q7;(^Fm*5E9XDhal_8_et}6R`Yf|$bPmJ;Dyh8B zaLu5n!*C9c3&j_2jt%OwAQFplO+T}f<3t)s^iZ7Yk!5yvmnxn0g+ZRXQM(eUzH5WN z6HP{86my@^iZH_YA=%A@G;7s_sYxx-aG$Xt{__~paHY>; z8D+Wabd>B4ZjcUBeXsglDXN|#D-pcYbKB~3A}t*`EQOextDdzC8>R=@IhSnntzwkZ zEbCnT&2@M1C9C0t;1uobOD*&xyVp)C`KB2oD;lbU#HCVE^tdW&>XFiIAk+Ms(`QSk zPjs;|JM}{7-rN9`f&lZ-uGQz$jJi=9_ThQQ7`}&`>Anwm&Z2uE5cl zGv#GvpLLm9GE@w-yMr}aV+|FD99!EbS(TMP8c$q#}#CX$qc&D4m+Ui}Cm9cue) zx6Nu++a6K_Mb$f3u>R%jbn0GFF@QRM1L#08{UtKksIN&EZQ+AThO%B>w zhViEcW;J_BIQ0qZ>@5{fCRphTzRYzTijR~sQML&7qYK8StPaOa##*MqN5+Unjk(R! z*zw@ut--gU`vum|lXsyeTKk8!i=|o|Pd*>$Dzodf?|Mw%JE3BtZenC&XF?f?eJRyI zPC=GB%6o}Dd8n3|!JnFAKY^u;)vAMzneZMGO6FSaGRUKoQDg7inxQgJHu$afKGbIwEV#N3}*NzNC1cBwlsk*}p*^oNyO zolAQWUQS0}BSApyHj8p?6TFVk@FIrwV>c=lI&Fq4(Lx@@@Vs7qxPM2$a*5W6H?g8* z6l)5_;c4S38^i%*e@b4v7FCGxS5fVzYsp|1d%Kq+#w^f<#X3)Lsb9;3yt(sbx#TNT zD|2NvAC0;ZiJDEt^+_7gVK_IYaC3U)F-Jw)m>Ldcp`xllAZNlmxC2IF-FP;YJS?+! z%C5KO4|gZL)E2k5HnqmUF!M9wqWGblq((D$)la_fZajKym}1wR@w3Yd4={WS_@!}`2yW%e`D3wyr#F`I;y~=(Y?dmjF+DxK zI+)WXHbwaGps&tveQr!r&c~vkc5-r_P#o1h#H0zc;I0J z0Etu-W8u~Nsq@3GX{bu4On-S$MNxuW{BVEVSmYb1j3GOKFBjs!av2~zVBA*;wU!Jy z+y|~Q8GXK0g$-Va^BSnh|QcjhQ(L4UvyUi8(c zZeHGUn+F`A@f|pmq)>j&GlLm@0qE_|SF#H-b{Pk`TzV7P&+za7^z1MSQ;o!J+CK(*`(<7_ z%dmk7(v-<=8HwJ(Cax8{K&9m3`N7o%hDU#XpvuIRNpgWJf)D9}DhHcNSpl!Nw z5I%>jl`gZ)pqR}+Y(-&b=!sW}5tnz81l zrVM$Z4V7r@-3>N!<^Ny5vUXhPX!w(1J^Ej$E(`mg*gqmej`V^3+X?;je#~TlNs%}J zBzeR3TjHiMr1PL=1x^5lR0)Ez7>uv9fkiqscxJn5Y22q7B#0MPdO%Q${=OW*m0(^} zzdYke=D(M4figyEtlE1DUi^>@SWTD~tWveGHJvR4mjRjtEmRXr`I zmObJH@ZCekD4*xFc)&t$iPiezpdt%z_!_onrMu+8-`u>N z3gkfOPW+O9@L-j5(YMZE_Gm+k?!@-JSD-$8glxN&@z$*)3DfJhP4i!58K1v-!`M@C zcjcVh7d2FSvk#48*;V0$VZ%_Dy-k}AQIumNrHAZkbEEm{!ciyXcM}%w#|wE`1QVwFkFp@o@#z%wxDTHk5lr=6Oihq+(DOuO zdI(2l>7=lQ=c)M(J18hCZ)UrFrYpa)ZBJ}kYrW12eRYX_Z2s4ecninexo(>{$4XaF z`*quTbfoF&5!zKg6j|Hw#Qa-J^&C|ef#xoE^l_d*#=8vc2jM@Y>0+SGBwoP+lX?B#QPtH`Jh-+Hz zJh)~`!hHQ}zJyPk&gVa~Ty{fHmUD=B#La&E(DMa8?L-dlQy1CVJ#etj)KRPXOia{H z0;mks?R`=2ssX&l0eg_eOJIv1a()IQFoNn>@O_zm4l@+DZxMJ z!#4fjfrv#C+)z*>F2Q>|Xtp3lTU+^NHg(jKytLZiXl{-i3#sUPm5$m>AFw8z$ZHRn z9iT zE{JW%T#yb5TzBag8mctmW9yM8)v-#Cd)w7*%*Z2T3Jk^@>IunZx~*SN!h^`|u>)?| z^`)!2!E4{PCia%NJC!JpK_e!rl&A+q%gKS=okE=Y*{R;%3LCv1gInLvp*!Mp+dVq# z&-16b+e(cA;Hr#J#%I+W$kn)upBHo4{Rh^`3qLL7wJe+6WN3;^jRf*x6*8a{SGw9E z@5&9O1aa{qij7qQA5^j#j=R#(_vAvAgLbK*>A`+O#ksx#ka_Sv0Xu9}K&G?HuV zc4ysP^(k4dacUZ=OO@9Zt=TH|rPQAi98I-ATc)|271VZ&kSw3z@%^~xrxdx;(DXXr zVMU741+?O(L8g}l;0YMil13>Cr$M5tf1F#aw0nt0EoQ-Skz)p&dmoK`WeL zogF*Y97tEo^b>G)|8a^E4&X8;mh*WetZtH&NKw_=jx$yNM{X}mlIvMeftf|*l<{Ta z*3rS9Pj<(@P^WvglNct zR1Da7CGS#O)J>bA`1CBbm z!9JN*JWIseCkOXThx6i6v$Ll*HFs+DhIc)=!1XB>LHoq+YdgVuqYRIA^lZvSVzFfa zdk3%LYND~~$sR~7)&XG^w&q7sVzAS`+fwcx+2&Vn+X5j^Q z4d&NT@~gct<#>J&)SGf-GfDHOxEog3lzPqfd5}eXz6%vMoI%mZ+i@mC8QiZ>Ufmb* zUwIixbu^3J#hh~<%2FhDeh!qu>ZbIVul&iq)e^}ue#XCCs#g29I#J87ljvUX!Y?6N zkJqKGCf80CMK%VmsZ{voS1g_$H}wnOa%jB$cskQCk?7yzu~&=wzBl>tRMG4H?5JF9 z>ZrUcC+>udV7z0O6dNpW$8C)Jy2#5A$D8)Qa3!SR(58)k3l^usio2P9^RnloY7LOY zmVEj}RO4hKTfYY=rrR)E>zyuoNGy~NKf)Dwm3`a|r|5CwlH%H2OcM_93w;V(Gw-Y7 z-`v$>I|$3_OnAW2nIKjs)0pLLnK|1JfQhrSsR0ivR_@6~^>{dghL>dbwd<2#!|CxU z>hR3z?&>E5<>FV8eRD?0U^!e79T!=#j9d5Tpr>0AVq>DhgD9io4ehVar1klyvIf#N zs$k@1-GtM2G`cQSsq8Or5&rJJF4h=!XmeZ$s&PXQ-vgumJ@U*}t7UPXn+4O;WNK(Q zVZ3sjQyNU$g|emRM^3$tL6K|ONSF*D-_(G*pG+UN#QWC8arK~;b_~38mwanzQMHpa zigJXO==N>l{#>hGwfP-=#_IDc0w<=g5(~xO%cPDIE-UsivhGSQ*HGzfB+G$WU1i!W zv%~-{MsmRMHX`|6u@%$REOLIEQFC1|9VVvNIWvL$1I-Y;`?4Vzc!6ZX{a_wS@X|QGLl%6K>I=K$x1W z0r=e8$6MFnej0K1*n!7{1X&Nmy3HX|L{qeN5>g7Rrx1)4Mt~|M-h+PB0vos^qbHS< z0&xC@lozIYrs-LW`MFkv0A2dEm+d+BM=Q+8Qmgoa+`+B%i-gJax0EK{>egu|y22*0 z-YAl|y`I!L`C}Hv*{Q>2NZ2h;J$845vl8vE;4-v0IXC{nRpOtuwVd-x5Jdew%~bfLSqe77kTwsZ)Rq! z-ZW-stI4ggqewq4mJ>TJh^330!iDeCy&7%#oP||RdH?@ybFp7!WRDX8MIFW?-aA-i zQhJhHT8!*r%r6?sMhy`fwzQ2tQBme+C8emU?90A zE`nuB>^^4JuaC5641mpzz9d{=ZpnCGTQ}{%>mC>lI4uV=$ur#!| zHn{pzI;|-tJ@xf?kT0?=K~Y@F+=0N>|8|CRXYuvwLhLTOSJ4C;K3?p1@AzD~ZNY%; ziwg>mo{Wf3q7V!Yi){iME<{6Cf!NJ5o>Q%y;^~ARJSQXLjEZuG%G>))zq6P+C&HCs zdP$|1Z@*M4wosg@={Rq!^(Fe5B4t4Kq|6F`6O0F_FgS~a#75QDQ^wLSwE3-|&^E*R z`26B}#PM61Zw&A(>Y0ETsPEjl*(Tn}$}L^7WqKc9q4!F(;sGFVj0?IJ*L$}LqL^=K zyjbb7qz4AG+`l$A-l)5~Bi-29d`fxk&TjBdggrjb#w|FnF4_dkY!)<~88@VoNp_5s zGz=%`%19jkmSZN$s zjBsdTo^(ag^fL*Pj5l?a$#sttmMF7kQ2Dc_+VBaCC`+mnFI^HE;P+{>prKJL`D+y?QQX2aX=TOQ%S_>i1EsrP%&%e<%-7It&bk1d3KsR>|2!9>k*^g%9oP3lme~I z*0aZ<-pS9=MGhz;0L!#O*4Ea9ePeH_9NAm>F^R4cFe?Y}SjR>KRDO+AK8*Uq9SLlT zI6o<~)O!xh%4br@q3@l+hFumjx!Gy?o_o*M2~KcO9DU4UCLp;YMwO#No>~@m$!B9y_2nIrYcfw)EM$lE5TY4vwI&rTnyH_e^QaB8I8iVI3Z72iU9y{W@i7#De)*6fW!yo1WF?dUnes>mKorHgxT zArWyuc#Uwo^pb|dR?d4}QYwNs`dQ)-a~$lz>+Y2Y(NWo8$`;DdfKaGmVk20dnQ>5j zTQF?^*Hu_`cB>=njK6*%0GHfu&71|K6iudU21t|_;I9}0Ld(3&^%J^rsk)j>M_8U2 zs&l#dW`5FCm22!v(U+ZhO63lNQoU!M6Up~AqYv_Aeu;UuC+|BB!!TCT`Jmvigi$jO>j0IO!2XpX%fmbN+E{3w*m0FZMsU=MTi^m1Ry z9G=-!xL#d;#kzt_@do=INO@v5hpEG+C;Q-XXno@xiNM&!s&C$L9bI3?N1vTi<}lzO zRd%KV+#G%B#H+12KJ;Z$6MQN2}%KXBgt}=h$5NbtsY#u0;Ms}MADU6aoDSPmF}?J z8af^mIV|mThSk~Au#h>bZ(ib(6vFMBaY8qGmQ&tfS4A1XNfn|=!R5sQm)?33O}bbd z*ArTZ8u$vP17Yh{d-)!De=}#OG}Tj-i~}QjZ5!9@f$kVGcEoOIL)L&Sd(`|H5p zHF#^hh*ey);d^*zSEmxYKF9USz;;xqk=cijXZy0#BB63z2yY6DGl=a@#~zN%gDtu1 z4VNVfhQ`8>4;{rlf2>UUw#{`C4Jxd@uY~1E*9N-cs^~kWrQEst`RUK;q*n!T-4x2M zg>yZgMe?w?9{#O?9}nZnXoJkDKGVH()Y;&HF#y_pG_8cEmn`8OXj`fj5?&6K%Yt;O zqx~KWXyUZ8Y;6v0@UvL=CApUP%q~4HW0sECh&SbzE4PrEv7MUIEep|K`zAX6nt521 zTU#x!YNKzM)C}73nO*C)b?SCn*qauF7(oFrVrTCD*~f`WNdJm$>Qb3{-P?eXDUe5X zm?SgT(KZ8^m-@X&T#A-TS+Y*HVvBp+Ge5k@?a5-s3A`ffELXGCt$b~*D6*RRp$k_0 zCpo$P@Sx+|hHgdK3ra!-_o=H0Hurm9N?xDihvzZDV=DSgc$@;_hUEEjIY$BP{|1iL zEM6-08VQxWcr)WlNV(?nR<1~IOhKcC+WqBk=)>wk%qIGL9s#5xZ6+DKfu`uYal)gm zl{0{>=u}lx{zHpx@$v!60gyYm*v2&nfdmEo-Cu_MwkeR3AuDPs$g4^ zTdH7^w3ugZ2vs@30Pdr)rC@P&@V!>S19_kWdWieFX`yZ=cP%l$9QFfHGT)guv~L|{ z{tyE(l7M=VL@la#i_ zXiE>?h-zssE_BqtJ@7a)^6_lZFs^PWiyZGpJZ#sDaNXk_OQOS%Cy9xPUT`zIQ#0k< z?Tz13?dP0)uSET>Cla6My+>&*%E6Y-l+w}#G*m+aNHj|`6rnIqFilvay(O{Ti~bpj zZHr3tG|PxLhBEdh!yvRG-P5g_6Pp%5{PH5Vpulf5-pPUt)Y;Iv5b}6j7igB(>2~pK#y0519 zpatgqpR$&K=fSp!E)_b*|CHEzNV3%u{@dt`Q>9c^z(4iG;z`Qaz zYth#1Fy5w{13@GY-S&kgBAo$@9O2QSB*NAmaWT#`Jd=raJjvdZ&@9pgp z&!mBbn`|kC+*gV*lt4=r4>WSM{LKtU)R~bYOy<)C}a0anNV}0BkXCu zGh)6$T+5`kLfGlzF;gas-Gx|j!t3Zax;tHgfD##b;LwhG+L$5%bxM&1W41%F*T{wS zjRla-KuNB%Tm{eWSjVs({M|C@_rxN0ooDYbdjWfRK0@5?|6%Vv!4u2H;iD~gB$ zA_5T*lrBn>5-fBCG!UwQg0#?#^cJw70fe9!K&k?v1VZS&s5I%lh9V#!U21?pI4kJ$ zKHs_C^Z)!fXa7*I%VcNmwbz<+t~tjT6CRV@T>8=VSB``5)f<{cpR-Osk7E@P3LF2J zZ>?;aa;yITgtq1PmtBHKsz(WlR;R;QvdXUdIct86F3n(<(r5skVX4*{$YIo>V_F~& z6D{syy;2k@GEX(@W^1^Waen!(Lnv6NU^!7G5aZG*R>4|ojB@V@>W!3pv|pJ= zz6NHRj)$FW0vexvdXPeQ|0@mMcJdA$?K*woO2br?sbR%peDPQa$b9AXQBpRIeHN&d zC2Q5v^#F{iU$F;HqZs7}WUI1zRHgqJMrVH)j>4wXgN_2P*82uLgaE(T6f?0kqyq^K zy1`%fZN1|zhNU6OZ1v56Q#s+H!aA%YS+#iJsdiv;&$p{bFbO_X+{7+8wz91ySHYdw zHR->uFOuXgrah_w$jhY9DL>S-1OxS7p9(p_w|G8t2PCQLkO+v;n8v+~ks%%b)tZv! z1e1Kh>+0TAV&$fFXmfwjB5v8yxoS_lrPXKI|2_w?)4wpC*l$ksWL)e_c47&hL!dBk zoJW9n^|`9>88L(sdHe>Q+GTAdzWS@F@ksAM03zM0%@n;+<0ZOx{3H_mMjz?;qXL zUGFDn2NyTADGcX)ea51w)-Foqh_p59lRs^S3~`7XDvGBLd5Py&OcyDeYjIwTs@}&S z<_+(|!jn6oVi|uh`hFP(PK2ZW|1Bv(!C`lArJ9;I9&Z=hN)d-M^&kI6dR3_BdLb zk0k}vl_F(Fh`E^OESg+GrR1vp-m-V6PZ*xjohYXX{&cP@V3IBM20WX>NoSyWxcHKPI8>_hFfcVj(kA_mBp0RFlHW~ zRM;7aFxpB^ZPF5`_}x~%+)!bN+78wa5b)Gb{{ib=Y1qq>(f%A|U`F8jSqhMNG_aR3aj`JXanSrEgidE`!cnH|t){k=3A#Ol@3@VD_0m5J0+jYv)8-P@h zm|rubY#^p+z&FCM0~mD~0Ow^X3$xXxOoMr1Z;OuZ@*H63a4gYwU~( z8Anb9IJur#>TLARhBFERfS9In-a~_fRN7hAaJUcv79Zuhwsb0n9pmzpp>Vr)e8N~R z`<)I=q^@_c}E1SJV@hH`Z;@7a)G?$c6Id zguz9*g&fmixAvEHlRQUW)6$}bF0H5seObaD_bSeKjJla475+jGtDXIJiPc=^K_yF{ zl{)CLUz6X_`1)e@xk~R%^gCX~Rzb7M-xET0Q<|CId)!DE=v)JGKaTvl$9>@kgzLha z-QNMj_Em_tiPyxJO3D5!Ag<<4)AjeegF9oUC0g+-58ycW>&(W+M9SRf&)$6#hW4Ks zz1Y2T66N)+lcB5ZDX`!p?jr(D)q6`8C0CD_)3Bcd79mUuZ<|ROwJt(L3HCZXC}5l z0X7sQ22|R)Mv}E+`|3!#Q-$t}k&RA7?}sVX@qw2N>7P30Z%hwTX@QGj+#hEkSU6C+ z;C#N;SzAtyGJbQ<(0_$5s<&hTEVO8mZd|iqr+Y?GXR-6LaK*c&8^ujBGw~iOn>F_M zmfZTeOcwv|+VF5h=Bon0tg0isk3wUD^{udqtd1q$yjQ+#?gw8{RXDfL=ISD^hD({8CeQC0tQ)9AgmfVM`L#Ko zItY{SrV<}`{k?5h3e}$nyX-$j7FxLjS|1HI3;atirLB%tRUI%s@+Y&QG$`Rju+SP@ zw@ch-RltUI21j>K_v9r$P>gf-m2`hN?Al$OKg(Q^F5o668PpbkY$k7{CnD{bk5+CsfbBp%~*%T>NrtyNYyGTSGS?QL%qgwdcmkO-;`{ayGY;3)`fi98EDfmIP=gDOndl0 zk7wPC>~JgyhD*4PJGV{4%FAfz2T&t6uKQ8rRKCczQ3$}C4Tb%?lG?jd&Y21{Dgz*I zS*YKRWlvBwZ6oU4Ocfm}$}aJb?d$Ew8pCkGvcLiIP`A>mpNvQ0y*KBW6lK@H3?Lhp zYb$_%fiwWx(Zr_Q5?;!A>-W1lx~^a$QHX)5m-_G)ku))v>74G~minkpOh=yIJ?2e= z&OCI#;)dliAW0e9v6zj)W-F(+%sGrKucc>`62jv5hpFu)Tko4Ev&)x>MGlClO_Huo zmTq0by1W==K5?RAO^i@fDZu7Yf8mN1Mp|roBaRkJgB3w(+0$6z8HAzYLgpAy&GFq`31^esSzBnBgBvWuvR1DZ zH?T`0?zvan_6e5(L`suj{5;2Kw3MIqeGh^OfV)PfJZb>vgUJXT#SpB4u{byn#U6pM zM*ho4wac|=Hr?MdU`>jKfMVF&$2F?;Ige`q^uEaGB98fz-S;n~7ptw(y3b~sJJ=Ma z*M_}HVfxSc;D=)%0&MS$J#a->BrTt}k{AMVggOyQR9gyDo7+8g^aP5!bJzcl5b>r+0a%1z)szKTm zaRc@3RaT)HqWk8fFLOo%85t!YT{%(E-QHUNhSU2#Aexc$EG^x)7Z!@_bknB7ir=kF z%PrUa%LgyhAWdq0=PY-w+R)Ad6@@Isc{+(BSHOWAoJe2O5P7#=p1qX>Jsdu*W%{q0 zR%3`*CA*^BT&+VKzWE_QM;w-j9QsEs{Dt8d$!d&kZTq}YVYLvkzP!W$ z>(?%GGxP9qI;{hsKEr{Y;wL6tu;h7DUnAtsmw(Ch0jZbZL7L;qPZkT0`OdHErfLC> z)#k4QH3>~Ynth>TAMVM}&7arvn%-5U-aN{%BNMAF(nVv2ff3^tySV&UKSqO?o6rp1 z{eF&C3b&cmQx_^+q=7XJVItmcG+vnD&p2?}T-hWoTOCS)`ES+Cb|wX4Qg3zVfaI1k zfVkv`|LowdnRxSNR~WTbvu6Pq1YxI}MK1!ivas%)z8%|NlJ2ZFAEUF?5H0&bMt*;++CU=^{$}ExB-@zZ zpU<1ET#!!VfB;$*5`3RdxbXnVYye*Cq%SVn|(E01yEy0a!7d(*;Tz9o>Fr3J^f z{Z1cg@GU^g`t`~@9;7Kc?)z#2>aWC2D}ZbhK9M4;PN5HYt*fuk$|>g#qFOpSgaHke zs&&uE1p=RI`VWS3O-qsnzf8eHTbuPZw*mGl1FSG`eff5P#+FbQF_yqw=T0&H-*C>} zJY^SbI3j#gT@#>YX;%!I6}-@nS60|?z?Iv~8WflFh^JKZ!R87ghX`0nv2J%TNbq|2 zX{v0~H96ynwF6?+O?xt;Wx=-p|fXzHz^9ngRng1Z!vi7@9 zQbiEKup$awT#$2BM`={TcWv60uklv z#v(~a7gHxC+=%*|Bt=&4^2tJYY9^09u)>agOmy=(k$A?CB2EC$Bh zJ7jZ_p<)w$==OR(+iqugv}_?y_*#pu7<0qoP;rPz(SXeK^q`Fy8l;&UjOVkMz}CJ~ zu|NJ}3s8v$-OmG^0)@Ws3fB2~b6(Ry=lJUzAdDd(rEpOuGW|+E6mFH8_3iW*$T9DJ#u!NOG{|GDE_L3Jmr zslMI4T=j8B3rI4kV4ZYWFo5ENV_%N=M{+g~@Hpz$GrBFiel}vK+v6njWfH{KNGAEM z(c(AC+s|88y}b=VJ#_SI1hya<9x~nOQCNj_@}F5GTMqnYD$J%VdW?nuUaQJ7R6(dc z+B8AIn*NC&AmxdB{_aTM;ZQ-Xsuwtsu1A_Xm3oc`8sG_XfmpNei^+>cB)svpIgnp^ zYhdn`-&J*WOPCzvyVpA~@T^%Y*)8@z>!^p8N0-R6iZm81cOs=~ts4<^T<1XEveK0l zeGLg?y{GXwQLLKnq9y1>BkQ(cSTXkFHiV^tCZdp4@{PVTE6a$64)UC-#8`l+uNI~$ z#sWCi9GoumyH9$e*`N-dMZ3oK4Cu|~pO9j!Sbz}{5XNS8c}@KqDs(9TAwj(_RB9AO ziC@^nC~`3Y5N5D7UvEsL8D7hMM7($rNcUpgL1&Xb5tI5Ta}&;`e&VQz0{I>DeJ`kI}EKBqw7o1={EF{bZ(cQ(S>ga{lrY}(%zk9vz` z27eF~4ZX1Dl@&*te$jI@8&p{5O`YQcH5O|(x;1ZhX{7uK_VsHF+s7l`{Qfs2Bkc@w zmq3}g;rb$}j$TOE+)hD=Pyx#-RjH=o3iBy`8yo#bXgt52i8Sq4-7N*N*7%A??WH~; zi>R%EX(|PLcfgHpm#0`raY;M*;{4XfkG%}RVx*cEDLt>VKQ#-+1AffMl_j}ltLFq% z=0>nSVUDZo0EP}+jj0hRYl;TCXn;bsz^k4lFDOKQDpmkHEuwJc?G5C_&n@d!Y3wxa z>3!}?1($F+y35eYOhS40D$Cb&P+roHiApf&1qD;PN48DU-N{n(S(Vn}zIwxvQ?e`# zAnlV~ko{zExJoG7N25*(8x?il5VWp{j zn}#U!&`@9i>Rz2VXSrJ&RHvZ;GA5Y?3qVUGh}aN{ne9%kv&1NJD)_izoJvUu`X1q{ zg;p`fQF_N?Bwefth%3M1HG?L1Mo*t; zAuLuZ*&;R-yU@@_FsXgDa?S#@HvM>(GuiUbnCRSif&D#so1Tf`f~@>&22P_>9B|3< zid9!&iNM6#t&FQeY`X8hIn^%8DJOg}lh7xmZ-}h36>hD@4Z-NQPjSghKrc#`^;yMW z8{{)I1Jm;I<{EK95&SF-5R}AakR*9)*Zp?}(rITO+b1`yThIX2cavYM&EQ|-)RF6* zmG)7FMU#2C4(0AE>)m3^Gw@!ILTD}sQZ0Y|ez($y*2(`3!wb`zz^E2yXVx3r6FV;v z2BzyuhBxKcT29u@P8k?N0Y{626By!Y5tCX=pcWB|_jN}`Z@R@w5vI$wy1iT2gP_7o#$w6&;Nwif~ccp1WYVt74WiX=iE#%Of3K`QfPFu_q=7uvs`$d3tl6dW$s_$UVpd(iAy8@Re>Up2tEGT3%+1}v$uKYOnA8-8SMGDO= zUNZOHo_aV#1TkK&tGZ;uyBfvNY*YOpcd&`qFLY1l>!{R~FZ&rz`d!hAW2SA*zCMS= zLwhvc2h6mH@ssB%w1ZyMe8=O#3C~&3J#=!M7uq_F+jJbe_tDr+jy1(y(;$mHiFu<; z*<4K4B1x^Z{&dcp9p_c4|CUqFzBdU}hHNII%uot_50lMZ=Zg?UjLiTBk2J?%Zr^>a zLe4g|z+vaju?L(KpctYANGzaX#`=W4OMG>6+gPYIm|)sMp|LLrO$pvR+lXcwp;df4 z)>&{w%IQwki_Ud$mISrmmU>50L6CrMntqu%c`1`MP0n@B@L@loQgiCaZ#y&=IV6%I zkC-0^vI16?9|2ZhJ>rTDVVWlJpt061MT4sjq!MxqoVsPD2A+<1ZeXSJW|`MDqL_ba zPzrv;I;Ya;8?@_-JS}Qs*UYyb?2WPC41t$t!5lYf#MQCAw!Y3vlPJVm*D7ghn#DMX z4>z6+f3_w~a!Aff(y6PF3}KLdD0Y$?E}5(GB_k$px2Wi9=C&eBOs~7o+H~%C{k(F+ zX->hB(Il^sU%ln34suVMe|2QsZCMmwt0}cfiIuiDYo6?>+$mx?KF#|q~F>$*mZel>36UWaqtfSbjLJ9;~jo{>sgU`Chl8CMe} z<@mK@nDc4zAHhVGgd38|STq@?9cF3v+OR}>t5*O_6@xP1%o?h}OmbX58VFp?Uxzv7 zYsN>JThA_Z8FpEMg`Dd;sW4rkhJ8OIMuHy9EnUF&|0j8jCL!Qta?i_)x{qxyZ4n(k zI8TJy)W7|BNb>{m$r`6xpY_k49drZJN>kTizXh^^rd;{f?FXbkI(8$5{Y!x5XCxsM zdrs{iI@YVeL>qpwZjUh)@YK^^eXLItYNMkuoznh+eO*|+x&O%39g5ZiI90lUBQydH zYj{@OP}bn!vBAqnFt8uCMPCl6Ww#~;^==79pHmY&{H}{!D)1_W9k@R>+D@f=0x`B} zZ8MM-+`e?M>~5XAb|qYIhf%d#@v7r!MHY<3hwc-qhxKs4ww~EpXcII&l`;F9>cN}V z(%u|#Z1gCdEgyL{HuKLHU)p(LTcZ53?`6+}D5qn+RdnwdF5mhX-8Fx3M0^BIVNA`R zDKI?;JqQa7T>;Zj2t-6{w9(HA*jGx)?SJlp(6nUf0+e+CO>y0nsP8~`-ybD*B*0rR zF@FCVe&c|A`6Vf1AXr4OYV8Q!G%e)px!ZJ+1rHHuIe3hmUxL03vBVe5bhi{}^i01G z26~FCL4SysO!}}RjpRzY`?LlO_ZhvPA2>x}lrQ-t-3HAIZ~VA>l{SPg6Ad2K|M^&c z=EH-}<@{QW7o%(W!`u8;{bGgqnD$vZRzEP7fNfgt;qUeT({uk{Br*5#9J~d?lGJ-a zp0jmmkFg-ORb*{?C)2qr${(VRbtp;LvvxXtL<3sc`W$EObO1V3I>?qJMfV>N9`Nuv zZ`rtz%L+`4RGoq2F=eh{+R@R~09gzwd263j;@#g4xD}(FM!>p=)B|gYcAc!*=vNs= zsn)F@ou3iCsI+b>lH?NQi^JySfs_AW{u;JX#gAS5S2Ehbyw%jK`PjQItK~|b(>Fo4 zjz{VT0U*Y+Fi($m4sZO#2&mzgClrbN_P=)L(3(Kka9Y>fVmZ?yL@zq5^E|I4gX1SZn5~ zY*hEn__jsYurwEt4UfF^cle>)K+BIpW;(~Oa%z}=0&{*kGo3D^%2hPYMK+!^%b_#l zEjx3F?$L?Aon1QEV5Gu3Tfb_}r${#sgF`-){%n3%0iX<|du) zi(BXZHGGS6sptq3iKl?+Jxr4y1{c7=Fmx|^{A^I9W;ChhlxWU)%JxUNF4+T3*e_?l zTrs76DB!j0vcmTKht1fOTs{X2aORz1IV-DX7p zpZ{+nW!J6T>L0^@Slaf!`G8*%PCZDR0mq>M97kD;L2izcU>qgzU@-T#d;UfObbpxs zJ*xTESmMC|4PCd}&eKhY92h<$tUYbebgZTa7HHD>DzJt(_UR8I-$%LsrI{at+&TC* zD^Pg(%SPXcUgLIk_bN^Jad3-}ykU=uL61t8db%$aG;{8)mUufhYHI)Oj^#m!_s6hS ztzi}a3D{YQ6`A4vnCBZgyp|xS$FP;S^5hJxr5sq_ApnGS`8Ed z{VHGw!9;hf5~RCA04CakCB-7~Dfmo4-PgAlm@HLhKq5y~xZHtGSd@NjHg$g8R1A0l zFw55xyN-1a=3AdU2$e$;$7^`P6rqYs70+t11_lX=F4nat#gyK1vE*(@F$ra}(S^L2 z@F)cyE9Vw)1YdlcjB}@;pW0&1-D!g6Ogo)d0>ggvS>t*5dGohyQo<7v@3tR(pUYHT zpFiK3@3BOBY|eNCW8H=a-JGRWb}5^?Thp<;PL%{ZE)#Rq1>~ywHj~Wcem`?0J_et5+8xzHBQ! z-P=e~5mQoHB9iSU2Q(5RU6LDGCAA5 z#uDL84&uM!r?|E~v%Ml6@vq@O@a;FrfkpPThkcZO<@o=Q=*=Sc*JAv_Mb;S;f%>sE zSOd0dv-!V_Y~YL#xTKXvtzDY(?xGk|K3=cTYkeGjqwTwS)s}qBtIv0Zie~F(UhqHp z;m$Idpupq35yqe4wHAyF(LW@7NTVvMwJKI?|Ea6?)>XeZu~p41P{68J1%Zm;mpp$- z-9F(ao2Z7Y!TdrCV3Izq?2^OK9-|r2qh4v~5i;7)ZVD})%zKnE81&jhlcC?+{Wl8H z!#4dI<8On`B{hDO5VuV_dit%Q|I1~Y=8zak85Nf52Wm7Jq#(CgjJ3evwWm))sp)wugdMI9r=-=goXO-@c zqGO#yWtMl*ks?Aw%ZKMqT?&OjBpxr4ro^<2GT%>DVCmIzl%l(ziBPiLwcWf+dFgCr zzzXaL$YU&+ed+j9aZn0i`sr*hWnhQUOf21U3wo5iF_NTzM&lOpff!gG;=YDTZ%#9f zlo>Ee_167tWV#D&!{`bTaZzoUD-!qV?CRg5AK!g8pUBo(sS4h1e+4KOY|lMteWqwd zZgVt1j?2t$3|RMtHge9Jqp+ktD;G*?e=)=vw`S5iIq>jQf!;Q7 z8ApFsOZ_nn$KXOs+8pLS9VvL`!#6j2(9Zm-_hKF*DY=Tois7IuDh`EkRGe|K0@b#5 zkE{v`UKV{VP0iV*-nB&ki@6SzIgB(|Plt~EY@jSgT!b(q=UbVishJiZPjm9>n~6{4 zcWz(O{yIi{TQV0DJPTN3TZ5e|gfNP7ZO%B;9z`XNoQ94v58modTqVJNw_oIybx)5* z?G>V{sge_G?LtKR(ka@8w}^L}*$EeyFE$sgl(6Xd(Nvs9FK^;_0a@G5GgL%CRa2J2 zN@n}!zGkxMe;=7aqqU?$kL<`Ndh$#__R(x)w<$NrlH0YTlv;rBepWj;^Rpp#s%ZYF zu3&q$RPku}QX^)6ZyBA@&68a!I}tb|1hKbEjB_`x^`7si8k+kuA&r(cJg0i+)?y5{ zOL>o^WtZela9nk~G4QPM6ip=HE{$ReE<=tK!J7h~-rr$w#QBG9bsup%Y0?sHrtl;} zkAVd@^`5z<^w-4Pb1ZDR3Lt|Z$`3a%bKEJbgDmqvd=FA0zyRUPBx5``deO7pGgYQz z_kv{Ad;Plhpq%l<)wS|5ctYZfTY>kr=?!o{TH-x=E3%1IO>e9~4G8VGNq{N_eswAp zm`IJauk!cS&M+NyX;%fsOtg0VYH^yri@%Iq^)lkU87bdot(cPy*^pmntHY9k&l3uE9glJkGJS&c$sSkrj&VligGcMYAF=d1kLXSsQd+U~F7P^PZbzl4PVw65N1 z2u|uTX@)CJmFOE=acrsCU|)T4Sk^tuaA|i<@C~M`OnTrFWLJYSTgkXutVmU&x@|Wy ziJP~t6`2UV!N9E2mYvS$PG~T_Jf0eOGNf<1$>x*kci0_$=xjuOP%ldQYf$ zxD>k_753&vJ3e}ebY&tvnOA>~V})AIblzO=ftCP#)Y!jfx8!bG)4Vz+HbH0J%i%K! zfP94xU8c=$KwTa6n6fx}wK$6bC) z^1)gjQ}1f3|PDV9m*dO-#V3y0@Z zlsU^oH>;N3;e?q`KJLr{zqEL>N}LHjWp^tr_e;v0l0VgD>i2`Zy)c#r&G+9P;GnxX z78MO#EPy!%FH_3OcSpsAZ4m8mjvBYxsa_2@*o}W8*)J29;Wso`yxJ6`EkK!Q2KVS5 zJ`O;w)*QdEH>IdEX-2&=tACq7Sykn@NoGZ!9D06C|MdO`Z*qL_3Yi>ijN5cQV(x1u zjv}TQcRYTh&$!X^Gq#b11@&IfD_!c?zIol&9-~DzU`LJl5TC>!Q!Q|~z~B_oiWr5= z=E@11i0@5BVP`NqSr!$;s}GW=G@T$DcCF0?w(u2C5Y_*K`y+?-Wx|$FxCRe?%@|U$ zw}}RlY|&9K)S^rioX`MhQ*feGxeRYwB|ob(IeLeVn0o0POBX}=wnWMlum z7-yhv%?3Xk>AkX@4);ztlIX_@Jn8P9qR5Hr6n95AabM56lD#}^jRYK5`tt0R6<>t?qY{WB#@1U?d)`caEl!^Xco~ z1fy_U85u3J615#^F1;@VPK!d*Bfgro`Xs7{I)3ZHyek~`SA;U|(<~6=I zr_ZR^!k5Cy+Z5j>Fx-PIGd&HSY z4i}M4jV#5AyK2xl2{Gut{KVEIFaKL&iDMnG!o%E2%Lt}QZ`IwU7BuE)9S=_8Lqvgj zk+z3W5o4^;6xGd9NZMY%u0#T@8{1`thgzGqq{BYrLDI3SYo(yin8~?1p19-M^MFYe z5-&HckM<;wpoNIphMT`@?9FxNZ(=dVTXtY2vP$e@4{F^xmyKLn(aVb*$o+q}XSpE_ z@^br(URD{JSaMr<(K!uRJ8BVGXKhV;iwT7xy;u&{L5iD!N<@SK#&P?R-Zb!aDd0 zRptlnN0-JvTh^8k*SeQ0&WS($Q9MSJQ2MYWhq_anw`gzXe!sEGxmPgBQe?4yn!k`o zlN=9CJKNR4UAp0LMr){WKRx|^ucXIr7{^CQ+DvDrP3_lxgHpJO)@gYeV9sAZcw?MR zGwgH{UIJ>aKbe^JD@4utY@DE5ITpj!{!?Ben$(fGD~bBm%N>tdCY?qQjF8?mNkd2D zB0L+0jfny8oEW@=L*F9@kwlsuZmA#w_8%TE~1<#V434VjIPFZYeKeYS^#xTO{ zCduC1>Dw#AU;Nr{LCerx&qP07(Q^5TB_AFt2!`aS=T_2ARx9}G-5(7<0TLyK&;Fj5 zh38;DezlCL`0m)%Rs)~BG{cnWZ?=}Fqj+JZHiD(wo&fiv(({SbjCv>U>_r*jE#x;d z=WZw4b@Ncy8_?W$EuR}91A|vCIxD@D{n-I_)FW3CLGq1$m*aAk$=)V}3ns3O{Xq4# ztIaa%UH0jZXCjZ7B1t;_F!8FjY>-OHs9K^dhk7n<1kcv^b8KwBtQ4$wuI5}BNbZgD z0^#G>9+b7rV>Fws*dd`>+i`HHAXFBJOQX%>*>WjP+mpIyKn8*J>Os?N@DDeEA24IS zt8jsx&T%H8tTVZr#!P;c>CEpH>#*8SUs;+N*v{lOT4VcriRQ|IDaW{if5n$OW4KBw ze$3$5sFe7g{&obvYTSA=Skz}bOI@JhF71^pBHvj*K>dX3lT~Ii(TA|gPEl(H`q8>i&!&LnEnAw<%K^=0hN0&)%;XWC!4(v_we?s4$ zLWc`LAe4y_dIsoIuO14$9H`0VC+wdg7#M-_LsY%Lm!aT)2H79iByXn>Wo9hCEJsr2 z@VEm+F;$0sHK|3+wt}Yo>W{;Ff)^?oEuIfNs`1S%)_ZVO9iBi{NOLrN6LwN6-~;fI zwF5+6uGsvsE|+_U;tPmP&B?IExbmg9tCGilT1z&!#@v|6fmpGm$5cYojJvNSD$&Ah zxJS%PRT4x_3UW&W72%_xov7O=2srlJn(+B7PGl_z;JRFHZhsiIq{>?CtnWJN=w*aq z*B1b@bo5&X!AEI%bo;5kEWhsY45`@x(z9k?zD(_SL8twN{HEs6or9zl>!trJsq=D+ z94q8zUa67G5T^`vdRvZ_Zgl4UJ0hEI?`pGZoQpQ96#tr`-F(^qQLUL`I#dy0GyEUA zI6}Yc#dbN`o4p}s=o(IA{P7P@q+No$$H;Dw`ay!At|WCvU+_p-m?HN?){XqVcSk~| z55H}iIb0Ouw!n<+Y3I?Vx=ERuv5O)|QWGs>%G+WnuBlQa(#&o^XfaLidAh{m{E1*D z|8ijPncb-6=)?m-=jdb-5N+Hb(iH5zX3qa+pkpcIvdt1~fVpWAj*gg%13nGTX# z?9e`(vIjpea1Z;!vRYnTIzb=lgYSZeZ!YSSfPv5XAt6VNx?=Bo3IOs-f9cH7BCK3@ za7KcCmtIZFJ}MoF>6|n$&?4ywAX=(7+9u zNwgg66~tecJi<7d$Y{+cxBNkl=-$rhGs#<=zgDaj8!31CjdBG=yUOk1R|xgYgCVZv z=3(T{s1MUc=Z81bdplUCDYt^oq1-fRImb>~!wHaPLVmz+tuIEEEA6G+*I9;cYdS_c zj+HoO!E$V{qT8C58jrDHy^6hKNO;rMPN|*XtbphBy4}G`gsoEQRl#MnLGvuefAvRT?VQX5b(@Su>R!p>uFHhfoYD#iczoc^RdR@)~CEWa-FX^cp502HmR=M}_J%lm+ zt_;FhU9L*+9mqu5GXG6-UQ^YA2WiyY!Hp+%1*@umK4S7d+um5^j2%~@y}3AQDG{<{?}CDqfbz-P`2a`rNFXsl`6Rl_x>&Aa-cG==w@3}q7vlw;4pMA~j%nV3<;L_-xU zzHOm1iP?UG`UIXZ1%8X}R*3fP&oFUhLIKK@l_VHwP_#$HqCcz5&wa%R|d9(Q6vHr=)lCBz9DvT?S7$ zVv;f48f()Ju)D&eX&niK)bIz~1xg~3rcxHw|E@+AB-V#&%1I}gmZPN{X$k3)zxiRq z2{;2AoPoPnZ!aAYTZE_QPPuTyTF<^(|M+FBnZd~E-f+abP0fZd+B|dq&wJv&q<8#0 zoDi(nFXeC~@J!eGYBxV`>(0jsfHZaJLq&)B^xUNgWF9{xg57vp@4oUD5OUfA- zpuG!?RL|k&Ec+$E`t8vB3wor3GaIME8BVY`X-@N9>Pb?j&Tr|Rumd!uIzhGBvYhNL zeFxn573@0@!K7;cDO%E{C#5zi;aD&lGyQOS?m|Q_zK>ol@TsnyNl{k=Se3T;za0f_ zuVy^cqQ|8C(D>-jIP`(#jw1Z-?IXCyDP2u!Yxw&o?1l>L>Y7vn0a6r>!NX42F~N@$ zycWS+wQScO`78WN{$wZQh}1VZS%4o;E9?u|N2eatM;eAn^*53I@aL~6g`5ko?B^Y;UmpC_B(=v zR}#fds$)f!61M|gs(+h-v4#j7x=b5$!0Wsf{)}RS+DxLd?~XbcdC_CdrlzLpq1TI~ zf7BW)^zPt|tup4^dT+sc7jZ%AGrqFq|6L%lBS~4Lajs2LmKb8P?@$U;B#!GvXM39- zKhmpgdPhyfq)52PGBe{Wtk*GJHuZ#H+}f9P9f1@+kQ#w+PL5B=^cuARLj=-8kyiB>un z*|u^}SNgw~r%ov+vwh5AB=!|Q_{Jf1^4ifWkT+kEl!T5>(rO z_n(1E6GaoTh+edpCwwpe0yMKc8Xgv_J(O> zc}v_4?Wom3fe#<56}V8Br~3ip0RY9v*zfF+9mUto_k)c}XY-g}XgE&hi3B;snc^HZ zo~IPV+m&6@QBHaNZgWvvPGzAiHqsu%9-V&;Dr+ROq0C$~x(3C((iOtATy+iziK8DR zuVM9Hsj$Pn#$o9w<_D*?nCBppLPplNt7P5ixj9{*x-0CN?>7}$y3?y-^{fTC#9Z#^ z)tz}iY5P@;A_3>0uXv_J9A&aUjUMofKo>dED#NaS%`s2}xaM%L5^35V_c1XM0J49YJQKO)cA9%J-}zo5RAJ0p#6z8AA~ho$_=KM29X(+p z?+ncDJ~*p9I@Ha^4pR5nDrTDboTGQ_hlQtAq*&b7pS5js&3}Ji=kfLt0w~4y7pgA~ zbm0s$?AoN-w7;g`oa}NG6|Q;TY~upFR19sKFd({8)Pd{h=)tzzndr06snhoc;$Qo* zU+>Tb%aSI5qK|I_^8vwX6t{|IboF$Qw7RGAZ-TGVM1=#6O1dxf|GB|yj7H|sUe+PI zUy;^eXT^Lpu4z4SsaNkvh9GweAEtd8cqj?lj$rTkC2mQpzCC~sxf8C97)}>*n)K4a zU?yzp$L$&?{?EHx)PAQK2R%IoHkNO4k|U#R)3~#+&r`;|f@*O(b?M4 z=2{{hpx!_*@FnR}!G`hUvN=awvs5o|--W^(*U(>P8OZU;Tx zBPrh;g{!)3R@T8U{C$C;6QG?DD9{F^W}T738z0KJW@^k}_t-!Mufvy88u*SLQ68@x z(LMq0$$BvNbpxPB$jg17s|Ta%a(^OOC}giOUCasO055^*?~H=JOrw3igN?RhY$X^K zRt?{>iC?FEJ|<>}h?~#L%Ugg+hUZ@e?mz&zr5Wy51-~>BE4yt#A=g&;;7#D=s6IBd zCy|6_a&_qf(f}NMu#i+FS0i*LQ)8V$#1W91 zia42v=T5$JHDfMM>$d4#H4);{zJN8BYaHlBi?qtP7UBC;qq$y-S`s_K8Ve<++ zX#jt6(WeJ?*T4*VkMy)?9?v)Lzz)aT?>A-_oN#Ee4If9W0_D0x5nd~v%m z4cTZ;Wo4u;e+Dya>i{QZ^s*KS43FxOi15E&1gKvi?Cbbn^%SJEcg*Iy?%V_OdD0|* z(%&mj2mGwWg?L$a^mCE}r-@Up7wrY5cF}2bhu;9LtR~zZ%LDq1LtJ*b+r0i{Sqw}q zLlwid0)&}u`U^h-<>Sq`t~F6TUyXkCUgUULfiZLF%txEV5YVDSupXr#3KF3iG-Sso zbz|#UoMjC|UkGRya)lg->Zc7@4d+--zu2HbJo!2KTgkP`tB1qi1DBo(PE`uTE;?A5 zD8nT_cp?bZYcvUcpiyBfsI&FcC=cM3YK7A5m6jPkxF^%5T^L;e0PX+GtEe zn+PAr9ZCVgR@a`2NB+TFF|V-(u&{7y%l$#^P2KwSrQa2U=JK=K^|3 zr)B+W;7Q6Jz^2`g{S#9M@I3_Eb*;q6U0|=j!f4Z)>C}%?7o~)YM%+mY zWm3l=KxeXI{I%rKJbL(N1Wz~!JT*mWO9Whzo`vw8#_Y^tu6HkFW)YnZ*Y2mC>AHQa zmj9w-v_eDI8Cb?QS346LSgG+ZW{8dndq)B{9?2z%ljl9@GDKHF+0zri$Atnh z8pMdMGX}FDs{b;fMQhsvuIOZhWTFII;BLe}8ZO_|TG=l>{~*W#8apBj+p3q!=BJ0Q z6S!H1a#`Hfys-0Keg>ET@w~1P9pLsA|+IE83YG0^%32UD1&~_b; zxYf%nCAh$Q8>~#jioXfp{r1s#s@k*BH=O=u{u zIYi$pe%WP=ynR+?*_J0rr*4`@?GdjRcfC4YO|E)OxJc0ToLsC7>TxIid)ufFEtcv* z4WkVY%jM!xbHB2)GnP!LN+Fr??Qd+gJ>YI`@b=@8i()872Slr#ifKfscW?FT^libr z@f)suZ~@r&tgZCX#Hc5f?Zo}-AdkzKzYpcv~uUW~xZ^}BrsX2jt%m85tu)3HNYv+_4HFQf=U z*{PYH3Whpkt-q5gOXbeizIw5Rr%c?pevh{;`cD$~pAHq;8*E!#OK|_NF?Z!9V(x)u zaObB{eela7rsg^uxKr$y6|bX^UuOXb_{)Y)09YL0!n#Xze@F12=Qvp;+0PEK@+#{r zu9%?>aYu(@Cz`7-m4Ijy~Mp_!wlZ*>@9|2z)6*?oB-<_T$e)c#soR`w!6nkL=VW3 z3TsvUf4?!mr>UtKPdUvcFSFsN8pa{OWlCL9lr?;-FEU4;6Uw3q^6-S6g=M+%!!vTL)Xe^(}@{;SJ%2u}YXA3mO*{!a4+f{>yK9+Yu5)893apnPwaNayiD+3hyuQ9r z8XwL~RbEe9gWd1shF-crGodhz2e>V1uK�Xx6RN{@hXHn=-bWdWjs6sYccOiO(F6 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 !C`kN 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 AWdHyG diff --git a/public/images/app-menu/app-menu-record-3.png b/public/images/app-menu/app-menu-record-3.png index 14c828b97855bfc853b5b0c14e5eb012c512eff4..4d8dcfb954e4d80da0094b989c81170354f3844f 100644 GIT binary patch literal 191597 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 literal 189840 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�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

    2q6kR+MPG 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

    n=U*r&@wL}>BmFtd{@cPRv^@Hk%a>mP4cf?0 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�t6lLk?Elf}XG|`4Ub?A_)A%sAi7vp{F9)ku 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 literal 97383 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�){!k#WnTpdma1as{-4B@m) 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

    93I7Vte) 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 literal 131953 zcmb@tXIK;4A2o`4Y#^c{pddt4L^>Rr(xM_=Ktk^z(g}!^&_Zm0(t=2n7L{H@@8yV; zLzhly5h5ThA(TK!yTeic@B8I`x_6$3hsk6zd(SSvy?$%0{q~Wb1}if+GZPaNtCr>i z2ouxkt4vJC%TApDu4uTz6M=uHpK6->Ffnlo9R3~Ag51~yE*|lLXxwKi9k{XreE7@x zp6)#+rg9_;)&4ls(PJmH9^5kuII=!_^0}2?z5I8WPQ}XWv!^q@apVY}y2i{LDMM~o zH#pB?r@9{0JmFsdn5&FQ*zP#T1GU0iy2rCcly~%=?>t$PXH+V_$6zqCA24!hN`tfk z*uV!vSkDLkmxwn{~eEBb^bYJ%74dn;m?Oh(noImIsfQ%RP)dI-TuGg z{+vHgJ$?0m50YiSd-Ts2Za1I*_2+!_A=BwU=lLK0|0-boN|wuTc2de62Mcr{lbNxY zWld9XQ-*;oa_dKK%wK1^WFzhTkmXk$o(IVmAGuNTn8|K`v54h&`;2DUvs~@Bf;RMM zFiGAYhIt&69{+WFzWi5ipcU0)2^PODeB@)*Vd`czV7kQH;`6(lpzA>6;@%Lfe%~^8 z=FamU>bIDpOSRrx{4V07%^98JH<;{p`qHJue%;5k+7Wk5^S#B*!vXr=QRW6Y@_)Jp z^G)QcuG?wgH~aYC)meSZ{QuJLvR&Gbzq}0dCNG+H?#jDlY%Oeis z#pdN3a+Y1yVeSag5qh<~u!LyUK_N6?ZK=+uF{%~4HL zTeu%}YofI$7aO#1`FK!y@64}y+AaQFdQ|hPH90>)TQgc-qDd0$)R)2+6BBa;caNDb z=bM4bQ<)UMSW4Md2)I*+Y2{cKh>L|wye~ITAH|oK@yzY_`-&ucv){ESv$MYv@~@@3 zXh=fxeNC=(Mv>^~m(Ad%56%lMl;zImy;&~Z7~S&4B%j9vOKDxJMQFZ+y|18*^Q{zG zSUI6+FBX}x|E>+UY`aO>UxKx8RZiG~2k0vwq`Vi}p9dwiX|Od@Hp0ju)mh!j97v02 zIIbY!Yhv9cmRBGb9;~`I{S_B`d-Y$N?d5bo|Nqr&>5`z{on4LVd@9<*QhNQoYlbKV zsY@y>oT6_S2MfsyojeRwn5tZZTMmK%LOyvMDPXOu98{Ozbsn(Ron;UqBrIc=^}4k0LzXvEkoEQcv|vBxf~wsmncr4r-h z{m1mm0a<@maxzZkOM|^8`rMx2J8S7SI2bQ{^!Zxe zHv^*Fs}i*ofnOz;r9$mswZqj^lsDP#8MdFa^_+@! zYHI4j&+EuHrucddIYtE7=HgfW>JS~(J1c?c#XD9FzOJHHX0+gIyaY0r%}-chkgkQL zbhy5ep}}jAqW9wSi$ZRW2&8uH?|5Z~8G|3s z?nVEcy}uf#dN!KX2@S$3E=C;l-21{l$7Pu3U%RJ$FPj}qDhQp(kSP%GpN3A%1U#dX z2a}zUIh#X^$+nk)!Dn|S*&R&@rY<$?bM0(w6n@}g9i~UTu9kdZ(N;l}T%r=e?lOM1u|u4_~@+xv^ndAkd~VZ$nt2|4{X?Lq2Q2+10SXRZ>r`+wOAA* zt&NVa-<#X-)*p;@e}-0#&y1Lb1qY6w^~Az$3`tF#qE?skP()nad^iuwAa=?f%_}kI zIURs4C%oOAutiTCaM9;|^0vroV3HZOsK*NOY9rgTM?YdPnJ$;-Br&S}TaPD<2Fdrr4ebJIMpM1Vrg zs0S0RE0uU1Sb%rafpKt0-o8(eo(6U&%KE^xIf)DGfc)a3z>fS>ab z3t1rgBeWyA#?jOo4#l(j-a|np>esjGD4D^yh&;FiOYM&wHwE%HeP&epUgLH!G`UU4 zIb(Z!hK`EShc9Gb(vr^AM`G5{s4$p#%a7qnXVgUd=x3k)v_wlm){e{p8jXBa*M?4T zBe+N?B_T2gDE$QH`OgrcIN!Di{q^cr8912((H$PRy|n8}BmK-mc6bYh+#H;0z%q9j7_(!_{u1P>UzCg{B`Md(S& zvFlH6IjAl!vAiP`Qbi+4#Cl~?$LjX=xjNbOXf`HygzA4T=q$*$(yXJalu47yJbBOi z%L%l*R&f+dREE6Qw~bInOn0}1VyEIaU$%PjQ0YPEh(u>3P04330-@0#3 z-8`A+gak9F+r**wDj$yf$W7V3x=k*!jRiC2U+xo;q30;A_-c$o9{sz9c~1UgFr!0) zWj;e9bbcG-1C$ZUfugr-nSU1%ql}>kMS}5c-~$&W>gILgm;_u(5nG9Prta_A{Q-PO zgayRAc|gONf)zz9>8%W!Z5UL7ibH)i8B=kVxrWS>pB`67}rlsN-y#6kq zHq4n%^!H>S3UlAjgm&?oE0#QK*=c3)N=$h+0!XQEtb*j)n=COXd^tz5_Z6FxSxtwz z8y9JjLB3yHGv$V%`cHeZTSDvAl!&8--qX<9t`#udwQ1#>>gP|N_||jW{se+(lQ4T2zq6hzgwDTg%;=4;NEFu-_nRXV)!lS zZD%L`%y%2~jPx9FytaKXlw4FNyVo#UIJJC6eKhI)aWG;lklkb~ z72>-)X4)lzpcR?bJ+(KU=Jg(ZcT60m0uO51-K=fT48~vny*U5fV=7))bpcYpX`pNj z)?RHnI{flD+{+^qK?fboZ1$aecUEchd5VIc8wQ^9ZAcJIA5xjm`q3kTF8n!JJsDIa zhC5t*VNJA>uuX$G3-{8?)2;c6W=7&3iR*h)aF+S3$F8VAA5g%@^%_FZvH@_HjgOB{ z$oJ+hrxBs-Enj_>$}id4_njH*%jUfmbYbyCX?|FfLt&(9U zzU>ztRyvgGFC^tuZ4v&(lEOr!+i8&TwGHVFo?lI8;v{spYIod{Yl%|yT86JpLu=Ob zuCVhx{L&9FBhX>Ja&Qiwq?>yn7GvQ(CZ7CLbN&ONxJSmYy|4WY@ zSy%o+Z){_G)vS$y&(mA2*1eaE|D^DjJW=G)Je-a#`Pq!$gf%9_RUmtK(|}oY%whjl z0flK8$nttkt|_do+a|DH4Rwx(N~90R62LT_XfrKu+MtMXn2R)*>3m1 z6pX~e4v2BXt(<d11nUgKV=N0oAUlQD}C)+R{bJ2;PFa7&o zU)lK7Rprg^uZWmIIKMlOX^F)E$V5){^p!-5&34rHgdAk-KtKQ{E1zpv z>r`+@b4VaC-(TctXUjbaZgoS~A@DP|*V0kW$XOVJRz8+w+4=O=*>}7F|E%HsD0oZ% z<{A>ISbGEjLh=0)mMu!LAuo*SKy8rN+UhE|FNG3SD9f?7z8g}b{51dT2m7) zB3vrMXSqvy_WA5uOa?kUA=_`{_gr8aJ23k2aVW3z-r?M5)}%B! z5%znc(OoZ(vrt4W%bwa_fz4<*tU=w}CwBk6j&u^6JWwX71b021^jpqYK$}|gwki#FaeSm4{}rBpyRzl6k~M)LoKqcHXUa!nJnHN@2z3<+M**(H+Fm0 z$?k4$k=h%Kh6zW64|7n)4pG13Er|BWqk7B)gN3g_Yda?N=uS$cc6LnQ(yQYVp+x_% zjX^3=9|r*QJ_}4vl0R69*0)aqqme;!qswQ)Rhh5oPH%9SySU6<&g&>135A?Gs|;VQ z6`9gt1}z>oI#`bT1Pf?!5oCD!4*?ko_1PmCe!qo%DW>bC_;9vS-D37++#!W@5=8C1 zOixqEO=<&GZ8Nv7Lk^lPqX7~gFbv!P955)L%NNao&9^#gE?p!S@Njh$K@c#ZC zAk)Dvd=<68CJxVTp|ZeZbm*wq%CS`u3I>pu-Q+zdY@(wb%K|;+&oo z_EwmcAIRi~YqG3q`SAe!s6Q9~Kd!Fi;%x;W*f=y5P&hrhhcud%)u+9?Ks;X;4|B{G zNpa-A#KY6mdWF)AuO{XIkh4$RHL+&otYW*oKHY8H zq!bLIeIbl*fnL+}mP^M-uq z!6gvjisR0p-KiAfiz=TrvN%DHJG@C{*H0=guITH(F z{G?z4ISFfNwhRlB5=TVN@J@vOZI#%-y~aqkrpFa+%at?rBp5v=Mpqd(M;QPWS?w1O z1K`o3@MRV819&jk@cYlOOks7Q2UUyxdr$bYLe#R1#DrK~RiK7fRC*#3)r$@c;=M}b z%=T}g>v*RXHTY+KkEcfx+#-;G3l9 zC@#LE1nE}`MLigW^K7B9Dn#jVt zTf0$_qf@yueAigE;Ta_mKwK3wj|#8Knz>i_&g4B?6I`+CG8Czt4;rw`k5qji^dv#} zdd}0~yN8VIxWAY!Ilu1Oh4XAG)PU%d8dv|6D!c6I+?3cr4hoJ*g>Ex&?Hhos(&CTPeaa%-l z~~&l=MkOu zA1cD7SL!3L$A%2P35$d5|6HGu8ZHMU0pLBtLu9i<&Ixs!Y6u&}gr?-_3pFXk-8v|EH_DY5(XkgIJvfvO^ZLf>=PaV3?<`zpvA>sV+~6V{dZT zbvAIku9u4Qb}=g#lSuMO5FaKf``2@r61kI)WH(8`$v=Q_W841dO5l&_h1WQ2-Uc@l zF7kg9Q=-$4Nl42$t_9Y^hNEsv6bGbTlvCLMF5hXO(QMr-%hW0GM@0H)6HQ@)%mFI~ zZcC&zdJWAmo$*_qB~Idy&PV~Fr!v9g#gjp4B@O@)5DmAftc}!Qigy1aJKb$Ia|O=J zgwOv0sHu%zHOgrl6x=k13yhMezpQc*M}(wBD#bF+)289YX(pULU6C3_W~u!BM7tY~N3s|E#Q?Qxq~$o1$pk_U_LJonCN&bqFks0ieP z(hUs_6)OWXzXc;ZB{yJ(c6N5U{2P;&%3Zm#l$*=ci3~3l?>?RngKlgL&CR|0Q!A6> z?5Sy4_4PtL$98p@POlmjx{Z#H^OZoM^A3kPEpQYULL9T-vfl(q+kW%v8z1SXuHMVg z0(Fnqkj&<$xPRTmRQ&C4@5c|*zom!8KR@7q{+Hj4YBS50CfTAtq~u-O0%nL#?}HM| z$JoOsm^F9=a{d{bc29+#%LGDnm>l$(PIsC)J3EV7&T((>^8RkTyNdvU@)*+F?&9Hb zrV}+VP@2;EQH)dEEk;de%4cst@pDP_bp?gSWcfv#@zd-h?lTuha%H-9T-hC}FS9>G z*K&sJssm4cq@kfPP*?-6Lsq7?=f(sBsLqkawCB}VsC1o$yzF^P5(Z~I=7LPMz z1-n+I1yAhW1AeN>3=%W1Q40C%ca_3(0lp>o6#rPW^Rie}SEkj4sN|}yrzr|Kcbw4j z0^=4w5XqXq;_S|3*SPB>i5rqn{VLNgC0kq5@TUH7Y{^+M^C=)KS4i5VV7af`FS)Th zyl2f@wm}@JD!=ypFNdpP$SFmI-(%_d{K(8`LRefrkTO<^;)9>wiw?h&*7wG5oOFOZ ze&og_N1bFbWDRLvNbuyZlJ0r|ee1B5on*JJO#S&eVCSuXRH~dALffP2OO>5(f#Qj* zTgQ=qs4qZ4rBv+Bzlh+B4cfn@)%CE;$@lctFSoQhI+G+oA3~FUJ(Owp2c3fN4KI(! z_q&~v^@l8G31-@GI|%S9W*p1PyYt*&Xlk4E?)PBn4B9-`w@TuI8d`w;^yAIG`qQaoo>HlKT#ar9?U?#?j&c~wr%O>1{b zgK`(W+(`vkg=Wl71`L}KQ;Tsc@(B6%!t38oORwt1kCaPmdk+tuS3Ly%3cXx1cEtz(lgEW{1VlSO68&;k=&7PX& zeW^{<$fQwI%=`SO2DM#d^b&k(D1 zmj8xMy-xYNUZ^uFMCGRAb%5WC@_zsBGS`u8>iaa5jqx!}p%5b_8*^374z%AL^3~xC zLG-B`Ig*h2s}S#}P|@n@7*E8|MFnlJ+rj%bP4Zocg#>(s<=U?y`p>t+JanW8a;l(i z*Mc7U!_2kly|89cF{QbkF8bT7 zF++6$-Zgs6Hyy=xhU4z*7&Q9oO?%#v?tHZn@~}t!$M$&~zo6kB5D*3B&5gfmXcdN3 zRYb&T+Y+>&fEwNt@P@oaN${A2@tT@TtgntE58l^Y?!P*GQh)!^Oekfe{L2ZR_B&uj zMH9~6B(W&kUNBq^{_Wn$&Is_pD{Df^I#ChsU$dzAr^8>+^<%r3hhG z(Z21q%evO1J!e1)m4e}C0uBoDva%|#k6XiLCjr*S;b3RQAf{%%Fxwvsdf6M(N@uDJVePxke_ zun+XoA7t{jh)qqQwmr%R0rw>Fd3X`51w0no-={_i=HZO^B zHYx))SC56$cF~BKUh(GQb613GmNSDpLn(yhfkWM zX{oXOIc!#JY706Ye(rwIdba@X+H<4y7ys(iza@V3Jf_*Eu~<^fpUqGtTQ;j`9;-I) z1=s9qSvuKg1F(-f8Sh?Py)6FmdWqG3eyf}M%1J%$gK7V&`Q0`s(qV( zn95(;NNNa8wuSGG5dlWD^PL9o2a2^JJ)-}!TGYZam=fqe@LzlVQz#JT8TnO%vQcZB z{;a0}6O!6eEBHJiT)1 zz=&>K`)sxcYK{3Y!B8yCsM1@PDv%9rXu1=dD#_2O=Ng;att*8C*LKO-9vCV4j+PU5 zibzqp0xOwz&c3oTtU|A=0}6JlgVyM<`|+m_}kDgw?4u6ds&aOqA#hdHC6LR%BCA4HROC*G1Ud!6IRs;-rx zOTm7A>h7L_hMqH%iG??GW5Q!gC)bM!9qnP;3q$fvVyQ_IvEik${1I`PnYF%Ff5pX* z(u5pAorX5K_@ltUOf)wK=;@b3Pn+gk)2JuQGOJ+GA-h?_n?om&2*l_$s44gT3wIyi zpyCLOTd$E2_X?a3xXtor$^MtxA$6V((zF){3pmg!3-2F>MxZgo`~l+4hGJf4r^X~y ztvUVVz3yj=0^wmbL_@wL;`@t}op|(Qvm~QuCUnBaz2tUL-qr|*snvP(B#y&8s;&u4 zCnCN3$0jZ=$_IEd@py}jZ(vuX|3W_di`EISjf40_UfQmQx8C#g}`Hx3qg52o8oT?WP6`(|y| zR^1{y!)K=0)3V@ORg;_gt$oUKoNTScd>4zF8{9!J9~KlsR9X460|&*B1G}%yPEWYAVo!mL1;b+Gu)goxLYVpcGZb4a7}+G(z=92n5;V+}BPZw`n|XAC5iNi6 z?tB(o=ze?KH`MSy1}pTgw)grfmuqL9xl?HktzEz{n)d1~rTdzW2HxS$-}HAB+z)eWwVW1EIbIXhdd1W9%6yKj6%CnF0PaJ zcp0%gUUgFL5^~>yqPWCj9d%5zlSV>9f9C(~vIk^j9Jz+opB4bADEhK=h46zwB$yrm z#0*iZM=3VY>aow9dviWseJC(E4d|ZgphNdmQGH3!L18Yl#tK>3M5&cQr*u&O86!ms zuKp|5inJOL^8zm6ce~O;CU0paW=0;^f6oNP+!p|yfvKmAU@98P8{Jeyb zC|_9B`1+0$kJq3yw1sw6Fb`wtq}qMDEBN1|ayfH5xvIE*_E@CsxLFoa zgxQ~2RsjL&tu?yKw&AOe4-z3)BY3ulMeFh-!UGZ5DUig_68{OH-K_0z6=lx^`@ZvO&E7SMcnMXjhpBfAKS;*CD zrD}sTK-D*y&o?r}MLr=%j~%eBK14}1OU_Pylb5ixIwEvD$<2FW76$Y*M-DyP5w>TA z9+u0wmouu4&maUj_hl+8{?~8M6K$E70Lj`&1!|u)f%O3AyYHwK}vNNOB=Qdv3{UvHKgUA;wdY;gBzy6a5jIDwn zCQ;*l-={Aa=k8FQ#<;vu@7JL4Z10$}ulm;$y;;&Qol@_|g?377OeGXK51g^}UvaOI;ZBY&T}g!?X!BT-K}pbAkbt#p zuDFPSRmQC_<8YB%2_zp|6XtTt$p@+8^cRxcr3cf-#4qeBql7J>%VFjL8-3DxNFl@A z1ncE0L;WbAId>|0m*&9oEnAD|_EtjObrnkept??PB(svxQ{TSe*ciqPkx((Mvhz)q z*dampQlhuBd$*nLnlPI38hROK{yfjBZZ#>*>+RkZACGi^AuI<1BFUV7xZL#Ws2T@O zSo!F3N*<6ULOIhsr}nrv*KAQdw)ElTUe7c-i4d|jP26)wM-dp`t6V(s^hg(i3-U!m zOD|%#*S15fb|zl8mHu4*3A8T~3b=U8)e3HuOxRAYj$3+Km+O951}vI*W=$c{u~9>D zY2$a=W9h?d6-(UiNhPI5qQ-Z7rd@C`2iE8S^B~5>;C^=-c8OqeZ&0=4FNVUzbMfT^ zRg9@}L>y%3rCSkK4#_=G$SOgi=#dqFK>$5Ie#6kkwQjmP=123i@oc=nF|2+c)=(FH z*VMtYrCKb>Ls?LPJ5OCz8>HqV^KdmXe5M2&t|b(bU|CSWUuzTWD`v&V>#qNnl|kxt zv4(G?)OLsiAk^CvtScK9$I1Gvbkwu&5F34UPzsNWoJIq&hZE>pKxE1??nK8w{|0NN z#pJ6oE3l4ELF;ntdQJ<5lu05sKSi{Q_+yn1=TIGxJ^{Wcs-a1YAV94h>}lJ5RE&oS^Jq^AZGW``*VAG-8IVF(bBkT^epTjZB<%5b*s0MxMtgm0I-xwIq@dX zA@1kK9xT;XJU3+Kf)f!fhqkLMo9P@*cY-nr9=16I0ANQHe6M?8es0ERE4kI`gK@0( za`LzifA#|NgD6h1RSuPdnPo5+I%F{ugDkmdp|CMZaPDdav{W3R^GCz?X5}pjJlK8p z@do_N_COR%C@hpTnFrop2^fm9Nzg^N(u2a_xqBfhAqmuN0^=w9U2Xdek1?m89sW|(ZX|uTI#aCx?Yfyz*D<8?&TV( zOWztXYdBCS_l;rwTn}~iRW~%U6n~7_ip__SMIQ+Nh_ASa6Ht}TJ(B(GNc{ZS#8ID* zuK1ag%=bRMlgt$6AA`_blwOZ1Xh^CleoNkZlq0N(Rd(D79>^Vc1|58lVA%#yCf|Cu zztgz5RErIzh(6o_9GR)cM;n$3i*U)U`;KToh+is$hLzx0YTeH80_@OuNQ(Zw>{o1e zZl6VLTUL;5>074eYsDe^i+fyD6`nlF9yY|zE78{pwTpm~+pt#310w&cQAq}jUe&ow zkZ1ezUa|V{1H-T?ufn5MBYKLRq3CHa%ekC$j}Fco%`k8D+S0X2Fu`B~t#E&-w#D46 z1<08?@0|o)L{Z!Go`HiTV)HVCgj+VT4EDUtt>!k;gpCi>{s4!%Ep%3KT{n!p^EDt! ztmciw94%Ay`%bb59dhdGBATDas`hj9B&TIxcdWT^hJMh%*7AqUN{CS1cKLf1P5_8_ z&iL#poAWftWXm~eF>5d8BsmdoFYr2w==LM*L*?`aCx8XQf~0}NA;ElkjGsFJdyQCL zOAn0v&y=td3D%__s>-wT>GN!}XOb_T z(oT%l76BV`bFSLt?FB6gi^Lf1-&!#`;@VzSZAzNSZ98S|Q@ym5LjC@AXtZ8bAvMp> zRJ~{RnukY^n11a}saJIAK)8!$#&m_SM#j(`dx%W6cw~R+fz}Ky9I2+^;NwY|!L5Y4 zn(BY8VIJ0mmhAH06&~ozF1_oj*{OP}K&tbbixIkDnfcE3%PQRc4x_@1d!OX?ICjlu zD_$~df~cEs!#<7UqN~#Aeun(t50y{HFYh4*Q~j_O%0?R%MfWv8FD6_2o7*1%@Pfdh z(xda~(|eUr$a+)nKsjb9t>Y^j*via*&TAmX(yLLRl)7enh_n0=9r&;nqjv=+f}!i} zDxXp>KD`61KFr%}D*KP@6~a8ko3k4?Y?w8GFw;6IlAe%FqfKzBpu)1_FMbR9B$)kP zNs)kQ^Hq6jENXmO8v#3@v~G=|AC%1P;$aS zy!T!DWheUD><_a?4E)E0F8}9?D%xYQklxzbW*XG|o2ao~kK%Tpv;%%-u4Dwlk=3*_ z!{!ttYiguv(e%Xo7X~cKUC>r3iXUdy(_%iyVfwnz2(UCw?P-P~FPZc5CLWLD4!&=f z5u+aeYumjf2hvhR3=;D6fdiJX}*Z;lipbqsK?L9*aAa` zgAum&6O03>Z`H%M12YU+U*9KUlaMkY_ey!qZ^c;yEcUZ-7om76Rm7|r(-!`Dt_$oG#7Njt2%>KZl+9M~g<&0S;8Csm+4CL1~6(ia|n znsrFQ(V|#+Z_12-P1XqR-El$56ezw_BL2-XDp-Z3=SPt= zE8v9j7$Q`xC`12^A1LJ@PG9Woo_^eW=hZr*V{5@@&a-jjF$zw4+bhwklm=c5&U>O- zxKlNaZ*+W7lH5vNq=kov_ktPZ!MfGLBIa$%Myu_5-Pc$tfP)Y7p;P=2NMJ4~q_u9g zu~e?A=4{{(lUlR61|_*U7aU+%n?1OaS5P1{2k&ddi2ypwMI# zbGc-#l-;_Y{d46f5pKoC&!3v5rxcwY;1U+4yjQn}%Iyt(#Vs#p^d@VlPQ3o9dyo@}$UAg_@T2i(DzO5$U>w zv|A+sRbwWW?E#WY`cT*J`E@AXL>{mCEMqm?DHE*^(l1Yc4~{&l>7y>?s)V3N`r8A$ z83vxOmCC!D*f-Q&&{Me)Kb637@}Y3zR5>p(_B!q>=-_F(&%ofqAtDA`_AZlc8Xvgl zxH^t}*qyLM`~&F5u;#WMKq6!w5sKSJ*izg=z8@nDW}=!7O<@Cydri0T$GW;&C{1$W zw;3-l2^APm5hV8E_Vi{#uvgQnF!x*b_8ktmR^UMzXxoeThW|_0iUHsXY=pzJZd51^wD&*-;Kgxz_ivE|+6hb2! zyE{?=WW!VbGG8@f6s)3CPWLA&*Ron$n|EY&j*pvFke!BVI{RGQpoCJZ(QmwVZqRg& z4QVH}k*cK>$t>xcrHx8AOIxnqlv8H!FBw$Fy&iB$QIS%ZNV(u%gS|YRP9jh4S5*2? z%&(NN=c%a{65|y0Oga5mr@f$U?Ya5R=z-gl@Yx$}^tiGDrg(N#0GTEvx$3Rvh)Q4aQR zUCY&$3zT*$K7}rBoNJKUqt~0;-8!y)Q$G{1$pQ31)8b|=r$qxai88Fi@d^_5(KmXO zx@f|2$YL zZS=HP0A1A13|#t9ENclE3GBX4kh}9tJmjGVRW`jfx7;H3?1rkVjEEKe@}TBNeE&@r zNtK*3-NH>DDzS_8QqN@q#5jxE+@a0P6YWHN1z{Dw8j~VqC|m@8k6^7h2eGtNA})Q+ zg71D9stPgp&3SI%Hked+!>?LHb>#I=D@3!47wY_mPM*4D-!Nw&RXl*iAE+b?}Z3u;;tuGVtFc3RI>A;$}`E_(%Ex3H*m6$U!ohlqjx*BML)?}e$wee+o_vh9Wev>ngd0maCnDi;t}LWv#8 z?JnHi!L>yVu7)B6zIec%!sJTcGOHkVdNWR{#2X8{Sq#IyDvCY{HE^e86=jJu+*};D z&J#$TvdnTMZkInLaZ16^S-ANOHe{H)*X0;!uLFeg(q-0{R!93N(awuL@NFs^_aFL( z8JZn0=_BUpr(KGUZlJtA&2Q}FcnXxr?KbuqaHBN6Ivb)IUHwiRXKIxs3BSjtvG{pG z;$TQTxQ?b%Bk`AADUjFh&$A&$oij#nuD!;A%~B8!TI6~-X*N$1K5z#d1+3algDRf& z`9Y{c6Pc9?|<2f1$q{xbUg*7!bqS*-^>68iyC``_=C-UP& zjQkF$UE4Tz;LdV7Fa<+-ShQbi^LW(VoA-HVQAESTT19wd+@a7I)S^u*wPI(F%k+f> zAgMSs?=}=!=S(aDE?`rPj}}LKCY*%H+(upCfi?k2KtZZO%gb>ViKcT1+L|q89S86W zBCod~n+3OT{nEb6gd6u40Hk;*y9_!cw+rQ^r_MG$R88gEC^NWYQ5KUvW>TayI+7@S zCFkiQLqnNme6ULG8s2-ki!Qk2RS%b0!Xt8f)cbq6)C}D{XKHSzDkP~{_KpVl?x`-| zU#W0H-{&rRM*DZr6hXYbdBq&8yd~vxv}BFmisi@MJLXbevl*YW0wJ*7tiO%XCTRwN zW|6C-j?jV-KnqmwMs~TQ8s}^N4nu~oRg1G0=4{l?x%FOh@7KLP4gT9$P?%n!Hx{K5 zK&AASQh+^c*H3KE8n$4a8CgQ`6;#la5U}w(nWf7L`8-Ru4 z?e*B(pUXszi>91W@P%QWMiGB&#^73|L*BL~+WO!N(FGsKn22HY6v{3(OYLzd(QnNF zBu^!i;WL1@>Y&ww%7ogJUTV973UcNEISI2ykTA8_elE{<&Kc$BF9#>0BnIvqHg2?7 zl3M;F!76&iMT#4-bc!SYZ!=Vo&K~hVB;~1=Cx*5+J6&`Xl8U_4{PNUwIKkg|Jf-n? z?f9w~vCpUXgtdI5?F9STo`^V3&j#a}ZTw*Ss36}Pp+V(~{ZN+2!&SKe_7~tB$mEQg zm{m$bS9{8cS#s)TK+Ws&{d%~)2|7TgKSRf*s31IxiKAk~(eU8T*EMQGm~U1t%O+Ru zTlmBz%_w&rcy%NXg0oBY0nctnU3bsuhP4rY_LfO!kH(_S8qhKFMRrD7Z}MeA5>#IA z?x=kDHgg3q0ZBn1iJwDG2^qU;@qeb@*Q9BI|I)TZ$N2ANHHpI%kw(>zv`YkU%!-^WQb`6@cyS)><{ttQZvj*IFM5UP zr^%JuKqA--$VL@$26SSGS~h(gq{U8U>(iLAaMvrm^*o_F;?*<2E8e!{Xm001Ebe!h zKVhk^5p4PprNUpU=PYV9e7-*eDrMi@R;+CKBYadfrylMqnxP_spPN5cPMmG+78Vf5 zV4dAVj?gR5L5A!n%zd7XHZD+ASD6wCM`igc{`R8@vEN^XI-UVG2u;X@#cqKz*I)T= z&4xX&Re6)p37duM%iYKko7T46AA7a5lzX1_>SEDFj)*vw{dxAvGA#j)Xvk)M)erle z>G8t)az$$;`}^cA|3hGuPR2>&qDS-HfKhAgB0%(|fQd#d2fHB2wub<~so-Kc zhw7Qo&~)QTp_+}Tny9Z>>eAtM(*uvac_6!%n|t~d*hU-5&8EEbXr6d+^$z_t4hQTo z7XK?wd!)R>K7SY_bxcfTe6;CW;OyuqtQip96ho=+rExnWgKt;{T0ahM$zRzFzfA(b z@j>M{p;FZNnZn{I!Lej$K!uWSgRreQB>X-_0P8Zc$Cz1r8s)uo*&E=6I|-qb#{1RT z!>vBp2|Q2ok2yo~$}|5t$K~}a5(gt{<~&V~y+MpiS{uW1ea&Z2^7-1K$K7*mXsf1O zhp?H8PH($UsT-y>-PsG(GEP0Q)iBX4&Z0(JK_Vha@q_LMiZ;N;<|q6)+Oij$2SRPp3CVn9Vm6 zjgAO~#XVDX#)n!kpOLK=kGd$~=Ayr++ek>16Lm#)p4K%t&YJ1L9IV(lrRsmmT72)+ zsjS!}&#gH1xgKur8I$Ys1`pt5m{Oje>%c(yT+Ymcf`q6`YZUr zGWNxAm~!Tt=58944^K33?_N^rv8)Twir&#Ev5Iri!}lt{zX)0`b-F4rIx@%g@gih< z$>I4dx12}aBl^m`CD4-cDK}|{48L*ls)t1ng60er%bYU;(}Ve#I`HO=l%WrV;+pjETp4t3y+6n@IQA=3xGZPW);~K zxH9};N99FM$eX<3WreU0nIT)<9tzcubxNiR6G`vx8xIboaT(s!9T5J1*n97wrn}&8 zG&WEW(MJ&lDLys?5m1WK1u24bLMMobbP%L>3#hap(xms20HFn>3kXOJJ#?f72pvKQ z5V!{)MSpkZ&b;@|J9GbeGY&JRobM@n_U!K2{d{z+3Rk3|3(06SAG6EkM~Sd>bgv!< z|Bz{IRNH??zt;Vq0RcDb(XEZ*r);9DWAJAa>YS!of}!2)!_kkkd;DnDoz%;AUpyk_ zr76Y!V>CNsG(w+jmUV{?)1rHx*ru;caGX_i)yQKjm3+j>8JO2GZ`PmR5U=--e7NJN z+pVEbEt*Q~>Z)>l9~s=(nH{D#x-O(noi7@)l-5Yi90_wnrPOf7-n>Q{e zi?pLI0$Eyg!5Y2GDj~2@^{E*m{cff*O=gJI9NB}%w&v}AD&>_-P_Yn0jEFGy@svauy0Gw@G^5o8wA`Rg5$U;#|GC5R)yccOn%ebu zphW}jYpq6XouaBj=tSAeS@z75BJ@8k-6vCFi0#QEvXYrUx(tpbuKbJEY(`#{4Gp*9 zFo*khD;wLNLC;Z*0n8R+atEh|I^a*E3 zN)LYM$`-wp;~gsS68&M~U-!_Ic}cU5@NPbH;S2P1!CHJ%gIOR|Erj;!)L{O#iEF{V zpSL49b;_?w%a@qT9?5L@@n3um(w%(nlHgRRn$f+$1}f0K5%r;Ps|;ug#a*kp(EV)l zyh4P!xLo+Hh4;FPk@V=9xkj4Q3-Y!hsd=`hs8M-?!sm}a3wsVMr$SWC>%#B+Gm*$D z9|!p-AY>}r>I&>wX15=|1(9fu=1;%j6DuJ@I{(Y`7dLJ~pGEdKpJYjebX1hM1xt!7 ztqZ3iWYHQQ86G!(`%q#y&%v54cPM3Y)+D^ngH~hIkMq%)aNm%xTB5z3%96pBZP)KU zjYT)e5Rz9EAt$6CZDnx6@_CWI|7iqBfK46KBfr6qPI&A(75^ zaZHB3E?Fr67Lj20CoA(fNVzn(uz{yGhyP0Bgj_KJIh>K;*ba!LWY)Q$BwWE;U$cdO z9Hbx+#~ct>50O^bdcAh-*Vno2h9a_QZ$d&5rvr=ZACDz>q#yn#;MFzx2q`xing4tq z2)FxwK5f(FqX%T?tnF8Id5M>) zS@`(PDWEp{YXPzdFL1Tk1b*ZO>z~)?+w~IVrN+$?d`vX7&q6-oc`~}PfQt9 zH%(RLdHGHxbQksg9P-;l&Aty3u56dc>bjswT zvqi#-i+)vGKsX8?$6PpjgI7lK&3Qd#0Kk)=2=2(NtQJ7l?0M0&|EB9Jg54+Zx?<$% zv)6e|df?t$0KI5J+`P5-eaI~DwYYl1on;OzV!Gen$I{db}_1Y+LXPT0aaO-c7Z z26x_w0yn*mdb8-H55B%}q>w3c&`U;p2L}iE%RTJrBZ2Z5w@oG+Szx1j1SXnjVVc5Cm|DwUvh1Czvy3ElftR3t*N<}n-?`R z6(d2{TG!Mzma-m9f#_-UdL8x5?gZo+(O4DQH_7(RE zhSfDeIqaHY39RSE4|4(h8V}Dq(e(wSN@ zFO8#J-%)q2KoH1k1d7;eINet|n1Z1V^5TnIC{5!a-9|h;niJ-Ko4{4p?nF#^02ByUIsJ`D~Msw zU|f1r{K^{^R1MACVpT+QHurh#+KwX$11-Ue&r5elZ6vW zG`>6JGd;6}(RlKL=>;zX=(dM&`*y{^1kJ1~tdT@`IfMw(T)-s{Ev+6B^^z2Yd6v!K zFf8*`EC_cpg`l+*p1#79G^!a^?g<7ls~8Ur#3(@<7%j_IF-n??I}D|+ zaEtpe20nYHW#8%%DJh|hNeN{XeHPWp2C;`4Ye$|Ja%mmeebatiuN~=0em6_XBzS0U zZAI)Jzqnkl5KyzGmT#CXU@1Mn)`!`?={71wh)02?&h?OV5EJ(|XwG4CU09$ zy7R$M<{q9~WRE*vM>U+Q>Q2Mp8LMj@r{9cbT&&+0J(?F443nAjXn%IGN@H4sMRy9f zIO!c%zOQR)4Pv>jK;kCk;s!wTF9gAG{ZAg<{zHWR51Oq3Pxh(e4^f;JfWR*SIiCWjxLF ziXD*hDiqaVMA<3z3kerKK2bX+5Gg}g>r)s3 zzL$?hmUm)|)V<1UY$>;yFZ^)AMegign%tq{IA!ErJdKAQLyd|zFomyOnp69}_ByrZj18`-~*nqsN5!=BRq}ZY8271MH|VXF40PuXus$RVWJ5P8f5- z^hD2QC6eIf4O{#|m(4;4LpAARA_M6(9&IxN(8Jhc7Ixgd3~Vht;J z)Mp*vlqbH!JJWf^pRzxM`msYXppVAGr)k64y-c$1jWWc?GsL%5;v=l}8tL_S-I2mD z&zShz`sp#SS6|Hknd4dKn)ExlPJ7~tZF%QH^5oK`8J5#qB#E5qE2@MwokoWzM{_jk zyhMFBcbQF{!e-X^bEfOwkGXiV>+pyP^2z&(5$r}`MwH0MHw~XH5WZZ5qtho zo%rD=0z*cosD@k$(S{#H=xj;EZt{0i1Jsr{s91cJD^RLiv^%xT zZ#jx3#85_1u-(P>QU_@-v+}a<{orXQu-gDtL9@Qg?2m`;I;+$X5Z_;vV~{RYSccQ= z#br^w;7~v!@ld+GuVUecF4M7XS-0ayTV3m+may%$vuFd9^cv|RVGowGzQ!Z&ozy!) zlR5sLrl}H+%FD$Xhh6tb-N&h2|h+Bx88Fr3Bl%tOwd)0f>Xh@<$>aryDdvg zqBusr-AaZ9e9x0I)TBdJb+8zV(ejS^%h!B+m3|DEf+`}O6}vWHs?ExFxqdAiDF*mXhP>r)#KtHj4bsqqtY-kflF&qd&9|9c$X3;;?Xb$L76>Q=#IxN zR^DYtX!$55(plX#b-o~CT&x(k@`{7Cr(w~AxBek*Ik{o)4f%$UQUK! zGxN3#x+iUv!-c9|RYu4QWIjZrOhk4d3r^KfMuqs8QCM4frKD$-FUohQxkK?J<+cK` zFg*-qpNfx{v=nY|iADLjuz3|qPE>eej%9Oo5Ni9wunY!W6_j3RXhv>&y$FtH0urF9 zzDL_nnh2bx=^ke+k|dM08&{qNV`Lif0{>vwE?WtF-xj)i9*c}yao$;)G87qk0#14n zmU?`ToaU>ik=ESUtxDv^_Va`ZjeLJUlqNVo@MKrM&G9C}&H74j-ylx;ON3-@txnD8M4+0}{U((QABCuKZ)a~0EcrRl2*3yGioazeB zHh1*Zn+lA7l@o&dQkXz9nfBbaTeUAIw^l0!pB~1-y}#LdbmAU6ms;{^A8x{`^iWUV z4+8rrY}*6cvqIrKIu-xs@r0j4Qq`Vf&N!tGnl6~aBRZglP>xuT-gc$ysi>lKtpc0j z%$`S2fwZQkW*F+fTPv>u+5^D07s_nYZI z2WG0bE0o`oR~C{vG=ApfwLg%p;uW)W!gF(cb7keS=XvL}HNIcs%hK{X`dapP-7PSq zx#Zr+=u5#(nw#E!^rL$h#K53&G=#yGnei3tL4`gj!F?mKnZf4V-Cy!ll=`y6Mu2=# zBc&gMYZ@biTfGP^KfiQ5YbUo)Fas#>EIlYFy&#l2mMqZ+LKCuPr3JXWpg1{MAB3!m z`U0B(FX3n~!`eiB+!NJDY&WZhPiOwRo(DrU%H(zL?pK@2I4#^nvtTx)l7CCL#AGn; zg$flTni#+s{cqIEiJba4R@E%6^vhO4!ePO`(Lo`QCt2%^qI2(OWUG^d;%0dZ9mK-Z zsI&Xz*jZB(RMgb0WhYLQSVg2h5 z=g`-({r0n3igWSORF=#Vn3Tpn6je9Mos^#p$4iOUX-#ZTq)do2P*#*#mrIr~yl*E+I0 zBw7)lvaBMHDb0lH$~aw18E=x|(|GXL(0Dr3$Qj7=5EU7mUy}^LQFC{3+BEIYAF{XB zDk|L0%VJQq0C*vBtZGJ*;40{xupAVwqx0`|g+*9;@=K{7H;)AjsD95dkxkA?yA1ui z<-A}YxSxdV0u#qT&i+~7-qAUf`^?tqw3(T;sebQp5GV8zyLEN%(9p1>)p*ML#=2(z z8X4`GjKs31s#Kf~e7$-kHsGTEmU3y3&6{!KTqw#jl!ocdg2+NoKBO~$ak*o>?u>l+ zq_0%TWr4k~hUbL z(9pzIAX$xlf)UhL`0O3%1VVqg$PkFMx~O;PK)P`@cHoK*m`l8$hJ}BGy{3pxIonee z>vB^=r_-~vIGnFM<;WhRK?LKeph!W!rvvLl!Hi0==XtILrrQ@kxA=UH$MEU5Z`1G7 zrWeIkjZ}P6*fah}baHmPCnw9pIqRy8c-^J<)5h{f&4K)E=2b-*Lhkmx@GChLhRYs% zVq*>V%^4sx+!4KKh-;XAD-j8Xf6x=dtpD)?%LN| z6%U<{zdu{RbB#FD?fX7<+LD2?+??3w9N1Gfn3LKh6ZRIq+F5Fmb;kC);hEOVP8DlY zt6AoBKY6p6sP^H*IbW{n(J&lL%LT@pknRpTF(I60$GPF2x7Qt|gkLO?ZF^@;WD0LL zw+@Lp52EcE12k(wtpf zw@^I%@t8|gej>;9>H4#b|HgU#7<;d46BLzdr8`*qZX<44MaIObx%iy8A04g(KZN+J zC5ME>M4^^XG&K4hF?QlNui9fgR0;~MWMq^E(Q)l63{DQ&7ko4B|9-G{2lgz)b=JSw z-*?E8pZB4m>qOx520?rd(@Oi5{U4qeo-;%D_Lq$Jb=<#o`6}ISv{}fL0FMO@fOI$F zh=;)|o)RPKGA>FSfAj}u-~zRFN%G>D)SwML*H*kzgNVS;rPk)~Z_n{r7kRuqiMcDj zXPhvBQ7Kl@QL0MCL$(YrC+g`M6w&^EZHXG}2gl71jTpL?=Cxs-uQbiSvDJM#5zP$_PCCL#GRzHdb(GMC(izRecCr-{xqNb zpyGVL(s>Eu^MysMU^61`EVSpQjZvm=Kh!z zUo+%i#pf*AN=n*4bgE>7J}_?eoVJ=OGSyXNMbg5K;o~1oI6StotTp&F_p;V z(Hw(%gmaPNTP3D|H8YWJNyh;J~ib?D_Ve|RS*WF!I zIRGx~w^HCfPn8#&bXt|)-X1>a`dT`3K!xgZs;#Jd_lU}IPUBU>q;8$;(-Lxq$tOfO zv91F-sSdzUNdkDNEPU;+e-+q6AoUVdJI@X!se5D~GyYYHTAFbwzrhwNAqC6>Q0X9h zvzd8H^0COm(CS!HntN(;+G0cg6IG?njKuVT4(_+`e1!urK8QDuy84OPdPbWM^+P)V zr*l+oEF+y=)vd$6a#h8|WQjakEAKNWo%ye7hyBW`Ar;HDzx9W?>3c?-^7|v(m2i8^ zv~R4F`=d*4Eobs3PH{Dgv|sFqd@Z9dayey&Iii=z{JZ93zc^c!V_?fQ_~xyujOG5- zRG;8R1xpafQwfK`Q%&0g_sWxQSe_exm3(Wi>+Wp@GQcJBUHmZ4Z&C4DhD2wi1@3%| ze$OhzXu95O7~H+PB=LGpv=&S8@@JbOd%L^u^2+c=oSe4&{FRFvWeFfY@O{)(A zt`7gQNX*gEvgcT;$EdPnUvq8^KKSh5`{6eV4Nx zrLO?%ufkybXtF9Fsh89a@%su#|MjYsb}F`IFD^+C^W=(4?WE;ps%2pof;`9DL;sL*oyX z?8M~G!C`B!BS^o_1l8>7RJkM4Z?X?g!LQy3n&UK1%WPh{ZiUu1Wr3#xLOU{EsJq9= z!3DbinkwVKhs&n94(2Bq=}`Fd_j2<&PSHWnnj&~Z)gN8Rv}ZaP=CUnki2-UI;FZ7dHwytM2oZ3_DE;#cH|WF%?+ zO`STJgmWh~r;^Rz$b?Y@`68)8bf?5CGWoT-M@1?f{frla&>KXD1FOU|fj*rvXGAT+@j%?HtA$C+u?omZS$Ytg5^nj%sTtMcL1 z&)#A%KmF*p4efmf0Hrd>BG&W9jgPd_e&e)D7=d>AW$Q7bcYBd3Q#yQMa6gsM?@=9P+gnC9s6zhY4BX36P-g*b&6Lf^QJ^&n?q64o0e4=H--9bOAB*KD4^j>xS^kVvhn;5QIGve&Bf{ zxc@cn7zgAV3eo(0piU&_m>&i8Wg4xE2TS&(hexjm?uXl^W}yM87RTTKctE|+x+(Og z5964ELMxA<#LKD$U%+Nkx>$rp18^X>%bO)2pSosswkzEjJ6g@oN}&Ja%W6q=>yR@5 zsA~xTV^fXt9P>HWF)$D{{4MVOOSBfqze@s0N{|a8nZr|eF)jY2HJk}{`oq~9(>aZI z^DSPMd{wcnOYSuLy+ypC4>^0_2pX0!q+=)x0C}7!!Np;Et<20m(C|lw4KGtXnNJZ1 zm9L`A`;gEz4=u9tTzUEU&VyBeN;NUl|Ms!9NHj8dboD?EO}8f}4MucZZ)0<(g)rduPsyvS<5sTWJ5%q`6Iuw*W@MV3K|5mvNO9M}Y9r z?Z_!23SjNBRzEJE5hu%zC4n9Rh!~~joSxYz5#?N7u{I^@-xhbfj2Ua@5Dm^wAg$R4 z9)4Rt9KG3CtbZgyv^7qIqf8^+!m-qmNH4)&(R=WltZ@np48JlVd3-_s%_Guf^!g)p z(Zd-wvkb8kvX4p~BP{Z?7YDe!e|bFOTt}c{?E2|d?JAyH`OnOX+z9}W{@aJMN4&Rs zJMZv3Z`0$9R>Usv<}7_U56EkNzPi=Prn!K%p>?*-KjNX0kr6-{)j9NaGq+99!UVf$ zPoqRpHu9%OlN8h!X$q}N=47T`%cf577NXH6Yj>YNhNl4pttalX*!g{_=$h4m<;Wu1Mky2=ywjsJH^$hB7`H?h#%A zr{cC2gJ%CK`c=SoQTXKd_4H>NFlO%5#N^#HpyX1GaPZOY?sNN{SvK8u6;+-R;!*o= za=fAK;tN>zY)^I9E2Wz&PXhzZjUWL6so2FGv{%u76gXW$LgD$=0hY6@Dmp^}d@w>03$l1C%s~=DQ^R+2?JqqT!aIoVN#(T|k>|b@{z+hoxqrbyoNw(XMe|d+=lvud0pbdU^%v;pYhChP(3IY3?#yc$fK+sP% zKH(gA8w}Bak@fL^^sa4>udg4+zXWVJrFU4f_}`1BY+`~-z@O{}+CKQ_0F86;rN2i3 z`TS}CNgz6V38aF?G?>ZyxC6`jN#F5Hhq46aP^5!laeR;id0J}nQ&%A0|D1ov)c;Xz zqV%UQM|X`n9zh!&c{0^LN`M^<#S?m#jr|n&iGRTy_@VGqIZFo(uB$$Bmi>C%yZm>M z)|-ls624{8QDr3DN3Lv2d4^l#FjU zn9zj7#1R1j(UnFn^}Z~ux$5gdqL!{rg)w(NV6y;~1J8ibedBTD>8^Bzz>9aEe><;h$qdvgb%NlO z4vJ3f_HTU$fr30CIe;mF#7vY`xJNi|51#T*9&ykU<|bCp=ZP7(`#?I`z7XR|@}7*< z9Kw>;>LMC8xJLLlM!iN&t;sY9(-GukaMzV@W1dTZYPo@A+6aapdsFnLd#WH`zH?LR6qTW;suqq9CU_A01 z7o8cc?+F2dnx|O`v4ZyFp8^HgACKCtSs7!si!8NcTnFG2uc>zc0Ay>M)Fz0$n%~MtIn4nfOU&SWTl{gomffq$|HjqmH~NdXLBu{%in7cmjlCl zu1>H72~?4OT#yH)d5-gy+s#|Tl~1Z)-@}>U>Z!R};DbwF?mG56qyyM;ha(pRe``U= zmh!Nv=`<$ZAQI*ji{8Ff<+XTZWkqS%DN#W;@0|436v~rPU>6^LZ>nsM-U3yjftsS8 z=K9|2GLtAXKH|0nCwlz&25atG*+0ktlMi)u+PJq`=ElYb9iDTs45mBiH$@x~5&)^M z*cEJ*zM7+f0ePS}8K6LpZ1f69Rea_#k}mh$^O&Ho+EL)&>sABDb2aw?_~#SZw_#gb z_|Y8B$2O(2^&qRaNhWh#x$g=gT4H5jkX%v*t^hm{44qDPg=v`;pbdjDv)o%u`7+fzI05J??gt63a(YNS zb}@BX0L0dD@+?-#pSaRnp>VJ-`F#@Q>P}}9irSEC+fQBH8Z&2P~bv#4B z|NL$C$4Z}t?|Y8{(8~V~#$2jq%7CMRh_yaoGmRybAEQ2B_X(uHVqt4=z;Po(1-B{h z@U{J3ZNt`ri6-h@jtM<18BcEc05~8Z#8mCdETcw@=#qZ>LtBt!^ zca01{*7duqxThFjWS8mM#bHq5rsvS((7$sR({19AShY9dTeH5;_4Rf6^l#(t$#+$6 zGbj~L>V~Po=F%SHi`eYqkvo-Z*<3O&*Zg$Xh?7OlLNh-EK;XpAamaAHX8j5<7|AY6 zc`^-!W@<)-DO3vJ&Zt}gP%214W@k;3VYguASEpN}>Gw8qfhAZg>y5sa&&ax%`_adg zD|QH?qn?}xa+C0!d<)!xmpI33?O>Bf``;s9vzZnuKYNZ3|xi~X$piaf>D5&YP*{%AnD@2_GIAhj^ z0GTJ~=FwnPx1v#lP29cp;3Hd>*xue=3(tu_{(x%BqS@;Yrk-b4S(k61QH^O`YveV9 zmeT4@oup+q)B_QaVRu$m~E;K~4a5~E3+dI+Ck>SZFWlrtxYxaro#{75h3oW}wE7Dln}6spz;d-Lp|Kp}HeO}?0B4S2Z?l0W4;NQP z$z6VMeQ+VaxN=G%ZxNWTUH%cbKCr~vI>tNj4_bbzS#K>KV!o0IUf7))AOEM&b+AND z2$pM_`eY&?3?dym$#tNqE>N7kp&0N<)KS84m%i#A7ogmF1;e*|E&#v^A@ZpAWs8*p z(sER+*N0Sc5ZVBrw4?SW$JH20PU^G5Ns{#?6DjXdX2o;}Py zv+;Z5Lz_*SRdf;hyV%V!xF>^+C%$Y#iC%vnHnenJSN+&*i2U9^KrtOU`6prWf;4~* zmAd5K&PcUpAVez5v+U2W*#XoZ6NPG3%=^IE)BEQjNIo}PStPo1k8A`PfiiBgeT>`4 zvHpC(k!AwmU?x_O{u|WT^Laz zF6&ZKFU0rVfpMmuU_AcK4@>^KJqnHVoSQWnhkKQ#U{~p@oCh}vT$q4;IRQw0sel;L zdy`BO<2o9)3aXR~$76ITMALgTqR-%Vw{CcBe4H<7u(k!Yf#2J%Rh6fvrea*r`Umlt zsmceKpj><6d}aY1!}Wo|!6O$+eRE>|(~giQLyQ@z>a+Pf?xn_h!jlnGIQjIoHPY-W z7K`s2`wMuCERPwUP!hiQa>R3~X}6&Y`R>i0uiQld9AMYI^C6)Lz2tjQ4krJ`mp+L5j<34hUeX-(FRavnw4Ojlhs518^|`&qHI7 z#NYl^Zs5V<{x{yi1K;V_k@SDQ@N**m&qVD{gR-C1aFPC}boazjTx&$_*lEaHcGdp` z<>z14tBs8^yts&xfn38+y{OTQ?=z-o^Nz;~(J>kIH~3WD^nbv$$vJ=UX@=r7GD9>~&ks;nb><#wTLH+^+;?0_+gO=tBaPO%Y8hicH zVT}fxX;|wjCnx&UYL84LZOu&F?A?&^51;w|@k(2XUlYg8n>SqqZwm|Sv3M>Q@!O0b zZ z_taGF^4%)TUiD_{n$T2QBs_ikbO_&2A*3>jiA>cOaxB4mta**%)8nVVL@)|ir)(@J zQJW8KFI7y#DkpL%3B(ZN-ko5h=fV(r&?363*9NQCC0{)1nC#}#FUG;!RI)T) zwY$NfnW-wpaoVvf5S!^vvOBE2{693_>9=VLN}c6m=e5>sDnwwom@Zfk5(>@e&Cx|s zz7x$P;Q5~oKCh9Dci$=j7@Jwxh5+Rrgbc?K5VGX^;T%EUradas)>ZxO&Emr6pvNdH z?KZC*tF)&beYPw!3r-^uVg?G^8kDE5ns+y2Hivg7)vgeLw3CLXUAFa#tVhSp%GueO2vO5k-5;UGsl@ymauPe35zr*F@^2)h0_=2>fWyF3a;b{O?= z%8{-6*{ksZkdqeEc7c%9kNb`%BRYm5M24@`yjAj!k=poBQl!gqK1z=abhZ4 zxuYoznMEk@+U=pz;xq62YB4(7W%8v~CT*aDOdQQz!w3z!3SULoaj;rI=3+x>10)3JsTnYPyM&6m0x z>(=(UlpI8vB_4QUetpRa&A^+1(;FR$dcMo8OH0FK9VkYcJYTvrGFYH5lRGhgCo#i1 z!pV_~I5VP+U9XU06tF4^_u3^DTOLY*UsrIzh^>5kQ#w;~YLD~U%wqMM(2x*BqgrKd zZ+C`DkE^9#k=5XsXUk*f*|3OssGi!s_R{_9;?_d%&yFBL5a`r77vYV)rE&`K?#WmPRVJc^!uyT8tbuWA>O7b=v%X zjh|nmcz9p1f%<@kmJ2x+YHoh#E-ukTH4itJIWDXW#D#}X=LA1nB<3x5@WgF%>1`Hc zi#)c8WjH(*g+Iko650Oo{_`n0x?>414jjJy-muCV8XA`FmWpm|L^sZLmB|z>q?xN= zIJRfQG)F^f$Cd|*%n3R~cOtVs^rrZew1t~D%5VZU{b@-xZ{H0RSuHr}4h!D+f^(W5 znnGI<<0=+OI)`*ppa{Sh+P7|S?OH_r4Sst}bdg=!c&OPhMZ!$Nv0p_@`;UiQMraq5 z`ik;CEIw8GpsO-2hgK}=DOAFaw4B_iA)l|pB{E@6UF10|P27kTax~jozt~U_r@$zH zyqBSz_}WdBldsi6x0RtMdpX2RyV#YW!x2e$=FAx1b9}GS1Eecq&e`fNG|BqHi|l%( z%|0DZuN|2vVG^~zhl7&7XMgJc7Wu!cx!g<%pQD5&r@)+&(um5~U9mt0LKtJ3;u0|Gws*xsuwdA%bhxC#*#G%q<$M1_H3iFebf}aj zH5kvm*u7u6l2(>ACsVK4l~#5{c6N3aw%v`?#eHe8>Px7Ud%cS_SUANRc;UYEhY#-@ z9=t1vg+KDW?z#No`Q8o^o&BJ8t2B4QrGG=V+lVFyz%{|VTG$_X+5AF@`_lzw3C1?e_F>*Eb^tnm*C!s-g^iNX_d`7%3aP5 zyEL@Ak^`Nxr;0~iMx%tG2z8Y!ab7j%CFf;peF@pUPH&bNQa+2dbPn3Uv2FTg*;Ym{ zM&xw`1|<1&I<vqIMYZ!k1{JFRM1m?>Q+Bws%*_S7h8c#VO$ti}Zn(c6kFUdu(`_znvRNy^AzlY02@`)xH&kO+e6 z;i_V$VI~(mO$BQ0Plg6~@{3DAzf0}gQ%h+W<#?oZdq`CTiK*CSO{0SQX`x$*)nM-; zX#j1Gz=jPEH!Gd=dLZPqxat<8U$&w33B?X&FT?F=S9VenHqXw3zSxW$Cc0~BMLL*C z$X36FZ!8X?JOzew`o;FWLK#$UYku?UNvw&9NE1|Tjp~8sJv~PB1ZTVJ&IcUYa@KCxZ8Z6( z_|GJ*^`ta@5DamDSk+2a1CV2NBD*bjmCkybBF=iI}>)j=F=BChtf27590UuNG7?ozTr!ZaP#()|Us z4y8=DDs}<|VFol#@L{NgATefRuCwG5kb;Bg|9&4&zXc(&nNN=<_GK4Ys=_KT>>Qis zLHZcQXEE;NhSX@~BYh&;xAti2K)rTmUFwY6jNIqxMD0rOZP67vB`yPBY+rt#cszA2 zA~MnxW&4qtv-9awqi32EXBkNqT)QptRkGl$%VF`_(jFTdE1lSg&TdFjOQ$|83Ui`m zPWgDn*A0p|to))T|FPb$!rA?PDbE`}e@;=+indg|=%$!sm18{Wg3Y%O#W~2-vc7tK zukLe6RoXwDi^FaXKg5&RuZC*I3ZkLeI#3SYvrV=|R-=gy7FZ79e2V`G1ghho(x1=!Cm)?8br++Hpa!i(bh=F(X?CZO$$zC`@uS<*i7+(O?%fW- zJv;2R_~-g-e=v7Wi%Y0HlaPXoZe;O^StDENwMkKyKKZ?I?p2Mls9hmK_M{~R;(BA<_s zPYLd?e0|XLYL8X%NW$I0SOiz)j#z6P8QEjqs`kd0&{GPf)_1ew0_L7L#E<@em}sn{ z0C~Kz_gP9x%FOcERpe{AR5`kAc}N{7X8t+y|NbZ^03DfqLcHX0NHt=%8UXwzi=49Q@nSi_U~sywRDRu&mKJW_q(#-2-rVt z4nBZPa_tLW!b8CqtSW!rT{TDn|B*{z5_0^#=ahM~v{q0M$TffrvEQ>o523&0F@aTi z-_sA3{WHtrA3L(N&mMyK#XsTb`xyral?7h(ADhH`M`k~BoJu>oH+y}(t2UH{U0qh$ z3~k)3agcQg`R=tp5p2(l$D1-7v!mF}z@;JqBgRqq5^D`yFi9cD`Od|PZS~uturLly z5XhiYukvJy^&GhA7Z?bI4dxq1|BRHNpRL@%+YS_%#5>;SI!nu>>a#i(3s;lEsrQq# z!uB;h2t{nM&jnq2)Nu!g@tCMr7|6BtFS_rwv0~hmA>l*SmKmdiw#-peysxdIqVn2f zdt(7RD!>|Yva-1nB_~c8Ly^xF(ALBG?ba4-ckbRrgL2z}B8Rdy+tEy`K}W6l)akoP z(t&dbScM;O1QF+3qY=PG2che=NQ>T_Vo{XBu?H_jE}nYFu8A=9I1fd^6w>2IGV^ zR7qECX($^t*EN{UNJ<{I7Pvu~?m?~)B|SrggnXh4pcaZl9XgVer6^$O9Fg1t3T^6TFxFvs{dGH)=eK79Cg{>}|o6JTq5?$`!Rlk-?- z$oqzsJlAZ-DW6AU% zyOrwJpBrAJt?``nnHAglp6m9K$u(Mdike(uY1}^19Kne!qoi%=Aw<3S%2n0UlNImP zm7m)DW&|T_bGvleJ=Vif2rV-8%;z0WpMDy+=QG7F)ne}gDF}+~tpWsUvv{X^#qPAz z$S9gGyX-(Iuw~@cksN+tzSB3bt+bCN)SoJ`NI+<0k2?)kzj?P#-tz=2?!~OH?4acRL(Xuu%UoepAgj(Ep>Q-z1#hEnX z3_KXS`+BpZkV;F;p2eR}4?2yucE4j$II)#ig-}w$dCZ6k?%^-`~#qq{+ z+lH*ZK5_Th_JxyP^M`Z~rPRLrl=Z1`VkDML=MOPr z2{9*pT&xEhS%8V7Xj6F?RseXZg<9601I?+W)|GZ+wr$V`(3Hd`mglaH@?G9LsVIb2 z_^6rzfm8RjmjTa)KBTznr%pO7JmXG4RsuDl{84 z>#HSBZ;3Qv+hWVs_XDh}p(qJYnyovA=kI>ToH;vkv3<`R*{Nh5sce~xNo|cT-lSpu z+>R~4R9>=wkF7g;rM0^NH|4sSc=^7k;^&4H(ixO_TTBU6omjJ`PFF-%8a~gEc#OR$>wkt0$}8=M{2{O+60HO2&# z&&@Gf`M`xeR%dag7R$=1DJdCOd0vHO#w)4eZdX{ngS&tJR6p#xj%KfY2ExCr^Ft*K z7X5llU6}H7sxvjF9sk-O1U{RKrj;sXcy5lFOw|vd@!-14{>u+Npk?_}JRXbx_$U*v z!h*ACw%+`X1raQJ+z(2J2?ZyBuIc5|PKU-mu(leR)YooOH!UN#QCfoje4eugv7mmE z%Nd<1g!t~x%S1rHuHvvbAOk{#qS&!32G_qB1&KH<#>BTCanvBhxApEFRV&~-4Cs}O=F)g~he7(8o<~xftt41@d+IK#>!Oj)AA@*v3 zerj@X_HJlY6nhy^RmzET?u|Z|1NZQ#s%&p@Ye|n+k=T9*GQ})-i z?(7`%(oXzGXrX0?XUXMy%QFcDN6u{%ABtf|lywDJ6uI!!^X{RFn`)J+54ho&I1#sO z7d5FD%faum6CT4hr?8_A@7D5&Co`hB=NWA(k!2KOp(gP%#UrjLe#@bh@_dhNMMBxw zDUZ#LXH$G_5C;Z0otO6R@+9tI_%*|qj>4XD`9A62_-K3qyuy0P`3C|>?m zWWrd(C((lGuC6XZ-vmaRQ+O@JCEj&D50~{q&6-oUNY5ju^Z`B=F5`Izn)a9={%gm$ z{EYh_@81tIq4k=PMasM7E7NXrilRy5O>f~jFXNQk;2XTVk>P^1%x)T_MhDeRKqyz7 zgURuwVPr$8=jc6(y*-zp+`3~}G=IMsBk>3y-oRK4VHQmYf{8tyic;rWk^;R?F9_)85LE)BJB#;%0#5 z6asnM64TOx47Yd{$$m*qEIw`gyZR@WCo{|LUIFf(#ryW2?_}&0n)fgu&4cs_bG;`7 z1I}hKiJ&aqEZrQZe$7Cvg%@Oh8uzJIXL7?Y>`*6!@=C2Z1T!8}F=Xq; zX^vXts2ehF^xY*fw{W}%LCEYlv&QgvX}IU0BfdLU$jR(`upzr?T4z|MIIx=cU#vDi zZ3U^`LYqoWTVB@|EhIwL(0TfE1X=*D%jR+?Ow}&grTKZ2#X{RX=+E1N`9i~OkCDSZ zb1jbPOilqO3M1Jc`ZN|kkK&oQF}4W=C?Vr+Pm+Y$l193s6=7je*T<~Cb1JIp2iMr< z;~$P612Gkag}g{XwFgkqRl+y5D;c}LN^B<2>}!K_`S!TR;y0AEQ;p9QC&R9$^>p|K zMytm}ZrHOZMJ3fdRUEHeYdbm>;Zbr@fKO!h;S_p#`2}HdSU)kpYs740zJ1`7<5I5_ z4-e1%phu4$bqq@~Yp8JB_o)pOn)wG8By9?^otoacBapHpaB2ow!|yPMm3Z;IEhbyJ zLU3#0umyAueu5gabJ=NO;=f6PT%x-Poa~JKJCRdNT$->9{j%`=7zW*Uwws>YR&jG! zByyZpL`0vfV!hO^cIPA`9|HB}!@EM~M%8{p9qfJ#9E4dkRbF;J3Jhf_b*y-Zs#>v@ z-Hzn9gp1mZ+8&X(4MJ{ICD}0U1*~ZFmcy%Jd~>6a(T$mY6K1+qCC`deex)GNmBu{$ z#^$pYi0uqJ;5c0u2)69EuB(??V40yv4XN+_`{qWiOrw* z!coXU!O>|TSeGe7GGHFm(qL#d6hT2JV)D?MKZ(Bz zpd-}&OR>4=K1_Hf^Uj{vaE^`BYL!KfJ0V=NN}at4gVA2$s<0bLkwx-!z|5)*6YvcZ zo^wxC?`d*G#D*m%qHoF)3}6`wW;Uax+Eqr7wUxmlMIi*7#_CWUuN1*FSK=}F(=%^p zwYk~E&=PFc&-x>ny_c&#CgyT1*SL&%2w6R=HHi8%z7N!7$P2(s3{cLr@CIXfK__|N zou;vx`mQ2mG<9pJ2oe}{s$z6>BGyY{d)E=}9H;73o&83x_Ku!QMrP(xN5zCz_HevI zaiaIqr3Oyxr}R{g8+(yzT~>#FDw{vzzG@wd*%&I7rn(U`|0O3YF%MJ$bU4dsSS0g6 zlq06H#@k!IA`YrZ?6XnOf`w}i6fLDjXN6zUS)IvKj8Zn>#1QvpdinCgw_W0gR_{s> zH`!3jwDC2+d>!+#P0?74RZn`CDF*CeS>0$!zCn#>^qX3TZS9r53Ol|s@o7!h?EccT zhl^RF9({Yvh(M}K>>SLR($ag$JMTVx=>H{t+GWqYtY=$?!nnSX`XlQdV2F!E%AA#c-aF*q&k?QF$Rr@U>I@ zCM(Wj6jbRDLnou7h$Yf8fs&TuYo)ftfaK$k=jNaL7N=B$I2&4cok5FZM3~?+vOn{A ze`ea=VwZZxXNx_*Q!MR(6Y=$JbKQ)zTh#)7)u6kXENZct-mbo)$FW4^y zIjz>u&9}MQuP<_LA@`b4agv*G*ZcQ;tJ#Mx@B_g-%-x72nL?XErM0PwDkK+Og4pb+ z4-XGdhfDMqzfgngf~?Pl3KkZ)#*la>$aR*iqG@TgfN`P)ND}#6B0Z>e)!dk7{4ElF z9_fp@ww90ky{>kudUigc>wP_ToK<|lZZKOoU)R4>1zW&?n34}K^BFq@hAY&ze$NAH zdeu7j32m_VWEIBQ41Yx3Z>ab=C)vqGvYuuP83lym`LglbG_@H?1VVWLeR0Qmf~4i} z?bw$woCF`^VHIpMBT41o!By9wdqH~ryx+|aJVL79L zInUx=JsD6>-2?(y&5Ma{hYuz0Z!$Ney!SO#PTX1a_LnvrE@bL5d>;j&n>$J3w$Yhg zT^yl{!~86ZyTI2;M8Oib`1Z1>4@I9J-_u--YV?7%wCvaNXdVp?;q)%0 zUZ2j=?;xThzy3UO&vkcf_4Br$e?9qLN%k|d1aCN#e8>#x-Nfh}`YS#pV%Nv*#o<}w zGD}(=`iqWJgC%uiFD)qT&SHHa?g*fx5rgHNLlc*%$h#sH`jT7 zMReL&r-t(SgF6+I!-#?irjq$~dS7yA>vGq|;}b_PQU++&=dHXdY@=F3OyltL9LxLP zg87_nCM11E>?m=gjw5Xsdd2vp&LgL8Zk?YhvpRmS&U5P{Q|8!AoL%idnrCYjdFxbN zZn3j7xwc=vPM@K4y*`K@>Q~wosTD8~;56Hi`)_#hMUuRue4tX@?|l)`!9T0?xZ z?}uFngfKi?%;}!4OFW%4h2>%oG9t;gs;Z&d8JCxu4n(DgWu$deaMDa>=G;AV<+n!h z@5P<(twtxAgCvp{=ket6be9y~TDKo_g|y{blr0G#1d+#=5azLJzrNxkcR^45{F5hN z%f7cFfV>9RZJn+gI6=knEd2TyFU^r?U(cLHj^(8n!wZz(?lUOK=BZK=?sX8o>!qDR zO3I~~`ALJTKNX(WO#1n+lB@cO68YmI2$-TSOTQ4Ad#X}BR~tKeSqXHdQiK1XWP7QRVE@Czp=z6&{zT4a$CeeRGR#+2;)$HQS`mh)_wv2=ii_DqMUf{S17Uo) z-aBw0PalmW>E}k~!V%LyI^fsKMjwmm-TTUoyzKCz`*Rcup2N6t&^LMGxVhBfZi#d^ zST$kx<5$F&21FkoY%?|R#20z)NdB8}6o!%~D%YK_rQYkDP(el6p{0Ht9qM7l7*t%? zZus)%;P(^nTKOtQdsJpyhtA%Zsc`HR?WGR5<$uxXj?Lh4%8%sCQM$Vf#}1E6kGCE# zhPmi@Ec%nxlWg8)x5RvkPh%t6I&`zxhdyV^KZWoGvf(GXM65?m{b%Pob(8myx6dt> zvE-%Cu+lwHC}fyB52L)EG8r5k%vcdet(g)Kd!${j?v1|AB@Qppqu(5q3C!O88#bOI zi=L{_A%o{`&^y=cEW@&;MY*lC3SlhLW;(;0i(@jfFip*fg8J&LaZgfO@(#bvAelC3 z`u^Q?WLxnqeF1Ov!r^qtPy^}Ja<*Dp>~glPV}tj>@>pk2a(2T7YTumgGN5hJ2ds>^ zTJ5_E-UT5erNi}&8cJQR%hU@crRo{ft%%dsr%cXH2@)O{ANjld8Q51nul@|IT6Z_( z-EwIUge!B{uR-;xZTx6;#>x^WWd;KKUWWR{)%QpHx+`7x#}EnMCVwt#H=Oi5(_f&k z2uiY&tCc`;Y`sA1QIuBPLEM0ThhL@(1mg$|K4@@Sbojs|!apPYzRJ0_Rg#h$REsFT zc3Q}Pw?{RsNU1u>NS>zsPXT1+_efD|x4}EM1`7`&v{>2p-1r{Lhoon7337H2#9nDK z_Mx@3$igEKxu`vosvPGn&fds3sDr0e9u_OUxmJN}sC%w5s}N}#NEPHa{JC?mB8mDj z*EIl#q;#X}(!db}R880;*2Bb4iHU!!AlvoKa$V$ep5X4+k?7gZZU zZPL^?h-=?&lNVtF+!ek(`IO4FMn`ZZS9BePx~&c?EJt1YNu2cA8!JWK1{a$V;P7Uw zO~nL@!>bFjT}P~XuzaPM9{uiff7aLLe6j-nMYuOLm+Sr8x2l%TM|&2!Fr+W}4%!S> zwjjomki6$yT!mgdGyHH(_>5KF*!)vlNW3h@Z~QnvkI>TxMgsW*`{yeY*3_uN)cm9b z!3Cjz-kf6lH#E=;gzC1OY?NkBs)AszM}b9Go6NAqc&*86HrmV78NNNU`g|8WtU-uS zJpJYMqoFcayre(Mc(#YgC_PEelg5O0Z>G#Ve$0hV1=8H^7s#Ktf3^G@ikOkEa*(Ys zmd+m*f(<+4Tr3|?&$sV&NHlnKRDVPj=nbwPCS%}vFZf=SV$Ba&X)}i{OeRo~P%5r- z@7|r>+7#sD=8Jb7*RJ+lyHO`;o?cHhcX%Axt=HJt=r;;&J(jLhw%h*icI5EQhlcEN z%ys|%s920X-N*@{JVTX?1j}~=na)tM?Q-@y;pka%L&nWsD{2_ zHq1$_Yn66E{d4ue`cxDI)_OppE+^M*tNS+9h>RX?)eqxZSF1Nag#dxTEXP(>yHE3R zAw&J`Gk|;e+xvC!=R2#HUF$FP84FN#=^k`7a87*NF`;nLWyCA;Ze2m`{RN6o>pK&q zgfZW#%4u<7>%m(!!wL2%X(4 zlQvUsOac#B@$>;6dB*av*bGXh5ByOsD>|6`dzTp)pyK7WBg~tFc+yT9dFAGk7(kCD ztCC5i6t{aogQD)o8Y1}uzuo+IV#)rlq^eFuK(*j00x)fm^O**YSqblqlcGO`ho0H% zIt3OsHVzi(J*1`R{MTO#Yn<$qTGx-Ay5Wch_xb zeUD*#Skpf+Fjpqfkq)9^ISNMA zN?ocTgFO+VUHGzSwSmMxWCUrAA1>dr$Mokr`YsPv*frSJtr&c8o1_AyL=$3U^4k;m z&*uPk_V3|@KsHIKs{miM>W$KfEUD|9A3Z^HzW_++)c(-hx7+t(`en#eYKj2=1W z&Rt6{W40k9l(Am#jyXA@1xFMM8;p>vh`yBXK`BzAKSx7+q&}=78aH90Cx zGq0c0%S9Y)i`kmJH6!Ky3}jK>rY<1U3Dm0vV=HpL50IYdtxWxtoXp>H z>Q|AP?C9`{g8C%|=sDB*vZIY`5h0&O&gzwc>rQ)SQGgc_`}Iu2XbpTo$B-mb|2{pr z(5tzCSk+ZiOY#5XFT-^^(}svA%z#7%no28bFIA#o+3sGWyk-t&1CD!dDib#;QOz7(zF9RT-;Aoz* zv9d-mNbb7@9gwYpQpIy%uf!qw08^1M5-R#+{C_|q&@Q0Z08ZD7of5$FS z4fn5_7d_k-Bp}ot2KF(X5<7Vxx2x6~2`6XRX&*?pSU~jaHq|F#D}rCMXe8rrlRp{- z$dIUGmg=IMRwHpzZ)>xst5)4L9yWl5uayRewIeq!JPXgceV!uaHxRCnPR=#Ns$#J1 zRBcb=%1@5k9*0YlQzwoa1sa5qard|jN4b?JO9Lufo&>zzGZ_(`Z zSbJSVj{?$fYZUgH0vZ&kCq-cjr9ikELr&;JZsS8qj{&bh_xqE%#N7EQ(#xUU3)F(- zb$mlXl$>M+D9yTks96a)AV+aSfH!p%I>@ry?7${1Bvi<8-@dK1H~A~&+i{8-av<~S zG6=zSK)|l*^X$lwYWM-UV<9Wi>zTjVW^|E)q9Vhg;EGGN{j3^AAcDk}Gnl7Tv1bP$@SB$UqL6Q4hNX9CDaFmPVaudg!y z`Jip_eb&R9w`R-0Vt0Qv8Yph580I=deBYp?FksAG+%``!lZ;fe)hjkGr}4OTxG$ZT7AG>EQ8z73_0^Sowe zX0!K%`T5l-p8tsrjAL4FXI@q_sMyf1HPu#~E?BUS;Rr$YqIfkvD!s~h8V8qtKF1fP zwDu#UK%Wa*E5;ysl;z3;5^;Ls%wY#bbNG&FVcdy@ck&$}~8 zRfeF-2;^o#rhUr02>6Hed3 z*O5{>CD8AML>VuTJ5of(1)fQG7-Z?%HK>fCE8&hlF^CTdQphmRWyh|DPb(hxLn9Lt z3qZ;J?oynf69bo2%&&N=vHLsAChp9M1b}9q_b}@#0eo=YMx*bY_1u<*Athix-%SsrQ z3zu?Nkzu)(3gV~VaqdT!#(0t*2<7U^nM6OK(q~K&0+VSq0q6REcdPWyr2iN&^Y94p zTuzY*EYT00FCv#%a0g?kP{~ANSlf=N&eyT~YqrFa(VAA$zfmRvsZwAP%ROXqonki# z%-aW4u2b*M3mw&Ax7r=~bdlVj7y#Mx1C>e}3>aeE2dtdc`lpO*;x4J60Q|r`N0yMe zG*(l?TQ?&uD=&ZcYgOTN)wR8;g^%0(#{yg|=#<{yB@ph}4gs%IjrT$#^e5st4cLNMJxg>b23*P{G zGlesWF)VkdGf{#M3r-_kxR4h6OCPj66?;inSSW<*=Vz0Q(nEQSNp`i|UehKY-KBPAM}yJC-t9t}D*m%eyk_*x3h2odqD0 z`<0?|9viPBFlRfO43NoITOcL^eGAE3p+!IfKguu@c?emz7J--5q9aqA|okUtHRL}Tn$lzk2codCo zpfZY0nxK*D93UNuD1!DMmg8DhdaRSG ztS|GaVs5Ouo7=ckQAc}wAD}_D<`4aK%9jmS#%i=`T=D&6Dq&^LC3?gJ!UY0yZO{tm zc!VkP*Qv0~0Ng!w6=7R^TF7Pe`^Rnf`4ugveao!uJ1b6-TJxewHD|Bf9#Ecl#2%V` z+VgGP8Wl47fa=dhRTJC+zo(JVe{>G#ju`HwF9kfJ&chl*^6Qyp6L2+QisI zGuP!Q^mcFILkZ|;eid{QW1jaizxd>H5GwHO>K?KKxnQ&dm&6}G) z?~rE-oyD9d=6OZc=MHX@u9mWnvSo3+j!VaU?drmgI(r6t^`5~H%&ggqbZ2SSVsxaP zC}Y3G*hz9vl3f%bRt3PSlTo{wztxr4Y4u1ABuc9 z_PK{cbnmU?(Qe7d?Hmw)!&0&eV_vC|>jo|1?w!$wn`hZx(7m-Jm@CM|wfN5qJEQ?h z8>c8NShW@pVN%+vD!0+q4d+YzZDRGR(HOFAFkXlD6jd#o)iUrA#%^@pTZI8VSzya_x9%iiB!$#xdlD=%Z2 z{%o}|9c6$6e9j*cGHca}-QT-AWKVSV{(E@}3eulX_k9p3^{dPqg+eSW3>Nwv?3_@M zf_hXIN-OtYosNP_sQ4ts&EFW_tIH-s#j~q>qo+ba7hi+i@1Xz}?g4UH<-CaPFe}9w z*-G%!SC@^~r;rg*s|`EKz&PvA?{U$CDZQMS)Ud{P>;czrAMRI|0c-g_LJO!J;9TWu z>A!Dy?XK)B_|gE`Xmb|Zd@c+S}3?KT>$L|pplaceP7fo zo0XOI@7K%tYMGUg`s2fO%dMrdfsJVF51sICkYIs7bNJH|5OIcd+c2kAU^_vp|K}cy z)xQ^BqoZZYuf0f1>ufD4%z-KD=EoEW4s;EwhD3%J7T&27_V61nwT-kHDPXE03nLU~ zZryHs0{-{`|4!#1)j)(U-v=)RaxLS}8z$dtZErv40hs=Hf$ey`5xus0LV+39s}t9l zH!Xx1c*Mor-eo_s&7@P|QYXN8p+DQ80~Jhn^~oFds&N zdm#Bz?+RZ|8qb2FEo`etQ6(4b@xQ}OFzP+6C#kKlD9fi57jOR=qHTaHm)&4EmJV8M zt(wOw$QwA=-FrG_m^FxQ3a3?-}UZqWt%rK+2kIm-)2k z6MNg{PS5OcwQ~)Kb|OE;qNu56Bg4W{Kv|6I=FNv-<%NxubN=oLxpe8T<^`~T3&(DO zj~{UcJnhAqy!yOX{)`d$ms*+p(ERuHh2!@%|N8^$-;mgU|Nlk!|IlA}|0j9-GZK3M z?Y(r2LV@>xdeJ}&#{czt_&q@Xf5+j0T2!R7)A67i|NC(H-*WlNqHvGkw4=FNrZ#?} zxR_4LDDSd|lbST1If%3&cue+b`hTBIFs&FbG~GVXy%Z+`@#^L9&$!jrUHMMnT2lJv z{)Y(q>(Cqj7@gksL_by`=mZlHuUP@=ZVDy6X`Cc z^to7YLpkI!)Sk6oiuA^n-8db{y|{lpQoG8b{HYp3i+g(nO8W*VAE7*b8EuAJyHhjNhm&-deB}Pu$3VIr zYv_i~HjrJc7%M0ZA8A!9L$Qk3sBeCf4f2||;a>mPhl;sCQ{9G$dh6|Z(yz62QM@Oo zM4_f|)5%}u==Q?88iRhSW*5b$Zz&FGhMKz(U3I6$4AGOhSZ+N-2xL+yLvp`Ty>sQ) zPV}XNZOBo^JpFcW*ZB3%1*(2A@g?0I%IX_y7Lf+%dWEz9a}!VA^y+3s&-QU9sw<52 zjHg>|Hw8fm#u- z`P+@4+GEQi#*@PsBOy@v3xSQHw@9w18zZkW;0;*HjOtS1Xif7yY6ZK|@6>8TmlBun z`((0>tc2<`D2H`U$Dt&yZe7<7{eUjqEKQpp$X7G>(l)z?*9aig$9VhFhec;Mf56cf zxu*$0;cyR``DyjK0N63kw>p+Z{|b3MHfEdA$Lt1)xjMYZnL zB)i?jv7jT1oW}4AZE9JG>TzWsS-pKi5<}gG96B*+MT|mL<}CAp^Cs5OMDNg*o%y`9 zP?d-(o6|I0X|~?;L~FOv152j4pAThihqK@2$0h8D%Ea{NLi1k}EdHTQu*usSn%#9{ zxMao|(#9;g5$X1rpXPq@8ipC>fL%3+OO4{wi19qda{iw=(Oc&3ADO>zyHC@PW(;2JOyHCw)ykvRGT5o}3> z&+TR9tG?lc?)Oxtgxo*O?uo6~@I2h5nb4RSnGWIAM5lh|t5+N1PJ$S3E-YiLTt0nD zWXcH!XCB?AO@z3r$?rHUz2}2u5Je%R#$M`!hDFS(3@{vtzuRAD%^beFK268(W4t{w z8L>TDBG$7$#fTm`>C;-f=}W@Q`spZmzsOcswo9^U5GXN+?EBBxN#9Z<>6<&>H+-^l zpYBdD>?lz@T~;yA9kYeik(%GlNrG%-MAd~vuGZpXU?EIt?ZI~R#ND;!iV_=ynN#Hh z(RJ_ONLA%`q=ObjFt%&20V8IaM3YAsJ@-HEAj^2movAAZaNyI>HhVP}%lWRH`qzVmZf7H&rxU5qvJvd)`^rYuEk@vCJ&ac=g)tm*p@FGz1_X}Dc}-Vlwi;7(K4Pnu>_ zs~WK_Ptkf=pgo&O|u30E9*u-XUs{VlEMZ(a7%v42mb!H3+LS*T;=Rr*RdTDC)(*^?>|h*1QigeN2ev12{ypSSRW9Vsvr8|t~l zk6wHF<7Z&RoRvTQmCQ|#t$gj?Q_#7XtXg!g4T4?jj?$ttj@tourKxVyxA92t*Epll zl9_D0Pv-9x`NMU{)~aWIxsB0jTKb)CH-8o4#-Pjm%KJT&0xdVr7X{m(^fu*nzo$#G z3xx_d$Vw~|J8J8y{U)Cu%e`2X6{)tfus!IHgv^DAkH(oyFy;1P$6W$NQwIuKm|F#G z76K$un?Jzr(0nN}=I8?}M=*ABvI_!Tdf`~MFsqpVAUvyGQVX(I4K~=K)G~?fb@@Dq z8n2lFbIPVx0+!zAaF|y+%2{o=DGHLS6i*NfmE&*ky0cWqKYl_bJ0k)U0L|BS^v92& z2l4gr8S&`|LxEMM)Xne_E{AU(vfhU&T9sUfq$8DToB>!ktx%0pq*es!8;cLCeA&`~ zmnKG$&ULFO=%IFk*wQZzzQYQ~Zkmy3teGFiVKg_*sdEexRu>|RMQsLBnepOhNIp zcAJqP@>76?!lg@)+eV%)x+!;&c?YYPm=*216%0BqCv@dIL^*$+-bX|ZmmPE;Fg*C4 z`N5#ApxozP0C}0Nx(Av*}1$g|0p-R)H?_9)TTt2nZ zDiMAdK5Z`uY-FG9HhaJM7BQY*lPYoiu~D2zOTnh+YR45x0oDq)zOdT37$J{ z69o#9#UETt5m|3Z#~%+!p1$zRrj7bN6|qT_6M2ESSt2kUA|b*^59KDVW9Wcm5`<@v#8lt7AWQ) z?FaAHxRbmy41M;$2!TeJ~m2qEFQl4`Py^!r{$4MFR0V+{2Fkmf_~p_v9S16p00) zqm^F~qQ(QaBPXf^M=A?fbn8BUbF~iFDT9As)gOXTXC(S$hHx6shgjo!Vug3ag^9s} z^edMhP#cygh(1}gH~V5^BpK;0pe&*9zv`z0A9)Z}xOsQS%VV0ufZmsNAityBbN3Yf zMu?@MR{Sm3#Y};sq9EpV>GJtc?knG;bDR~~CAK59piOIAxX|-TTo(SMU%!)B_Za|y zI*b}rtWph_0ZqK$u}d-&boVT#z8A~Baa+4u54eWN%tCMd=aHNF&=)@POyj$aYYs>T zp7lTTl5IFFR`06&f{aY0XbcZePZ;liApq4{7auU(ig`O$Lxf*xeV3-^Z;flDVNo}) z+Ms?SEjoXGjYanDU}2|c(`OrM!kKR;FDJ%Z>&w{;|Efzds!JY5%G#{w%=Im&zcLYo zdTMb|>&80D=Hx|F^uK4kDlem#n2Yk;7HnbYRy!slYSp(%%@w1dTEyU@-nzJwKRY-v z=jOjs+$q|Y+oYXxr>nvWMzn3E-eE};?^!p_NbEMSH$>*VeMehN8K(5UYBz2lYIzvg znhiTxsHSE{(+G~6-$UObt0E7Ws{rc~-(bN=V)$@op06>=z#)aY=QZ*4Up0(kBQVXJ zhl$xKi*xw;5PmN%IQWZ+H%k}eadCFFrLi5z-0Op}Hh$OhaHWv}d4?-I>&zqgQ}pG* zuir#C&BCZ*=0gr*qZLVw9)@WkqTt>S4^7WtwxLNtk5sx&41C3emLuA%e?CZ5t9VO1 zn90_3%byQoB_~XDCxGo$cRlf-KiNmW$t}XE{pFEwE$AR*y7%z~?3u#jHImku1H!#m zPBV{#1`71EQ2i*BPCw)!CHkDkR?BDq+qPt;4`wa5{VaXvhS`rM zGejhPyDY z;#IM@s_SJgk&KbUXEEfuY4R&j8c~rbsO*ewSSgR|+lhq|ZQ}&oYaQLuKWc^Hz@4Og zfb5jz;jpVpHs{-=Vj*`#Z-}`7Wzm`Ftd--6Uxia-;hj&EAt!uRMx8gKW`VuY&-kH+ zYD~jgBQ3eV@|YcNISJVhj(5tk5<)E!xM}l*ZD~1urs^dMa9(>E7Jaqu;noKhqDXhr zY}CZoP@km^FvbHd`E}c#b20KxRwK&|@dgukI8}u9xf43bD!-90dlU?e@ zJaFd+Y(&1MQ_*sQp4SOWU;x(eou=vljw?Dt7qSn!S+^RSyLIaJpOL2A=8+5gTQv&6 zd8e-NY>g?`pY@U=xtU7wiP|XEaG}|3Eb{7n14ISx6s(yR0Mz<6!DiZ3+RslUmr3_J z;ylYZLA;jObKT62>53o{+%KNE5v%j`LOWXc>AR9o+eTO`oKoF4d@vmdhTT)OU`~|FL^rDX(_Ln9m(yr6t&ua$#bV!Ex($Pvv2Df zGja0t>VVU|AVCC}DuwOsO3=q9nSFf`uSP!e66Gt#d>XU{F(>VmvghAT@|m7xxytck zvnLz7HA+A~YXhb{4uPS1dKeK64-XGzk^U-)Z`UdSQ}%&r=k@Bf!;jb%d;NKGhw!h5 z_@hdWTm5K~%{2%79cbmuRY`{x*S0S=;dffF0CgMK6?OE%ZUO%yVu!220jb0*BjAF! zdYp(|{|T8u+y{{f0yVgJ>1Kz>#6gWN+zpqhdx{*Thjx(7Y(Sf0xzB&}-%8O25nhog zZrKnI+1Y}{j6qof@q%Ea8aXGe4yFwyUb2J3@IWw9ymBC+Y+iE3pzRVZCl_mX&Gf_F zNtvMi=c(W>>2PxzWm1QRzFiriTYtUdemZchRZ6sZjmkc{Rm{G(LG5Sbw@Bw7mIk@T zcp$T0WQ4{jClG-B=&DSjIb@zKndubi22_ zO=Bkg$v{_oI8~V}@xG$0?6N#d_59Pwv`6!MDc{`*p`h~$S z!*&me1Nu3pv=*g%!;x%tMr@0v<(L3s)dMr1*h$hwZh6h^x(Yh`8+PImbk4thMp6SV zc(zi1C%46oyAfr*?@T_`cbjyFXD?uqe9C|P#yXCM9`Weh(G|4t%6WL=^fQbbB$v3V0ShoJb^Fw~1}Pp&8BZ$_&P4g^$DHG(sZZ6NfpMX#q|- zW}ZJXo3J$y$A`nj7%rZkU#TUQUmu(PQMY6C1$Vf5z>@b|4fv7j?##aLl2WypuQg(h zTh-Fb9V+oDTE({UN#v7j0%LDZSM9J!8L5|>#D3{TphF#{n8|>|+4-&>J}G1_pbZiE zBCm6j%sc*L6~k+WsdK*_U+fraY}=qu<$6JVXlFugdDM`;<`+#9axHPnwxQn>vjmIq zk!AvF*asbhIJQhA0+zr(`8N9ljtkq}i*aZhom-npf2Hxv zBi7Tpia#x{+$xMs4t4lZJnv!(^rE@JS^EjEoV6}VDVMbYo=AFvAwg2(rsbN10hUQ( z`4U+rs5zfn#lx?7CFhXm1RejXcck~`P5+DxROxTaM)w)8>~D^&LM7|-0BT7+#19ym z&YT8pwINa*uCNtw%)3ANp#-AdAtMM*u{al30L1FloI)MuIl+IM$#jK;a!pXqNj^opI0 z?Vy_SJ)Kb|ql=>Z93}VE;M+~XVW@Gfe1B?!C!P2VbJI~p^!{9&f~9A5{}j*cq=g+z6TgtF}X1njj%RgLu<*&C)l0Ttt@)Mo0DyLlG=)#qpj zxbg9QAOi7R?(Tr-4!Eag1oR9irIl(VboCd{99Sl+(o6nFkW#W#-4-;C4BZbj-Z#itdlEi|W1VnQoQ)4} zm@jZgatZeC9d-oXF;sg*Hc#4UjtAav*8G zy~AZ07*)*%Vpu%CK)p=+P_S>+2|s}MTgi$^`9VOaUZ-SDf~U`X=a>&B-p4~1y%u(9 z`fwJT=jwh`g&Cb>i*i{Bi8LH5u|RwJY{fdm#YLwRZ&p+R^NoVqsp2#fEwuBIVNVy5 z<8Kg`@ySvmQowe!`<2|so&sDzXYyit z>7x##KMh+F#Gn)Rx=a{-mfX$Cc6u|uihP-*Tg;Ns?#XxM&PBYe;CH}mn;dL4Xvfs~ z?xwB#IVdm*%3Uq9f>vCZ@T!45;gq-0%>`E3(^{sVkOYfP20@yYEGeDeMdQu^$0k(COy%c z&V4^7$g^Mcs6q-H;A@o0wlkWwd5RPAPbQ_#?vL}-B&VRA0I>G&e^JedcdXxtOY=C- z#JCkOm5I#HF0#{wB^TQ#(mYvleWN~XLGwB~Nc=R5r$P~v7-TLVOFUvMj-P+}$?key za5d(*iFQ$um=ozvQzG)Uv4Q&#$wz`$>yx9Dyfo#ke>()`^s;>faxnJ-O@05fpF``y zh}IMAdDX^z5$5x|GZk+5R=BoWw?P}|IKSlZ@zz|YcqFL#I7Eo<2Tl~MeY9(06Ex(N zga?Lel;n%dd)|Mez*~=L{;(;>30Ys+p(o91%C_$fp?qiBY7^CMUB{C$c@9~=pIj(l zN`5hq5ZJDBrQ0T;heGX-L>1}^8n%4YV#xvgjnHTp1EVUgZ;Mb>cD7!~a)*dP50OT~ z2u9$)87t3%?5vs<)gP${wXID-L*VUkhCy#GU5#;U%Fr(H>E5N0>;?`}Cqi0U+cgag zEKJi$hV~#|!Y4K$)?~yIPrN(*pQFwwYNLf=f#{lt4$5I8MZn=4BC1kFS1+y=UhN8=A~kefW+r2Q}?jsFTI3*7W(9SCsUANY@lJTrqOc3m~uL3VUgt0+I_-_uhDeyXSv~*FxC`c8R9{uvs{=27n zEy97*3(isR+6I^l3ZsMMs;YQm*3BXZYRwi7W;Z-!u3XC5Jas-lhbw4r^|~vx2$&#i z!)gz~L)G{cs|XEoi7oV%X?e2RaRj;IUQiZTBtKrR&Zo3)x#plZ{7@{9rfR zN)+JD@f8@gv`nE$m*3wsQ^{?vxFG6T?@~WvYhaKnRszSs&d!Mgj)T1bOwYMP1gtbD z8u@t}c&&4@NATgtkMO8|$O{0N*mp_o{u&c2QakZ?&8K((*A=MPbvTCckGUAP2seT- z#n5YOD^%vd(Au>Y6Wh6RulEaeZ=|% zgbVDnE?qV1OT1UFUfl=X@|r)DRC7JbP{WJ0Ho(A0CV^MXus>G|e62sP2bNJjU;Tp; z_rg6zH&*N+^YNN>L8XqNJI}TL$%Y9sF>m`}IVLWuD^I3GFK{7GLRE)x(XB{ewL#?I)WljhvbbO=KRxP4^Cd&!=aFpK z;@qGxsUrSv;3R>o7!JeFcFHC6dO_EP<*cQj@5`Z0#@zX>lq166dEGika zxOn0uRif{;P@9fP55P$KW@CA&Gbg zXY8Gaw*>8YiTZ&JTU?C4r_XcHr?9%Wu#lZxan;`5?5=%d+%dc#}cqsKoiCE`yPT;hrSxT_pdUattIEyy>jLQ*iDE)EB+r1SaZ_;7S3ujw~O2q z=RxU7_Bg!0Z}1DV9&D2BZ$@K2gI;8 zcV8C(Ax1~b(Aod**XLRl$ki<3xbZ9m1&i!ExYnX1N~OBO^=lTHlKMdDOiQqY)9%}e zmtmGob61TWU{6^6H1GPEsYOwPCk>pu(L#MC1JI@(TPT!TS~Z~ij)#cY{8XZ34>~9AYqq@Q&Ed5v>?Q&3~5(I^7u2 z_+L9?b2{7DspkGuEhX%q5P#fu$GY*lhy+zF3WX~ZOLB>?*}8Uu?_kB|8?N<3SavGG zj9mJalAbn?h!3Y?c2BI~CnVC|Og}8MY2zS6dTsmKZpua^qF3Jk$F2Cds_J3cGsijx zHyaY4muY!FN=+!+ME7R;wR zb~ldfr|mT8Ow&|+~2T1_O9`_$?JcA|Dj`Hm<4|M}Z9?=0Gc(Ax+SB~mZ)o!1GOBfXbj zDKRuRBl!@NamDR3_SO?P@M!$6hd#xP7l{v9CYI#oM>3eqAS~|w;m7a2{Po3N=CM8e z%;F37^t6ZRCSN(a_Tqh&o2AGz=D)9tce{Ru+5N(Zyquw?WI|t4dwDZm02Qsut1B+t z6(nD8#EH5=f9`+q9g0GB&$g06Ym*SHZwGty#ZQ(P_*cJ=#Y%-OleT+v6-@D%EjHx; zL)Lf4!Bb%naK$%VU$3mWu zG%&B97RCI&%a^P0Mudl!;Tox|zvu<37uVQ7URJFxv4burpMrek}>Ur!6+P63VO<{qZSYC^T2Ta2fQjzWF|?@{}j~ z`{W=A6buM?cc1iWTm+g7x^t!7Yzi$DNqKb6& z-80JeuIB=EBRPLXhKJknUzkm}PVvqm;BdW%xmK4sU8~eI2ejh$ZUNu$)G-}!SHbAn zDBQk2SHmxc5#QH&msUY?KjdGc_e2*yTwHZk^tXM?jJB?ZJiV2^uwahZ%=ezv+Gkh3 z#X8IQFAfmV&^%AqOc6}g=F{aKh^B5TIlbT?*Nx7|g5z{x=TokHQYy>j=+r2b;xGAw z-(MglD|S{iDLU+F{JlYuNjot1&t0k$&f7{!*KzG8d_;LQWl_Tpdz4MezD)z9ro}PQNFO9EA{KG;% z^SmKYV6ruC-L%7{Y`#`|E3sgIjhZM-=+Mu>^P%jk=DBjPU>-ky>;~F_*r`8gJ6w0T zscgdb$4PO%uUJe(Tw#-3&VY|q@cZ|?%RE*;4MxHu{?p~*L{*)Fu)#aJ}b1U{92+^YBocUdi zkBktoLy_xRYt&YUzxmMn=v?2~L&bpun}L0Xg8jk)Pcy{F^_Lwk)$oUBe8;et7F{d2 zIG;B9hv{+++mkZypUVwe?L*c_0w-2^o&I`^a@O_ZhCPOz3qgsZ`N&J!hAGAcd0x$?;>s8GG8O#-0A6=wWEc9{+{CLrmb4NExnVQ!G6)a)>@vhZ{Sq@jbiz&>cv)I zZpfJ3&gCC+&0ISfogw44&CE=bXImu6!~cB8Y|QfMFBA+BeU-S{%$KS-SZ9Vx`eozMz25fY+TqgRIZj5@h`q#EJyPTb%%6+cAf)0sl(|1w{hpRJsu^4V-6(B+93|x!W_gn{ZW5 z<^rIY?j(1L)4j@@)BecL@Q-hRN?fkhA9O*2z8YKPQ&mvr{eeafODDV6Id7>Ltk2}A z=o8Bi5;kZ?wsj4(Pt4labMNp)(*KM*`@HVtj>uhrAV_^VBzYP1dBD9RSy@`Pp+C{y zvPnZV?*_>!rBBe<^hon{%pZU@a(YpDd|In8^2Cr4rM@ixMcNmV&wk$iH97O+Cr@g0 zT4|G3?}+EIkmLrzwNK8+ujkNL0{_0#cRG08llX=susob^XS8wFn)9L!>=!exL;y^p zdad-&h0?S#ugw1(t6gGEk223hVBCEkqof9aB2H-ncj$wt%mcY`q9+?`THxADdET^naAR;rwexe$V1~HXKP`;0Lh-p?wY@=DF_t=5|056M# zb+B$d1LN!ii3}(KbCpRNfw-#+3A^M|FbsQf`9EzNUeAx}cR+YIFHKZ6L(G6{0J=Ru zXlX4v-t~AFr2GB<-`J&+k}J_Ls<#}F22OXNB?8(R6;@ci8Y!)gO22&NKVRBWNr*#& z#_N|=T(NM8*(a_0YdQC+&Jv_1txXRJBbp6)FKa29sGI(z<12p@Ag zfR%R%JNf>z)9ZX37ekfO|M$H_M820@&jmmI(F_r`R~O$*;K_%{Dv4p=ia0K$)ES?V zg+SpKs>aKV)TS@f?=`fvKXhb=chGie?MAE_UW_c%DFhO;zl>)a$fQq{|NIP1?}3yjM~c%sTdem zZCd8zo?hc%Lsj4X&!D{h32t2Ox#v1d`>0L6sBSaBpOUF?ZM^pUb)#=GX)>W2hFEgu zeF^IO>cLQ(|1Pqm{t(?pIv*~SXA348JJV9j$@GaDasQ;HQW$9@@K81`vC^WdcjCzY zzp1bcwY|lJe%XN?3GoB!!{;tt`&GWSR=Z9i?A_!~9w+WmL8=Bc#YEp4yXqh01;DRA z{-*@(^sB!#8UzZIc0$BJPc+a=QrSiw;CiK|9jfty)<6ss686)%*S;ee^Z~y6JUYE2 zUTFDO;~V|{_dl(jJ8EM(GA{nPuY-vbiY;t)7~c9=I8)}Ht2!&2)OZu!6~<{iOMCn7ve;le$KAU< zoY}M0jQuCNs-D(rWaG)(?<+EpY}p8xSF|1q>Q0lv>lx&z-pYF%H|6G` zx0MtfsJl#1=e_&1pG|Y2O~`8YzC_V$t;ZMtJCX)pe%w=@q5o1$|A*~N*U(6>Npb`2 zl={*y^ry*}B-iN=pb^=g`SkY>-j$%nuL;<6k}%!KyhO0x&>Gg<4a|87YskF2s)~3T zq5qs$Wm1N;KFrq#P1uR)MWBP zQny7|f9Qw7%RJ#zrJ&yv;Tu*BWp>lRUo7Jqf}V7z0+h|nprA|0Q6Qo4=S$>pshLis zWF~q1MW*UpMmLQIo0qP;or@C7yY1#5DyCCKQghsb=+GGZ&rz)`_U5raCd0Oz3GLMQ z*7E7jXXMcVXUj%+rb2uf$SMKU4n6KNSwISb{xRmWz0mDF7|W@tXad9psiCA)u)BvO zQM#T?l#?y(>>&@*r2aFW>&QV%Dp;i&Ro~@s!ti zZ~WqWN?!p4E%wGWieEf-xy5o-*xoPXCJRf!&U{aKf?5WvPk)3M)0+foxuclCv;Phe zFML8?R!C`+y}vk#^y!*n8MI@dcz5OMRYJ(>M18IOm2A?8>LU=GAVI}XS2(7Gvkb5* zNO4&95HRTfd0q2{R9duD@OqtDZH3hBrypOAZG?Xkdm~}$4FuY}TU-{p8spBm?euFB z3WW@BI*58U$s9>PNis~A8V#j^MWAQk3I9DtJ)7<(se7Fvv0l+Q(5iJVsIVE2DIP6)}sZr~vwFIA#@_xLdcqJG2M3{}|_g zj%Z)&Bw{*E0Vd6bX2|zqBf`NB=s;RD`6U$LHre3iy(<6-v(L@lo{dyG&||uKHLa?u z%E~ZHDiWz2fxH}H`{RdIqkrd=&cPE zKLm*9aEReInTP(DF1j*go>5JK%0@%gH|ZtXEQSqsSkNus%RTF)H0;P(|1}6HzQ(4e zmhCat17$!Tniv&r_JzHx&Wx<&`5S@To@MSkmbY%*GRfngC1rN=_YMLIXM5rrCnthM zZ|1%p6Fq$%sH8_)PkNq}ZCEDvG4cfA`Dve=-+P1o2FRH8704JMY7Um-|DXa`!cBBo zxEX?PuLp={TMo{GcI(4jgqqV*F>?%x;UOJv=e*5-(HFylL(45UV z(%z45XzTlYQ)wWe(}@LJ8!bOLJ9>2I{(Y@?luS5}F}5Vvo4=gmHo6zO(+D=8w>6qK zdP-;UN9CCa+j5r4Unha>mL11hbofbd`TLRv;8}+IM(Whs+=;k0T5|UzEbW#Lj~Xb@ zg{tRgpCezonDORf$6kfOy$9E?b~^Y)z0P?Z1;jvrJhwLf6G0DO6S7LWzo#FIxceXr zsJm*VG8=$-1O@{%E`5O$jiu_5=E9+59zA&7w|#tQ5zKy_&lHgM)vD=gUm!MJDUv5)?Qy)$iM@ zKe(#~)T}F@Cy~Zcay{NRGB5vt$g_uD;FT2n#Ru*(VH4pYzU&v+LEqt<3Q{Cgmq|Fz zKvRGY5s&Jl++XK=GFUJ7$X>`vx81|lPbr$3nK_#Y#Y;ISw@eDJ7dV(XR}a_kA~Cb- zVLcLU!`7AKpCc$G4|$W^mvTzlYruK7E*_=v7&>UlC5eMgrKxVY@3H@0tiHEl58eT} zxvGgnkmunWiGwryS7cR*sOW#l)@?88`K4G47eM?7V;**}^C%T_jAG1qkOm9gK46gv zx#N*9!{7wJQ`RL7nQRAj&>GGlx1N}$mZfNtM-6!w4AUuz&U1!y8}}*mBJ}@PSgWwT z>7yTvW>fsxEGfAe_U*8R(E~aX2k_)S;JKIJBAp6}A_94yQ6pLEq>#A>={-`a4f%Wb z#h(PzspE!J_sl^H}RJ z^1ThUL00sJj5fnK3&Mh#@GWZCeN3{9gC}ly!F6#?^Tm%YLz6cY!Ta02D#N(5=e^;@ zkp2W-=dryMYtF*gaJnBHn#3G_p%VMEkP1FE_T~mjkLL=U=Q3WN zT6vj9-_>w1Y@E=ipH;2iqL=kWxG*IM(2ZzIfqt z;CJeH+bipJTQ-90pUe#2uU3rLbQ2sGM{eaE*>7>Vpun^;Fp(creaV;EUBf1>TQSKn z?eyl8!*8i&KK+0+a90@fn0%<^n={l*U%-qs<+us^{c7nqt;H=M zCW`!{K#8;~eSLCzvFC>3L`;EjP^31_3pZ@$=M*6(2Cq5p2~%uH-mY<*OFtCoanu%k z@%{Y*FirIY>tYo3FpIh<6!V&ln|(BwYqbw(`~sMw~lI$rKo>Kh6PXs7r(kJC39xsl_J$}w6=!mu5myW{?V@;XxT z25xw_tLh+*e%UWH!YtW?&zZ1BIkV=$$X@G3s+ut<7kcq3v{EHr%uUs>zEv%gdY+Pw zpY10-Uk(wguHT8&)WDp85iClwIg}~6gQp+_o?oV* zg>BdxY-2(}J_ejsS#(nE|E!vGM)e@6Gdr3RD z+Os3V`YIjr{!ae4;-j@)42q#rZ~VDvW#))uBzb9z(XlI3@o+9@xK3c;nLvmr?n}xJ zC&fsVB4%cqS5=}gCnu*;5i8Lq&Nc_V9LZ#8ONaR;s|Cpc=A_H8d*CJ)i% z+}@!%aFJ<_;;^+rOCS{}F-oXj3%$N?q3hPa?s*@1!(&W^)T33*}0KiNTq7~Xwh6R3Z1bWvv$uQ=9^S>?sb7ae=eW`N7mlC z4#qo`RMlcGW4cY&n$I)pw@)V(eS{75p>B@1ZLmu;K@^ogVcys(GD`|Ao@o}SDk@t$ zL-y0aS&Nj0 zRI=Ng#AS^t-nv-M@F4lvQ_xiA_=rF{18-y( zdj2(^sOMnv!1N77v!NOn=Z8I>@REG42(`)6pyP#-Gew^ZZ&L@4*Py!#^_pE~jbu{_ z`Cy>I$+-qiW3&)W`R?0r!1UzcJnJl<6|&hIU^*IsU&1 zmm7}GiHbgQ;Hv9-?T2k)0@&l^$tPwa#rR&>3NUO+%VOZKd(Om&;g zV)$!ew;P3H!Uk-9Z(&XMGXT=T$&ul-W!Odpb4X8i4Oxq_rxl7gzv9VnHzWI7TBwAUnTTI7j0y0Fjwbosw?CQ} z0&@usqIvf6)i+n*efim0s`Q8Td{NP{rhMEEJ(7S@u*@;1O_R#b<=#-weG#R}3oUSl zYd^@*6|J1!ck54w0|OR$>K{NGkbSRL0mlehduO$B8<__7hmLhq=9z!6Gya?94(;Zfaj@3R+yPB9$iLgZWNLaB z${vL0seOw2+Hq3X(JtEo{}=O~$hZ|7u-=9Y)l2XHcGVCv{p zwPQ3NXd8z=USeohkzt5d7l9e3*%wyN$K|W4-bXQ~^?X&)DR|B5`wu1H)c90Zq#qKE&JIWd&@(bfzZfP!^6qJN%NOXwxH#O zVO<-HvrlUv$06&Rt20ypk_Wf;A1J8m*N!;uG58qLQp6-kK>40`H zu3kpN-}ZtBCj*WTC-Y2p`J9%@s#Z3aNqad9%5)Rw>fLd7f+QLFs}$K;g-m}A?X}D( z$vmuaUevwjvp1EJV%`4c0g9_H;H3bIlA#r3G z63N1RjGUx5Am@YHv>dx1zvx%jfIgMnL7PF>cAM#Ki)apMg={<%+()$h7R!o)g|v~p z<5}nz#VxyLBy63+Gj-P_4kJbIvUss|C7)ol1bw2y?n?E`m5R~MTP?$RoyB5=BFxeq zrBO!LA1YWN$oc3YwU+UK_k`ziqLo3J_ndTm^y>uFtCZ>IDh>IrZq+wbuo3~4asf?G zQAH|s$Z!^!81X_Xk(%Yg+UZudhnl6Ox z1S^=ZoMLOfZo1wDl@C33K<6vqifAJW8SCA5tQ_NQeLS}A1VxH%{^8NlYkTHhEq+cR;`3jmH*UJ@8JS_soo!kh2k7`5Iy z_|93>@MkDtrd8TEhZ#H$p14@rS#!gChVXFObi_zMTnul($gfuD>`W%lw1o0_Jk40=DcbCd0Tx8+p5scF zM5baMVTyUg^y1@_Gt+l~6*&-JNRYlyDZc4yc(__1RAd>iAT-R&eYiDQifuo36L=DG z$e$MkwIn; zMS?gRWZdJR zIGRPf$y$7Sd(q^qY(J1Jv>IsRQrFJybLUFtuB6E%ApfPQ?J zfv8*5wv8~r`@P5sXj4-<%HyqH%%s;S9|zvZRbU(*8HyA==__u^UoWlSJ<=a@Ybh^Y z6G8NkHUO7vrj7IH3cjyUO)j_D5wkkjTv)sE%-M~Ua{T4^=JeCbR8=!p+dJBIioFgNv;1%t3VbGQQP%{mo>5CdB{Eql>7qLkf!0GKUMe}D zJ8xHtTx1ri&!V>!`TmpsJ(g3$_;Gi3&{foB>DqXWbAX#(E`{o9iKhtimA)s7I9Gd? ze9OM0gpKROPx=kcqPiDdU+iX@&A3K;Fcq6H&PV7ZG9e2*Rn);o+5_y=yEiYwAG@RM z+qra#=CmKG{&*dg8Go&Q>mbu79!bcwOB6j{=>H1v$oM z4sS(hxhBH=*o`FJQ^X5RlN{gUcqHa^u>GxSFFcoqtA4wu8+e)+Jbcx>FI#2Uhu)$V z^e8qxR!GP2CrWPms=22x_JqO9*Rjh>tCh#G;+2Tq$BDbzbQ@Qs&iI<<<`7a%zG2i# z?3T#%?>)S5TKD~2U)9svrGZheWYH~==*ot=h2mj)j&&Oht(k#In7*v)uJ|B*+HEoX zPRWm(-KAz|cf3-&+JZR%28SI*DyF}v*j?tJWSZNO=j3x@&vhQ4J|oL;mdHG2JJ39~ zlfkI1Z;`pO=er?dj$%LLSE1xGN62=jaQho=LF=!pCqrXl|L_;$hED;AqL5VG0#@ zTZ@}tx~J~g6|SNYLATA>kNg&@hRMKuYz}fw6zb}Hvv16+kOc{IQ?;dwNBiG%q(Pz; zTwCuCwQXwT5(=?rc+F-F6YNtHGS4}|@<``qs7Tv%VAPtopoJk(oS;9!nDgD_&fV}z zWzIrJ_=tV}_FiBfQ~6^6YVyXbYE7(-i?n=~yZ2CbnDTo07Q*zx%~LXgXJYzt^&-xm zQ35vTT&|Cx&AmzNpzR&fn!NQ(#bUWs*KX%?nF83iWRQqWLX>~l=4t>F$9wp7389o6Dv?A=IDqIk9OWBJ8jYYRWrv6KN8F@DABLwpKG@S2$j`Ip8c%Y|YP z$C_$ekAJ@ZG-z7uxOPpi*1UE=qxuPD!9xpy^d37^U1kmra+-`qPd98u25^GH)QqeL zHl=!3DvaU>rRBlkb$#pMDNGb`dY_|)c(GKrILuS=r+4b<*nQOL37(9Lpzlr;bqeZC z6wP+;yJX_v!dM;?0^esh5GrzwvNg~y&vvZQ?N6H?Wo@KoS@Xv8r)C{=I9XlH!{&s zE-!|tijN4neF>72=fRFAGA(5n|6-K%v6=tD|JY7Bd;7lJjM!nM`uDsXj!|!}V0oSD zXbmZ-HA+LIkV?8OT0{LHS6yVX;yWKHP>epkcn2>s5|?sPGC|&b*t9#+)x~Bz*6J>n zcuHn8X4pf*VBq1+24-9;%yMAGR1+!Kah7=!?4v_rm0&xR zol$L2z*ddfb#M}=>sC8BS?JWjeg`<_DvM8?a@lXX{PFW5sxb}5oGvD;ru`>}K}@F# zDm8BUtFi?otp|sYv)Ic{g~@K!d`c~-NzGUNjqaCytk%QII^8mlZ&SYuWu(z$hEmW( zS6H@#Sa2C~J_L65aR#2-J885(bbbIK;Mf592jfbC&Ow8z&J)cWUz6>+z^W`!Ajr1D<}ldBuH**cIV3xhmS$ z*;S9Vy&2_J2YMVQoC|babNJuFYmk=GPf!oCi{A8XnaeY2V)qSx51J_l%@t^YSkD-N z2%fiBr)HDzE_~DS$=paLL{kJhVY_%lM|RUo@0-jVT*OT1arI8GH<;D9o|@;N-uc#Ec;Vq9XEn!LIk*wKI8n<57t ze{OrHieFS{o+Q}UKPt%w_V5u(Jp{(d0(tkYOg(nY=)= z#&dqZZffxNaGAfMBZCOQ71Fk!IN8NlWUdtzn{;SVrWBYf&ZRYLe^FP1MQsVA=AeLOblr!Jv%Ea!Yy0{9FZo6LLjx)k zCF1L@#(v_e9@*X)X8H zy7bf=U=a*Zz8{!ua6FoAjV#3|CW zfW|!gtYk>&S*4G&vGP_MB>otyZkeiKk!bl^CZm@{#yd_t%fZ!Kf@j_psGT# zyfKYm+@!59-^tXQ0*%J5j#d^`qCJ1FEnmUhk;_UJH*$)>_AYT+=wi-G3D@4g#2~^C z_~AOvo62`BC3e`A^=m7)_U+$mTTP-4oS#zY|k;sbGkZ!|}{d3fp-6dCl z04=bD*V&X4r%jtg=d#WT<@9cOZtVc`m}L?j=6{Kn?!;?PE9#A~9zOl$$K{Y!I#MQq zKJNm@M1DogLThB!qb$Y55(gJ-b=@F%U9QgY@~w#Sn0Xl-NJW#xP_7?X)vx4m_gClW}j&RI91{&O9yXudlaKch3ZIv!xeORI8x}< zvcNZarn_3c(tI*iEr>}{LX<7b!6C=L6T82;vLDEk(D1i;*M4Jf-4&1(h?$H2u<3^C zwa^ulOzw<@pxfU(LTzoCfV66UX;GgIm%0ROi~8B~#%K9T$qPfpYD63TpCr7rJ?~mQ z3!)bi%yTXSDHvnx;Rq^T*p>u-rSv4;n9p#wUj3VKML^GHbQ zx6KRYbaALoh0&0!OG0C8U`ojn;Cm}NP*h`bY`GVM4f|4p1Q zN72>T>DJ^I!=7X;Q&-OClzD!8i!QZGmXLo0mc|+1qRM}sh}p30-1+U$SU-CRPH0=< z*a=UY>`j#hF>#4w&liH@Mo0T+ecc{|6Z1HtduNs(L517U8?R$Vs7?= zYk=jkS~l8Cv=!h8{(6lyu{{vIDu=C>>~Qcu>9Gbb^CmjWZVg@RXGh(U*9Ci-jty2z zeHO!Y`|}1jh(1=%f)j(AN1~D~;{p7i2l;B`r&iq0Xm2am=M>WGKxA6?C@gP}<)~qZ zo=-${j-xP}{zu~f8}*quI$jto&oD|yUrp_v!}02P+_{f~r@w5wpj-4$dO(VEK)F01 zb1h4EIk8z<7Mz#n8dVp4i{3d>C}B431OD%rzRA7FrcO#ZCzRM;plNaGYh6y9L)|~e zxD+RxjyL!ACAjWz_SjKC9)o(Wcb~HGMPE1h#r?XT`~Sx-S!4su4iv9~rpU~!MB1?+ z$-6!F58`cpwaw2jV%lx4d0$~3q?q_Eke-AfU=Z|u2&*4$8*GZ#YL@?ya)6vy{XZUA zoRo@oR$P z5MAkd=Cz}KX8!U1eqDlNh!RHn_h<_mJ4-)6jn1P_-6@?wfTv;Hw^YNje2%?~50>(p zDMYR48AKc}jD)mCvbA)jHhuQkT`S(34(!*$0RZqjz{Hb+*BkKq#H{mj`}f6)-fG^V zWV!`5sCmWcdKH`EVZVjl!FuOkZv010{##UVI$>yKK7U`-I#R$dG{9+jf{R+uG2H5K z!eiZxIdZEL?{MAjdokbhuU}JEU1x%YX1<=K3_jdM7TK;;&ESZ) za_uqO(^9H*dA@%Tl};5@P6UIj^;B z-yeEC+TTB5kZZhm}%H)!CHvO_PlwiVE>Dv;l+D9Z6%UxULD?rx(A5~kWY=qI5eC%H}!5Ypa1eOL-y zU@E029-XljKiXL!AWIyX5u<$*H|DTgb+9B~+9umNr>Q&m%bDd#(ECtH#t4#++9P|| zWHa@TnNL5_m7W~x!`?j(YM_Zlf!t`u%+uwpnZg0!pdl*v*%3Y(s|O%8PL=i~I3!bc za&&Q--?A?|VEN>PHq~?p<&m3|2Zqpk+r#4LM?P%h`Ljj>=xPG6stvIV|u+KXR9E~gljk$6>V5DvH)@T;{-hlF*_?@g5AS0u;G(03A|21E~C)l^~kZl=wtOoD(CLdj4^5W0twH&?-Ts$alz~X z&!}X`{e$->%XleY)cD62;k~dXqjGi44{0GHV%!aTJ^6HSoBg@iz(_?AX1oTGd}6mu{kd zAklivAWI2qFn)2y^z5%6uGjCS;Lh)FYZCWg6Lr?D+Zi}6;rGmVg#TDM{CCi5+;EuL;Fieo-W&^ zTq?mfTM13e$$^+N6t$}r4u)bWI6B8-$s_Dx)vwn`)2X!b0ew!vamTbf{Pw$gyUjd4 zJEK;Ka21P0r-4ps9xw>-dO{X@@6~z6qr0A^-iAkjT|o!fDW234FvHZ2%Aq@C4E2Yb z$EeU2M5xUEF ziF%e#R&sOs;Kaw^-sSw7r8dBlsa{wAJRSYcVAaBv7Z*rBob$z(O#_(Lb$ z`1;qXtxk^;H<0L&#wAqXS8WxG2sL7f3R!Im06F>4Jd00|@Ol!+FnN(Jfr>_Nd-slK zlmwEs>qtUk-}sS~5fs?XCYcYQqGd1d|deJPYh>%KX5@|ol>IqNnv7DqJb}Hm0UnYC48I&;gpj6`sKUgR~%r$gNGJ0-w zpQNFtdzH)xzCa;Uk}K$hz+yKC@%iAtQahvj`yOJDqP0MVUM@d)&oKuzVqhcV7G##aObh(~p zoxx?y-AU|V;i}zExe(0+0^~@HmJ5VJ4UU(F7RIX8aC9`st8K0aix^V8Eb@;8uYnw= zqtEF>8&k>OKbh%WKF%eK1+IP}RL*?A8WM1lgZS%Aju7LATZ6=yP)cAdM5z)rV6`}M zH0^a@+!&Vn(4Trb6YPJ0|a^bq8&E*y%u?7N7)1KY4_U z!S2l{HA^NRXg(G5ws%~YSoUrN6C7(DX;s$kKI~A#^b$9WF`HotJ=6mE_Q}=;YK|KY zz(@sPlDs5kF&sP?Gv>haqj}V(*6DDXM&|KJ3?jKCzFvnkZb^R4w_H%E zxDDL!2^_}-hou}g6yTo3C?Izy&Vvj|i&^7GdfS=;oXBDK@Zt8mMofZ(x1bNWCuk;A z5?bT97{OIL<*zfd*b?M;&{c_GKW@p{98i}iqRVUAia-loGOc^Km8I4(Ki zn0#mg@APo$IHScWjURm3rnRlu&-4p;g6eT@Vc6XoGJI!UsysAQJTnuE6uVz*W;Z;i z*)kt*dwn^-R6}gUbHbfXS%yz^H|)2rp3{jWDg(UtnS<5sRMF3Zc_CdDw|zR$M2a|b|Sy=Sf8%Lg8r4auLGK3bMvvi z)T5$1%e8Qv*h>4rv(}7Q{ZHaqf+i^IpQ@<%vlK%hvAy;4Ct?ERGo3XGZtw3R4GK%w zeF%tok(>yHP)6|*EEsKYPXG)oK>4YAN?hZrh{{=}W7nH>4((hn#%K;%$3v`)85kGw z<7pa6o-(`I#d*;-o8w*NaWx>?^e{bQ`f~hpH%7bXgnmaaxqFBNF2kZzi0Il6={@#g zMA5oQQDot6D7!-_v!9dqPTow(hKlMUet8(9|5Kl3f7RAo{lYG5?OKhRRcVLD@Lq|0 z5qm9xBkK_AJmL0E`ng#n2__Uca$@vZFNf)E>ljLnoI}@ty`g;nhT_1^ae06Xe+j&` z0@7+w$ZBZgn>%R1UdL888zE0MAzy+UK@1@J&yia!=q4T0pENOa&^iiic~LHTJ=wE| zXL=yMCj=nr~#WLr&Iyf&4wtbc2DrYE!s`i3!#un-n{gf!n#d=5#k(Gj+DMq%r`8M zLJRd+t6@HJoS@YrNuLeiEDB9#5Zt=v?Y^K?f?gj%aJPDg%c(9bwq_;elp?p!;x4is z3VL*uO_HIHAL54V_YRG)?)Ej0rn~t(k#LUdTEj-fWz^XM_ml$`?Y#@LrCOgx-+t!Bdb>#9Gy@#u7)*7Mx_t zY-<*8@8HI3cYk&%ADkV7w`MaRd$^e1n6I52&(Pm}!(ZRdEow63a=dFZyjttDtZzHv zPv2>IRmgt!XD2yG={=t>2_6W=t&R@fpV&U%Jh|6gGQ4TnB#~2ztlu3;Qw+o@@-6d_Z1NK-8+JPGT#nKKe~H=|JSyO=A9_(=+A?a3J|OuO zzno9ozP(J}VfTINJc<~9{AHu*lp={YneVJ!L!S{p;c6Ta@Q{Jy#-v)1=-de<7uwTE zBv_UAo7%1Ly=zJCM6!=^mq(7ertP#hn3BHGv&UBZ^(1pV+bK;xV(ldK8jvj?u1;^2 z+%2l63Oc|NzcZPEbLH;ctJ#a-Bz=`7&n;4USp!xvX|oJ`EvrN9iew9LXldVFuQRw) zw;_EBe{@kpDpe47T>F&2WRJwy6sRx?Y9F*q4l(eX%Nh<#;1AQMomm<#EwJX0k0!cI zsAZAsOn7st%fQqlBDQIf`_1vgdz3!HwKx^KT|U4ek%pwHqVRHqv+Y`zIiGx<69#nF z`w%F&96G7Aurf=-PM&+1?Ht8N+6K3UMwt?sTN#P85r9R@lgkIH;a92+{5)7r7*mE~ zt{YtoI8g0c9%-rP$?O)*JlYRGz4(Jb6wNm3& z0vMJh7}|T8G%>bFf?#*yHvs_KkG#z2JRi8b7+H>oSr1hVy@-^?ms>Z~t0zjn>@27m z$?e{4=e{(zy`ZA!n$;uz4#!~HQ6%UKfarW~QoY(vvH7?-+F=KGA4F086O?tVw&e%& z!b1V5*8s4{nWpY=#0kuTu^F#vUiqljqS;C5Q)OmVG2Co7=|$O0pcIQDneCLoD`6Lm zl)ex9h}CylQpV-(iG?MBVEz|pR9j-hVY227h@Y~(F1>d_ByYjQlY{c(la4z(M_YiP zTBKjt30KxA*$ekx4_WHfpL00BpgeVc(vKz%(zSoM)mG4_`UwrXikITB&UM)NQ7u>K z?qYT~q>}UKR^~?Bhkf0NbfIl)~l+V<#sbIH1j^2t?vQ9$19EguJOW`XNZFS zzvwm17n%E=mJ3{{0d-8MGU~&~Lwxvrg1seT* zS{_WyC1N7&-h1I$?_$F{n2JSkLC{36H0o)d|v$*A3m*n zd@?yeIiTw==M`1hC%ioD=3`5jOi(Q1+nZ@rIjS-p7X{qtjL&q7Ns5*q2BNIz=dl8; zUT6mAp+>u3uka{9<)-mD#zU}6oJGwnp<;}pgA+clGXd`~!{TGQ+kjk)$Rlq27d zsb9F>e=lu~$HHT+S|^C{-t8mr#s1;#V4;Z^an=6xK0&Kq1)+fIjIv#a9G9bAeO;%W zVC;~Ql7?1 zFw9(lt9Amh^l8~v&&9OAez-fnD`izVKG0#4SN@H(9X*C7P!2Xs>@KZj0ZewSdbiQ4 zZaRPyUXR8jcB9jGC65n*e^JtoLnkqT&|;-@0jT|ym6^mQ(jK|*&mFgmDBdalKJ64E zx!uL$Hv=y8Y=3X|j@Wc~x_noYM^+ zwgJ`F2isa1a=m8tjR(tudte>R$2y+!eax-f`~q_8sr3{B3*E*6Gt=m+?<>32a-rrw zWv<6}EDzM{44_hm8qcFIF^qd|Sz{N{l=`#;4Zpp0UCJ?AS`{t7p<@yqU4kW{IlSdD z0X*bobtVvcviiLPutCYnM|%$8D4aOpSA45;UNyCmwCG6}!4DgSj+bJn91oTs$C{4L z14bOfk%>SWU~-AKRd41ZN_QhX7E)VE!sIt+n2xh~eM&n7p>RJDp#J^>5MZ2eTO$bD z<`yQ(55vWPn?$WYLur^EC14H$ zC6DK(tw0p7^CVfqi?rPxrz;FJ5Bmp~>W=TbdG^C5V=>9cgCZ>gAcl9{>ZmLMfzJ*_ zwuTYL5r6{Exkcw`*ji-XNOU%v5vGKS0i#U7Wb2vfrv|%2o{%7xP+?&ZEfxzOzm_k# z(L25?c6qtzxMRp>v|uJLqK6{0tywS+?NGn2Fmjh%&AHN`;g#MtCFfb$N`Omi@3T}`lk8Yj%*zT0p^L(2puG71ciAQsp+<4|L84i&lF z;mCH}n|jy$n1&#}R=1V3H;7CM1~hW<%)!3zJ_cS~qRjwL;LY=l^qir;S2UXC{DR|I zl(xeh{{G6Bhn5&UI+sZ&TQU4k2d(nYR9|5I@eu$ON(tba?Gfa7SvF1DZnk@N)7gaM zQ8@uO$(=t4GEyf%(F_PO0|)gzSU}wW>zPM^fYC{Y=eQp4eJS6o-qs6|D2!jZ_qndbFb!%6d388U?sqa4?^DN{tRENo+;<6KFc9bwj|bflx#=Zwp=_q!&1Bry zc*KrhOyMiWcCP}~1*hQYWW$iMAofKJ@3r7p$7eTGih(U}KB*hAsXFTUR!3uSh}7bw z$_UF+NThan2<3^djKZ&Svr;7W#vDU+*KKdAWx5(;s$V%_ zi)4x^=t2&g##1%tyy)C)k43J5>VS1>pMzelVG)iyQ6m)ufPIu2jX94N7y)SaPJZo5 z38Cbzo7-pxh)g$=Fb2lo)Xu zOq@B~I(}BfHFn})3XQ!~r=E~YHaWQ7g9(?21xthrge9RL^>Wn50n;(5esG&EXIzVM zP3~3xz0N%a)OrU2H=2bj)#oNVKlc}mRaie?0!ZbkrTo#N$sW7ea7oUmS!i+V!67CS zbSE}CvhsC%h9nhoE(T!~Z(R|$Lo2y0ixck#g&b8I-yER+ttrpSR|V7otEn2W;LxNq zb&eLrE|Xr!Y0C5>ukbgRi{7^Eh zN79;jUvL8FzUW+qull0M$H!tOLkEfeVX_ovetpw`Y)-<*x4 zeC&{c2HVFu1XxLq6K)zf9|HZTwQm4uy*nV;LR)_oQCN?Qvm1AcZK<-GnT}MF2^x)08mhT@Tm;Bxg82F4=?F=lJ449w5%KG)xgOHYG{gI7 z9|LM*-jATu<#9C`)+?}rlD0Oxuf%xMU8@r$Ye-NpU)t2#b_jW7hENB&GS}3u&nfNrT z5~>$y2aO!^Y}Q|C+bgFo;a)?Iq7mgdlZ& zU3p^yX~o(s{YmmQvCrF?ei-jW-!3X;un_@=ytI#P4bn}kq;wosm90uqzLRp+74x7d zvxI4gsJI2bzK@Ih^m&F7=W~4dsAsW>+oSR+k0Y77g{`}G)?J%T#T26o+QiT1}vzAUNxtttwt_VT9B4%U6Bo2SN$IHSP-t z#(r8QAr#%#-)3ra-BvxUZXHe1yeG$Xn3c=6{>8Aaj2n*`J3%XT=1cP4SJFV;uSaL* zYFgnC+;Whcc?4Xk%k<5gyLcy@bp^|`>hHhR0QTN#ndHWfn*Y7Oy<(O${J!crH-ASJ8FRO)AE_07|)Sh;cl#mYCPt9L% z-Twf`40kAuo9Tn|!#fWOe@l#n=IiWuk0>?OxR=b1Oq}bcp*gL(<@|AK#ZMk{FXj&+ zE%zAtN2wi*(RPnTDE?fk;~5~4+&$e9#}yU`h(ZQJw`ppe8(eEcx&|@cGY|7xq;0qU zD)N;aoKJDd6zZQ+3EnHE+&Z>ucq4YB`AHQ{-Ex_+MUj!J^{Y*H#f#h%em@Cgcv+7m zLu&Z#bR6+}do$iYw8&yhyz6_zY#ph3Umwqe^(l@*wecpgTxRW0+jf26X3ee=`p6QH-~auI@7Z7ySr^sy&Y;>nhu5}k2(7L? z_1ldK+~^OZP*JM?pMS^lv4lO!UVXZBqhb56%VebV?nWhVTnXi8xuIJ9U;atdKW^=R z_Y0ss6|VQ5{^Q;3n7Bx#rDA7Obtk7;;iV|$xC{wA5;N;r;+w?M3Vc0`}E zFueLgn$Nv6;bQsaH5LD0OYelg1V%M6;X3Cte3CMh2znL;!kSC>KF*G|mzulK+IdiZ z;fPFF;JA)#l$eL%+yU_`yi^%-V|D(O>Y={~v~IWdg*;k4C`K?>xsxM#E4D1C0v;W?hPO(bnq7&#V`A&i>X#egLX$9gt4eh05bt-fCo+stk;wVZ zKwTyg&UtGmj_*ePd=1gGEIc|Oq+Q$;b$t%zNsV1348q)FG`jqx_xjuuo;qDs6rID^ zjA}jwPuU#WFr)TDT9%{uFR!E#@kK(vOST@L1j<@&6Ld^dfY+N(2})-~nO$ASd`8ZW z^*WT*MSmrFZ}Lllnc`;&@K~>zVrp|1PVAWK`eO>KH{?#I*j5S7Z$3|7mvvl?lcNjW zkan>?AZob~xPGqhbh_QpM->o?-XDZo_AhFtE}q)MSI``7{z0t;moNB0_-eW|cx{^=)tO`#cLI5p0ot zYX5nJVj6#FrpQ+G_+OmQ5s&ZRUt>;jI1W8LWkt>|>OH4+b~xg-9;Q8sXZkHSS4d#F z>(u^Ta<{EeU9irOM{P7ytp1ym5=ntm*d`9juhQMun7f9cAP$B<)(`9+^DJ;d$!p-{ z`=c7?lL%4vwYSE z68_QQ03F3)kFSmvZXi&(F=zwy zwq~o(RYfoL5DE{Nd7q8-nJaxW`VDYX4vNflz$BPoC#AJln?2fkAX2_t z-<;rg|Ht_46D*$?f8(A_=uSH*hrW_qIcI6?^dWh=MaGp>!Z0iHJ?z!AJFgd=8QL$n z)n9XKO2isndFNr_S1tJt{pGdLVn+BNPP%<;h9`MElfoj^5X6?vePa z<&f2igv5aRy);FZT_)bs$w;%X>qRx96@)ME+kW_4;wab^Jm&PxL6DXba%>58a@l<0 z)eTp$^J-^t98K8Xh2zu{Dz}el5#6H5ljck`neUdF%vRqbV?5gb#JH1zrI{YX4mocirVYy!1GVLbJ5Gf5KQywY2>Os+F92v*UF!mhNaa^Xk z>GZj=yj__qw(4|PEBNFyZ!#_r2Z_Q_VNuArrN)x9$ce$*x(uuUX$q`MYUTHTpt+D1 z14Mv#P&6D;mu0xnMAlC1I8JyseG1aQ$MP#*CforKY!FnxlVcuq_9$+y;GTJ_tXpnz zg;r`%kCiV#FyZ~H3ER0J0`swUs&zrNXE?pL9U9wJ1C(&?HCS1Dax0b$W1Q!vUh3tV zib%>bXGQ&|A-&(<$lp;sAf5iE173cl4>!76QG8>ojo%HJrvZKpYB=$cr0rbpNoot$ z2s#CgQwP`xkFHLwnezN(E?DvHr9J{Tz&wAdn)>R!iV!pPm5E^y!dg1RT(18lVm_2p zKEBCF}wh>*ZrJ_Q)yII*JBy z(W9hX%+5pSj;~{GgP^U_Z*bS z)H-*N(3wSzCCg;4L2BkZ4ZuK z1gS62FIxReEXOY`cmgW9o)+ zjPGkRmX2slo=uGV8xdE-Y+8O}i(@^fTRlJysoy+`-c1jB(`o+SG|+C?ag6#SK(SI^ zc|)!I1SXj@!pa8rg!e_vF|~8kCH!AQNj9mpq4;}jLKAB}R%U4jhDxXFNGx9x10@E8 zan3*x%I?-Rw5k1c`z@x{v092}z?K}N4?M0ktX3xuuYqL_ zRXb>@M}1e$9=V2WD6aDsN1`uX)clqy^0?AZX|RH9YBC$8`0A z$5C(Xir_82`DQnk7Aa;=N{0(t>-N??7AUelud-%i=cO~H<>PPcGOL@m z$bmo|2zCfP;N@9O_cY^gd{_3pa`H${G{}{Y7ap*wrxkqDIa@2Ra(}1If^FL~#lWZ@ zWnmv#&0kpzAMLmMdtloh)E+R)66QMN;@-q#21#p$&fWo!v1C2o93$f}n@_KHe*_9T z$oFB=E>y315wLNXdLRoFn_jn^_~iI8#Fc0u6UAE@&}qtF4Die)XK}`Y{K{=zlubV- zdk;LWH~-DoTMzI*0h$H7tJxa)jr+R?PZ3mJ(R|x3hYA)Ql@IsOI|N^yKd-W(o$yoK zt568{1$8YIJcL+*lzHAmK?%VCVOd56#pDLraLxa*I%Sj~;~KU6^g-0KdDCWM?%Ek2a|eT4PffvIU^G(7 z@#dUs)Si7Wt)sn9ttWXX)cIqYpVExx9Ykz~lI)fe0=OQ_&Mi0;7Srxb`900(p zI|ABmHm48xKPd#m|{g-pwtH1L;LCgC{y(A=kF`90&@U8vt8Ca8xilCKP5V0mWzj#^)HkznK$i9X_PWNCifB?> zGEF3IC^Qx&s?aFd9*fjBvoEahM$3lB8grJ%QWNv*`#K?w`*iDhAWH`@S}{Pf&w(DQ zOvUSa6da$-h%D%1|N5jgK!$NxeT`b`P7jnU7(=>NtMoX%n?URf($O{G0X58FcvqGc z-`-U3087FZ`ayBD%j|d;Uo^z5MV3ZQj;y`2`X0mkcF@E1Z%#`seBLsY-ovbI8b zOdedroyC5-K|%o6o8X%PWZ!`Gtwf2N_0eO&viLcImBU&fX0|nmhcqd4pdOYcJ5UUI z4Qf*gfw564KXM?ejyfWw0>b?NLX(J;DXx=oB3g z>n|6+pN7b|30g$KR^-BdXupILoRIENL7UdnQlC3npl1en67?eWhj$B%!N&BUes%g% zw}Oy=?wtJRHvW>Lc4ae-|^wmciQ<|VG!jVt0g=!SHs z6v6HZs;u3zo-U7fACqh5)j)!H&k|&P`iI>=2XA5j;i;&jyziEv)LIs>fvF&-x4f^f z`Tm5z<;>@+d8-gP2IHnlS!dK7fV&0ryC{GY>jLmOBk%q1l`QmmU=bgb^}GtyWRo5j z7O{N+QIGo9YA*Vt+FN9%4i*o1S``iM^(!5EWSg&)r+xJFuF<9|%ai4Ly3A8+#->2P zozUPV5LAF=fJ#3RB)_$?Fdkf0N3W2zrYQU#6258esuL`dYZqm5bYr z&^5K&OPwR~$tmNI;set43m6KWss$3HCKlhBGZ7x0`>;#TEV(vF-T*M-p*oJ7AmD7} zPt3q7I|DVutQ4cTnzxDCc0>2imyLE6Q^&Wyfn&#BB3X7L&i6Q2&|Eb3WrjJ6dxuin zlT~O`3^&PPnZ|!h8~w%qK#*(qqU8jEI1fFf{Xbh@Ef;DKfAkZIT@1UDw7%Bj83wmk z9YlnpMa&hu8fV5_8bRbDw4v@dEw}Sk;qQ_(ESMb#U|l{gcTiXu!GbD11r9Tpg`VrE zpx^uTGQcqiQKtoo6O9GR+@?$&`>#AdSzB}GUj8Em2(Q-sm9v^)YZ|;Qc#Iqz@D6lN z`L8}G^9c-oUUGiBFio}{q$`O4M_50_Y%ps`142?m4(VAv;FDVAaS4da%sLur5kZUF ziXRD|H3bUwZf@LyhOSQURy__YAOW4hs11oD=Mn4Iv&-w6PEP*SX*?}wP))Z z{_9-f|1UgCJE+(hO30E*xxX??de#a%rfh`jB!m(}P9YJ~qO^#v{buReywm6PU%=Ld zf8uM-#d}dvJj|QD$@C`P%VvMU$MmQbfZ)2RyHq#DFRt(bWSC$Zp@w)a0FbUYw@%Ef zsYqBrerX3vEKVjFfWk6Y+Fn{O;c*oE(RF;;&*K7Mg*js>w&i2&LIQj~IjBOlu$Jk` zXPay6lr22U-KfStA0_1Cbu-qV?lbk2Nx3TVHvOAMSrOH9GUn)?&zpSYB z&E<|%;;pU_%kVj!zia}pt2Oc-Az&g*GF9!n!C3#-vO5<%{wEHpWGm+MH5F+P+Vz#s z|4yK6b^OKp%If3IerHcJ6{5jQV|`WuXxj`-A4MpFKlHd~W=jNXsV!O*DpoHxPa%+9 za~IMG%%eg4ajq)I#OQ2_5CG0K&4|&qHhT~6! zk7_OJ8(ZLY!PaQ<5qS2T;eZ5zLFgbZdcKWViTEo40*vvX)a~;z*xo4)W2^M!@Fz&t z!zOio5J_3?o~1%NItcI+%k2GnCa%Mg&$qFyyb|UTwY-XyKVY(GhT6T6EVGAX92K{~ z8A-T*3vmZz(|oFOJ{SnW@|FPiH=RxY{o_X^Zf>y0_H43=b||`XqoTXlw)RZpEbH}= z>aD!rwY2B=08Ga2IQvoQmi;)08*hOm^z*{Ew-=@t_Ndo^geBh)7bt+yrf10+QF^D#AeT=&|B+8zMpJ5hV9Y%P-HwvO}r9j8eCN^zAZ; z(GKM?*+~0Fp#7XI0;C$n;_USFhfs_@LWmW0LH0O{xI!9WEBgTojyrZV5AojI&b>2B zwnY-s?pAW97rj(aQHpYQ-$gj$I)Aa8oOc-+TM)XpIl~O90o0 zlzIS>Atg3j`4-?6ZsPmy!EVPdaclb#;tGC|r>SrdxBLzgs%x0&y@wYE=6xdr=b0Y| z@+h(80D$!E*(JAd8Qw~y(?$OzINn0E?o^iJMzGj3efTzB5-R}xK-QkXje|_o=)t|)zRWTot#UD zL5?KM@bz0gtCDX=5PJrU%y*O(kucq75!VLkgq>v6@&Npc;qwvM>+qcXI$#? z%&UlQ5Yaev{lb01W)bfHS1=g!e!|sXp?ogAU5#ZsCvM>*B24&p32`zEx6eQlHxp%2Vci z>~^+;2kQ?zE1X;SoMHXK2Ox2F^_i}BtKd!Us zV=7&trf_Jf+p-O(jqyO6Fru~8gsx%=r|;*1^{z#ilib4f^Tsp9jrpJJL6~Atp6i;= zB0UTMDU9=;J!7SYFIf|t?6&HJ-NYF95Loq-`{e@a&rE|LW>*r zK?-sK{wG93uk26Q=Q=sruEm9JwEO?2m|SEq`FtCe}6xNdewO3qRF z0n8L23&lg*sXAkIclRT*c`RGfF%hk)1UK~4*oGABki&z*-*xqeZTil^Ws?V!u z@-DAlbtq@%fMiYH_O^WWLhVNa$zCr~&5Wul(Q_n7e)X%JG>y+kR&vn$c|0T1)l^7* z$KQva`bos|WOwjpliF5>wu=ftmLS~$=TYPf12f6@K(BsshA1p>rAivmjX1rSpO<^2 z{EZMuNZYA)pKm50yv$K0`3F!G<_nt`i=?r`HH;EiS`nHvz{^HnH1Q!n=DfgFv)f<( zFdzX@4?9Q@#?5~84fVl;&3cCL0N^g>YSLdr;@-h_ZQFwZe{fe$zN(>M?(d5B`TNFT+czZ3rSFi5{+#(|_ko|_%cOsul z^jhD`r$^}D)V;=+`?Gd7NHq@BrT3d;=!=6d9yBm6r!6c)R<#YVY;>6J2LMp?7J5$r zW@c0C3WgCCakQdk?2Q=1@sC9tX9d*Q*{Wq0bvr=5K)sp@XV(rr5`TN24UvH7Psk|- z#psCJybnq74{(CmA@C&nx2!8VPc$P>78|}`Q7HxGUL7<@4(3+Ppe2|emF^{i?}C{i zl?ynDT76zqTY6m3tzpI1DzQFT-DN_j;Y8+{LGOOJ(i8=K(I-8>4dfh05PaEg2}0~c znW-{K?Al~b9&iiaL0f8ff%(Lz>FFuo>cfb`>B@X{u9W~yS@p#kf~kKZ+GVouY`CG* z2Y1K@3&y}3b6*u!HLp_>%u&;S*LG~YU>MiFCgGj@H|+afO#D)4@#o#=crlQj_&eH! zy*xMZbcKeAP!dPXMw;_J-!0%}5kK)xyYGykf%_MKc4Oakz>HXqus&jySkS%E6C~qc z^z#wf*|tR2&6k7ar(55+zhxyp&TW{`{S~33TD5wBUg>Vxm;2EL^<`9?DBHQ))%rHc z`x1G;rDeZl=j0U9@H?As)oPIa1puS7%3F-r+jVW6*;=bpej7v~4sF%jY3}%T1_ude z8JTFm{W(|>ln9#wDoN!BlYh?}6=3ag37F?EMIH-uR|q4-Ll*MlNL=+e4UI;RUzOb7 zHrAHlbK{(kXTQCkv7^5}ZgDvOa~B|b``-rm{sy3i{{B}VG8gTtYAq3DBT_H9mGb%C zeCrz>z;Q5r&aF&;3!&;2-yU+vMci-5;?`OA8V(~4B|TSfzI(M4X){4)oVZXYxui5$ zrBXXbn%XY_`on_WAy;a*coYI(xu$@oYJVYDAah>mdoXXS6HlGdxOn5Z&Qr^xsj{&Y z5=#dUzos2DSDQEUe0X6M8@p9`Bvf7Qh0a5pp4CR}a)a5i0)6~g=Qg|7Tluy}-e<#i z4cG(T-ECAw&5@}urI>~Ug7ne~35TW?v+cetjnxfvwgTxO$s&&??h3xRi+SZ7qqBMl zHp$0`ay#6_b1V$8d#D35)sD|{a^MUj1r636UlRA8lb(xwn~3yWPeI}wFKmiVKaqGA z;iL)28cb&{z2czXZ~s+u+GY9gTE~x9C*$tZ;x8}yC3Le9iH3e^bFUkAAfaUjxCJ~< zAo;~dK1aa9HzkyzNV^Ikh18Cv;>GIUD5bOLIEE#+ ze>NZtKriu)JNW$VLc*6PRG)u+*tNYA4QkRHrz$0nAmz>*7xV|hOaouHL8{azX9Rmq zy7K&{+U4vPE|0HyZ)REe_=!n0Eovd64K#GDgpBZ|+5?M+C-&zStARrf0!ud3rPB;q zvcBrX7Y*JhA8k)|7W;$JQefzx{Ho>8U-k@9Pgmw5ecCs(zTcx65zp+c8(YqY4)I5A;QFO8S4&ETD*-UxX8+?*DTX$Om?pzI9I17nC%P}- zu#I4DR-hKpO9KoZs3S)NtG>3snSH9Xnq_zWWDj&( zcaTMKzF@V?(2Z8qf?RE0x&sb3s9wkb$0TVs`ISibxt;?Jg1#U)*g-}c#xS7ADa-{7 zrOM$kuaQsYzK6OzM-!BQOdyvdxdv9%551;*;)R*d<0gooaiE+o>Yd7*b{$Fn_Hl3( z`^QeMb4kKe%Y%dB*33t(Yu~#IeiBFfPp?Ay4ekkJ`O4HH|7-0=m?};vq)p~l0ea+` zs$RQ*lvC1F7jOrGUU2S9x2Zp<_JhDRkXl_xBtJM71eUXqf*~Y@p#b?lK3lVHptK!4 zbIYB!;`2O~;=GBRU`Pd$!QT{ey$#S2qcCnz)?wf zW%m)Rj#HxT4m!VuRd4q5mvi$I^q$0+??Md4`Ce!GfTx_Fz;Sg@sL(X|LXvmZ2G+r}Mn6PZrfeW>J0AvK)v(3il9m|D! z6=v6YjG)zIeUDiSFJ}dJs)e)Mt&t*$L(Yb$d|T>k8&$Y%@SwD@YK+j&z_gWs_jf%a zmAU|`C51nDn!tDPjRg@e<>&;KD{cjjEWU_!L619u-kbNN7a`2&JEUycmuLKi;YyF;iK<_R}QF+(J9sx0w=pb>!Nqtz~E0H)-C6lqgY z=lBF-i-EXOz#%9H0sLZw5jMeKrQhtVxx;NSW&7~N(xo`L$4JTb@+?rw3g>J^rI5}i z!ei;0qJncn5Qjs_2@Y=G6_Gr05J^#0RkfQ}*e5P|Di_CGk}%90x009P9q_OkneRk| zDE5+&>;frnlgN01NZyK5<2wk011A+8*nez$Eo!8a^4WBWy%;lCHE?X>oI1b!27(r! zeW|WP=@A8blJZ67@_Zv#a~LmscCo3ej^iVNa=Wz&jliw@^^ZUX-)x;j!c>GCOO0OF(jSqM zk{4@9;wj|#tnWqjKFj8TD;JF{p79fN9D0XXyTz5$ojo+iVt!=V4LU4b;(LYB*0|D!E6MH6 zV?mr&y3Ge=ET3TQQ1lR&mROHThX}CGA=$PVrk=jNE{1?HDl{1G%@i-HD3moCb8)l) zn`LQBa=O;Z?I`;Fl^A@>ms*|R20Z=84Ov9>T4u*Mg$d61=%HWh3O)&Snds#4;yQct zPu|NYy5G8m-f{T=No>xKAtpy@GSk{;@+Ff<#ldXQ>4Byd=6WzE(*X625gwP>Q7VIf z`#7_Axb>g@k-8}fyqA+3*>@b+7u-k~NEZ{Vy3tRtjhHw&2YKernWWY&ez~bGL28uo zbyvN*-rV88#qaQB<9$~JWAz-2`(9=jni!RGbdG(5L$>VtTNML;Q`o$~u1p#E`>TR_ zV`;O44_5|J-}7d`KN2!74|nqr!Bo>2?8-F_1&---0M*6z=$~Q^O;#GUM>h!vBs)7w zpQ3z8Tz}>ljqLK(R%9Xc_p{%!m0{|_JhDJc9m@uQoI0+mCnJbU@<1s3&rhm8ii&!% zY+UFzHQJYKTjIo+uOf@Mh9#T_Gvz(fbkQL~+ih zk(|AU$NSRF;k~D;btNXj7NSuW^yB`zLU}K%vK|SG7Gym-+`;M}GBXW=jp;vVvxU7B z<@%q`)Aw!43m% zlAt_q7dOn!P~E1WW2F*8R*gQ z+gvj|#SW#P)y=_KZomCve%)QAu+3_$&6zG0VFT4h z)7Ujj85?bJ!@Lx2@XXwe*t{iQ*933#`wGfkSM|L5lIz)og=|kh(1uAeHshr8m{&Do z2akAJ)y8;GyZfMgEJ?^vs-^Sk$YfZWmX0~)8hEY@r&v*ROGu+NG40ok208%P+vu*IoIzbJzOkshII($i|Ox!r<=CzAtC!OGDXv2IRE%9_0?y#WT zym_q;6WhX3hMMN~T^ao+Qt{c=A%6%arT?5jy<@7|Eigzc0TRSubLNcBq`IW1e=WrY0U)GGsCj)TG&f8 zA9q*_#%?W;Q(e68_w7}a8TKC_oM@--Gb;V8F}g=(D`AnTa0XOIBri^h%!aTu46+3)`k@;wlL7TcsZFQw*PWQVetJF9l6cDQQ=weMDb}Z zrllEIT)Q{S)vaaV33=l5cviGj881h)Winh2cX81tvbGBs>lhtP&pV=-?4g?es56PN zk(%^|kLX_DB`Rbm*z;zass5VYo_|({@jl!6xVE0j-vtgEPN6```PnBPcpx|66(l5j0+U;XiPC1?zXo>pL*u?hixcEY{0 zO{A2@TBwsO(8-(K@u>pc%`@-mFO2YQ{`v?UQfNqx&UY}UYL{o7?UUGE#oJY=Yn#p# zmwXV~ih0Evz45D8R02Ytfmi7zt+|d+A4!X9RQ3g}%_^+^4>L?8ZQ!8SMCyi>Zir2K zh`JUjyIF1Yy#OXYJM(0yw(7z3QaFHfaf8wMb>!C1>3#X=-aK&&4?-XB_9_R%3{E5S zWt&%FhI@=k_Jwb(m1}4$DNm=MBFaLwGMTnts;yUCJS{YLaN@SczB?zsk2z}GCSCb* zS5`-;g@fZ3v8*UvbU}HR3+Kkq8>04f1&myJObE~D{^^^mhJ9G#NTIzg`f(AudxPN_ zf5AC}wU;O^^;JSzI92SFu$ZJN220#n@$njF^$nLC+_p4z_FdOf*&4d>CewOjcK$Bz z+CSnHeR!cPieulis2O&h?LU6O`cdx7n@^2MC{`hd3 zRnb^J$&GuCN=$Z;EVpO<)@7ak?Z=C2mPmCtTOP*RmT#D^sX6w;9X!(Bd8xZ#{Tiv8 zm4@dwBHj7NFG$7l{WIHo%g%C&WsLmT46Gd;{@79|$hsB3aTsRds})7Uk>6@6vZGj# zLoNRLG>L>c81Fc_$-A;i?H{)|BE9b!s*20BDCYCc2k^1O4CN zz##lLb6^ns{##Zs3jYO#|AGRH0DS%n3NQ%&1qEa({1+5p5dO;)U=aQb3NQ%&1qB#{ z|AGQC2>%5I7=-_V0t~``K>=A0|0gnq8jB`y@R5%JdfS^Xp0Q@PUvKT8I{FUmC(=V_ z=E`t6&nX^evbCPT_NoHr`uBfqGr$?kxXA8yLiOw>)aP79mrs~iueZHTHw}`fTH&oy zeIHPDOydan5}H#)d7n$Ff-x6S8^lkbfBpWCSp;;d{i?YT0OnO}27WOC`-x%?B!@4v zp2j)81NFnxG=ivnkU~q)S_Rk8YSKS%U_7&0t_u`g-RkRK=XxmLTF@aY{Z+EpI?+Z6 zhpiz7Elgy!CO$C7mk0!N1(C*g*AdhjEXJjOJjD9{d|4UhoG8@icEpbh6_GzG)|&Wd z0bTa%@I-uWv6Yn%_6<>OrO)#Hu~71y=R3zNqX?aiM_7NDYW_~R5kXGmMsD-GKjvR> zOs<6H5{9zm7SczoIdQA+klf_e zR<+p*0huWE#4uGU#XDVgE6# zdS=XIJ$a=QWl1FYH^?o0K$;7Fu36YD;xSkH=%4|9lrj3*(<@^>FnG0jnd$+|aAGUx zuFT9hPNr*pO%^5L-y=O}B;RS_Y($PCH|AwKGQH&pxNaD$Zq`k}gU}C{X{GHv6eu%J zJ#(X5qw+@I9XZpSoH!*`jDE@){WP3IswubIEYUvw``r2K1(<0v$a@>VI+2%-7Dw2p zRM_i+<<|B7o^KX=z+R<9zj=Hi2S4)hN?e3(s%KbZZJDc#$62>+oocHUF`P6H7e|-R zlzi7y7v#FL%-m47vd?*X7|R#q3ARjcK?1J7C!|$gebL*Nc}`jy-A(&y{$t)D{}WnW z+QDR2%N5Fx-#Jujnq4hH6M{)FWbqU7NZZj$ZrFHY(6sSMna;N*TC$xj^YH3vX}RbC z@2v8hwU3HEDsrgG^bxhIC$;rWm}LW5OOBfVo)&RB@^6(MXIGcasXLUXGEY2!Av?fL z4&IEasXZ=Tm?$cv-t$W=XFucg;5C_Ec-KdQgXo|v$5<+PVWX_9d~>)Pt(fPQqy#Cu z+dRZ>Kj7TLBSc(sBq=bQL6Sd0Ta-@w_mH+`aL*IxG+BiOI#<&f&e0m8YO=Ik;mrNu zg;@VHOoeX;9?7TEFOw=_IeW=LGreE%7ZOGvwA#NL_7CC@!f#?&4@@MrvaMCb6bDQP z-SxhDwo-w={L|9nVOyp#&VHQ2{MX`HwJ65Lt|c=H6dg{r9LT6nnIkUbjYy1>p@+Y; zKA+7_%QR6n3LP5~F}B;ivEh`NMT&cjRjNC7CitEL`Qy`kXIYs=c)@~ZYkjTu!=B`N znH>26jaS#0({zo0kEhvHW>#qt!`X{~WBqmby^`ay`=a+w*TSTwNZ2sskk!|gj&%u^ zc~$V-t6SQ`i*_s5H=G#6h)Fpjvq+zF?DrfjACa41bWHR1Ns)!`GARv;FigW zpM$kzGm5cT%F}9|faP3LqgEdm^$&{I)$(v96veZ&KP!%NvS*AdRX@i;rsz56q=!#J z3&WAQRAO7dnzh7OT395itxnVbc?&Q{IT(7x)iheHw|6Bi4sM>QV_VM?-dxnHUoCd^*EZ`yTZ}re=q;JtjtI1(~3h54Gic0GGkLNw?blK z6t(4UZ;z>)TxY#5w=ZormvgDK*?*kKxw~{iq4nP*4u`M=)BVRO`Q)WiyY4K86Vubj zSf0o!zgB_qj%_`LiFSqKlwMh;0N=)s5Q^{f_z6=PgP-mBXev`fKi$`B5bGNRFThc0 z&E4w!d$n0dW?A-9Dvql;x-R$>w{xYCkQKA{keS=>P3+A!d5n5$=W^ZuyoXt;)pBC$ zYSx^Rtouz}rc^U}?W=hvsfpwi?JCo=+R*5_y!ffUad-|Ufw(9_ndH~x>W}6m-{?DP zA~Rzf;C}VQuN1c;m9~J?dUabg1*5KEq9pT;{ zk}oRLN_Fz^5{$SJ=a`D?SHnIFmigqIT2q3%ACT`{C8$TGFd?MbJSBY~72tdv$V&x9 z@|idv?|-kx_B45iHGb`ChibW4yMSS4!DQo+t`b~~(kGtHR~+SX%($)kas61I379x< zB)oer!8Go+?mKE$u;THj9rg*4ZEB)0hf2{X5|0eUk2v~rJvF9Uy7N$<$S|EtLpT>1 zj#)XYQZ-@&t5M^@ZabSY;+&K&%3=Pwr|YfdYsp7s(}MlS1JXonmk*g{Fr4vA3r^(* zr%0LvTv30%V!!VFaP-eSxs+jJh)nvCNYgj#0xgEy&7BzZZRe(8ClA?(U5-Xqm3~zk zZ0WUpfBjlc9G>EOO5xy?aauz1#PL?D_>nNBHNnmgv5av#ggSf~IiWk3lVO`7kE{6i zsF=YNTQ$&P?vxeKmhW6z)F+=KSrKseBc1xaaRl6e*;FRu%+-A)nBHD6Fyk)}Dq?p$ z);(Y}q~(}n!7*u>dh$7$j$_uLje#<>dQwx+Z0|#^ahI)*Ua>E?$ja0?_xItrUPoU@ zb*%TPG?wY4&KSt&1as?U#}Vonwr%JJy9 z)CWpCx`IhgUIv+R;S~boolA~JtUSXK;64aO_^)`^ciTY6dTgbvbSn9r+Q;3plgERX z>7#w;qKdGV^=x-Xujg`3mNxf2{S`l2>Mi?HQsy=J9QvIP8UIshcAtZZ{JSEmIh!j7 zW17NPTCqKy(al{g*YjF_vWa^t{@TA5|5_Q9h*hoRLNj;HJWC$xJQ}eF6JV~AKYxP`=9QRo)aauOu<95b237J)S_m;+yGF)#irkTi07j!Eys8r1< z*hDw$8B}-w`{p1rlD&=Pn=-h?yS3#nUMd*3GRi1QeN(~=Bc;90^2XnMQ4%vRkivw# ztjThHOFxgj9UOeWIcTh+66>zC-P0sh?QM7+e!MihtpA$Q=|}XPCj~kWnaZrx<7Ww$ z-7KXSe=m*>mXVn#z#Rrdc#$qVip;iVSS^=hn27zhkq58OwTSE`g6uPDH$yX<8_hhJ zo>t_mX?HA63oj^$$?bU6#m*q4!FFsQkI8K8rkHVq`+;yAGV7a!CxvtIBk9}z%r}>j znJ+jdE3;65EcoI$rCnAuPwlB$?;NaL(9e>?bK@<4ItF-Wo25#nwWi7ih*xrXWVBXS zsS#FT^RU_Dbn4E(rkHO}ni(d#YxVu^KhaFP=Sh9o2Nn{MS-gb$HyzKys>;BC5-c!B*7Ikl9ws zj3-0ilj<1sH1q!v*^K0KgtX-&)XB6uk3RUqwih#wwPN-?Y`t*U*?orX5nd|Mkg<5n zh|iY72nlvw@f^saX^~((O{y?$-M1G9oub=nqKlD6A>-tUy#&W||(_IQ;R| z(eQ^sRAY%&D%RY~!-LOP%{4_%JhTF)y^2zbuH}4(052W$_zsj8K=! zD!6wp)%-D)Vs`t&`d`<*+N%jVke0R-_TKBXmptT`fnl@~>0zU70r{1>yUwI{xJ=xrei_RsBw-99U+)rKEUwu|%M$&ao8^ahZFo@O z4-q`W_|@s1Hxf!4J%q2QC5GFV*sXQdd|b4+)a$q`6wz!yvWd^tQxfLXI6}dQHxXOG z;qMEiUdg;TNet0=kZ38YA4hO9fgo<5l= zqL194$-PLg*U0hsYI{F41*pc0oT_>6cltwscft~yuJT2Bsp6gw7KK5~B z)2UKBwRAkK$Zoz1%CO4F2zrIuAPkhsQ)FjSF{K@EX&G_3aQ0czwy>E8J?D6fa^w%+ zF;ckdcsAu`(g-Iee^ zq6G$1{qJ5N@4oG9l;^N5}I zMaY`0*`_FzWwMRklzj% zd1C*WT2_^rptPis`(-C!*ICBtzwwk&gL!Q|bU)x`& zd+gY-U5~tl0U*u(ye6%!q3Z1wrTv`H5iH(%-#W|Lyfq;KwO;wu2PAXkY+-F8MbD0ZXEgXWVdEwbL>$zg%eVa^7gDdQwGsq2%~a<0PN7 z{*`4uf72gMg(UFbg!8QM0qUNNWSfr9_7<>RemuoxW3~26nwv$55W7j{P)gzjHx?iye4D(Goo&#>30(7||E~F4kXo`6TVR48uV$fY zGgL4LCG-Hq$-hjIpH6%IRW-s&P_s9s3U~qoIN|@UdG~j=A?W!1y@+=kDh8HGW(u>~ z)9}%nuiI%efxK7`meauYt|!o#kNwU1KmK*vcMh*{>*3ruE0CxIK3%)0QkSXo^JRTW zbdu=rG;9yey|^yP4T$&JR01;Wv2M=~V;TAUFzNPtQ_-aal&Y#%_BgZumTB(7q4MP4 zyp{N0AesenIv4xqX-I>B`*eVogiT7#dAgLLuB zVOs7Lsr}}6o<9LKR8Pe5-7tGbd}AU8Y6KF9MJ|T&U9%7d%a$D~|uaeAM^f%Hzzji&-DS%HGr&d3pC+bc)|psMwWsTD7)dK57D?g9ePr ze!RT1DPM!SPAFBb7b||&zlMHk&~l;Q2~;5zYf{`lh;=Xb7&36r=r+LuCRsnm_Vq3T ztFBb&R8C%>h-%^nyUt$81h7B^v%#Rs>S`5arq1Yu>Ry^DVwtBdDGkt{ESiB4nAi1^ z=y$fLC|_Es;p-M8aFeS{D$I2r1Eu=^7KNma@S{LohAP3bo!iKooLZb5i$I z1=jKH|04d&rotfSf|}(WP-69{3aEU;7%_D!Zv(J!=xPrYGRWCj@?l+i-e)?S**}r= z7qoPtI2yJtQ4`vSeOZe#E3=T}5M7pdbm@tu4NaEw`l)Ay6GMT2d zeH8PW(JIf(erKz)Bx~OOj-ZJ#X1`OFC%@l`8P(dq63QKl4{+cA9sg-07!8iWA*#r# zItJhSCqC0Q*tPd0rmU~Oc~q${6piJ#XUf8nE$gdVz-I5` z+7m^LOw&*_PiEJipar0Onk>uO1GnhQ=EcFm)%SVBQ{QrRS|*b4%82$Y=kCBBF-NlB ztR1MCOeurw;9iOY8R1C0Db`0sCvzak5;?rCFjb9#iC|%O-lq{7FwFktZtNhfb_00e z-~V{kUq}6G&S>dY1CcsPhZ}JDCkS#FEBY63! z(52gb6g$IivtnDlQg_yJ$s-Zc-*`0nZ~wDi`hQVqBKWx^hle+}n)o zMBwK{HQkc%Bk7NEUPk%Jl!buVgtdtYrz2~xj&o)OM*x2G zw#&>-efVF!?dRe5Bo6`4>_ojkB@c96{91dj=jdk+QLImVs7f?HuJ!F?ir*6E^1bhc z(-W>!e!xg)5%<4aBg&g5@_F@UMc&X5StWOZ3R#oVrr=^FgT@1i7>2DODc{TLOXOK3$-_I+6sUO z&3a8Vb>fWeegVsCBXz&E)0y~H77}VDe8vB_9Dy@<+ApLWdN>MKoEVG&?+gc_%ZbBG z0QH7#z~^ISPRT;I^1rcn|G4G`|qsr zpY0cd_0b~*C>mRvK||==5oB0rujkYb(k#DWXpJx-tNN{FVRQpv4bX45dE{|Q>xlFn z*8`dlLe<&xPE9fx&%L{8tG(W_C)~HDnoX1p*8^HCFYYYH8Y&&AbAbIIJhVQK9d6R!9S0(apHNt$G@MJ_706lR^)|Fd~BxyfEQ;a znFth(LBfJ?2gD%Cv7JxkqyS#=6cVgq%6#K@(~yW3-Pedf0^zju+LzmP?%457zo+ zJix5>IEs;@Q79*sWNF_W9;s|@(jN>YU( zHH9j7>u%ND%*EgFM`y~1Pg22K&;WrI#%yvXIQTZ z{M}3k_OS;)mo%sc=pe=hYsQCVk7Ia2<|2h|%jX8HOBPqih4U(6LdNr+7UunbECb4B%~UfT?KGsGC{UR&tXK z?S+8~V0Vx$I7QERkmoQl4Be!!!B2H9%M)bcQlm*@_l0-ng5s^{j*hM>>#M>@CE_;n zpLU)3Njv8EmY_PNv!fA-5u1*156I@h;5_fIrT&_|Rp)&#tC_Dh3^#LkSoK;Ffk~w$ zcQsZkrrsHHGgf1?!mt(92g?`~bFqjpp=1%hUsBAxR*pp7s~KK*(FQse^eL5f&m`NL zB8r{hn&R?N@jIVhNE!cax8?p$KVQz$#>6bT#e|n5E^+r6u5RX52%`7=Jj6kz)$(CL zzqFR60V5)RR0OS~lPGW9#%@hCRvB_lpwfan1VhJ++d~t46x`E_BDoGITXa%LH>jpR zZqH@wZLK`@Cj@*OLOh_%)4!)u!w@aAvtEJyR)!?d+^gf5(R|>YPB)lY8L=cLEZC+x z4&YpTC14~7uC#^W>Fw#hs7{LT1_6Ye=zi}I2GKLe(~P)egY0MWBRtcM$~9@ey)JbY#<|MS+m;k zrs?HDf;=tayG;Sp4fb0G0?=3GNBhxDgMpYx;d%he9au3ls2&_jn;J^?q(Q?_NP06F zd&xO(oKtnnilE8W$f9%fXxmCv_@&>d<5%;>cQx{rC)BFw+nZUe+SW}5DDPRqlN~D9 zBBGR67ybOjggg~g5S|TZFFRqSv9L=fedNaoXWEYnbL`_Ojo*Z2K>qqMcJc3wbxrdA zJ;2}_y`kU{c;Yk0KJQn-c97dG$;{qCVwjasN{;4N%(E7m{0)aToej6s$hRF&EC7|t zkfyh%wizhe*m@OcCfw%H^}+&vf;eQ*{}^{ zJEzfQjbu2D&Tkfa^8jkSVTtx|7qg8IMnRlPu4y=4(l`x}Se`*<$@!p`)*%hytU97U z@aGilA`Hujf$E?s{>_t? zj@v?T9 zdJ=K#parw`%*b7-ahM}!EmaXmk0T@n*V|wZriOB5SS`J*rUP63;vdr9?z6~7s;UME z#T@XCmb5l^o3JZQ!#mBneK!5BHnyJGY@kAT?L6x*H|`i9;K^JI-1yS3jV zpsbxgA8t6jusU*N-~IW2`o$NFoSMeY9S}UG@Fl+JnLw~@chzvH4d`ok{}RRBInV>B zs5gqlB*#-SCpwL*77P8IXW&ELGlE}1Fy~G-jjdlIpSBBy88{yXoVfcc+`&w8W!i89QwNu6NL4`&h8f})iJ27k(voXq7My89vrg0b(L4F z%X;y$xwm=aNcziJVJxTB?~C)RY+z--5DL$ccX{99c{DSPNOg9g%|9eg)3EaJM6Vg5 zA0AXkKw^Vt*_ED#7XeLL1SUpyo& zE>zAEgX%nu!WPa)^E`Yx^_-)w>`(|7wj<=NL{hI1J&VLSYsj-y0KeG#jB$0m@RiUP z5a3&=G!Hrt5W-u=%e{t$sFU4Dn$h}KdKuk!*4fF)$0IW@I2&rVQ`uoSm^*v(fyKWA zm)E2^6r4na^rB2;U4h-gt?`o-l2BJ7rhQuBZghp>l$-3RUdAQ__K zw^ivh6w8W+U`_jGwRu)91meh^-rj%@&%m0l!SbSuc2r4YOd_d5$r~`N zrKb|gA+4S}2aQgU;dt9WK{&=9K>(-xyq+|U2wUE|bO>D8j1VL1qNH1-{lD;1J7CX9 z84ZJOZX_@p(RG03=!?U!nH5FWwC!#i|5;q>v(~-xNNgr*Cmr~r(1;MPZI!TnF{JlU zc-LsmH)<=T*1IM~eN%++Y$#mYsw^a8vF=t;>~E4`_|O8VZnPSHhg9A4ejmIAlz6Jh zkxHz)-3$`5UO^_>9W)$RHZcg^xY?@ioRt}V6bFcj@4GvV2U9=V^QI3OLFI#Tnk$rY z!%-Ua`S`W~*xJV5Ud+(8xULp%0A1Xn?lV(y>BSm*V6?K^;A=LaG0xm@A+G#pHo5Va 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 Bv&H}b diff --git a/public/images/app-menu/app-menu-record.gif b/public/images/app-menu/app-menu-record.gif index 1f9fd714d312b48a11f38eea520e0384a99a7047..5c221eb11e7303bf97edb16cfddcbf33ab14c99d 100644 GIT binary patch delta 4618246 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

    N;XJgqKz4+xd^L((sbtaU@uMvUk3!Wp9 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

    FEZRdHf^w$nShQR?ySJEwtcRER%GND3SNko-z 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 z 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

    EYTe5dcy6*4E1v4=!ySz%i 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%0AC7q9R5`3C zVti%{dE}B$PC20)!`HFLFGcFm$oZWNx<(B_|G+W>F5}fgO9~+*K?w!OfpboBa8`l> z_?WZQ&me*&V!sKab4AflDS+c)@a$ub00NtT1hrcsNWfxN7EmFCk0()(P77XJOBJ?5 z7RIe&-Z}=ZxK5Ev)oWB#FtAfJ2w?t9@MbCRQ}kXX{9gF3z4udnSCtM6m}3uENR{=H zPy!mXAbN^xpaYAHlv@y8q_-~o`3#8~ow z2!a$8;0~Fs4j)}B016O*g18_sN%D}E0?@z?2C73HyL(Dh8mF)w#O)~(I1W0d^A8C~ z#)ao%ixg60uNdIN8^lQm6*^D?1d*zR@}U2L3id%nu&ksGM(UckNWefjMQMCTqslzo z5rVw%N`hO6(iOuZ1t}nl9f|SQ6_izf6%i~zN=}gi8cM`S#_X>u{c}nOkVr`i(BLci zgNq9b@VtM-@qwf)J9jn|^D`kn)q$)L*w8X~_aGA>wimaC+1m*}O zI1ccKF;D;mY^8tzzobu?nsQQV2H))^YGgG94Y z2R6u5{JxOGcZo>9~WkpUv0mWNN&r__efbJ?$G{rWMTsb-1JyDpBb< z*`qFXxy)_u#hUumTyAcv_~E5he;NM~l4bW%WSvhP8gYOT9N@4J3$1J!rdxJAL5)EW z4sn&!FS^b)wDaZDdu2<1UpblgyhYltNZ$+K06)+GY)~a~>)R*iDtN&RW{-O|=2WP9 zaF?F5?sc)7pGOHZmv!*L0UR*iwT020|WOlR&mWUTXgkY~`BDT5DjqY^+)YzeZak7~W?|4@X z)df*?wEtY)KvTO?*6tj(kAmnC0D!~-F02If!lMfG!_w-1Zn(oA4)NqD;nVFdFOY>C zhA^mL<6Fo$c+h~4Eug2C6$?W=R6z3X)G`cy>OvUMpaOX#%GvdXHZ+%_4I6^ z@8QG1Z18adK1LnH9_Ox?}UK@Qg}OfVozkbcYz;$#(Aspo_C&K+vga6fPn){K=6VGVKi>ZC#4kzcS1o=}1gbhQH&Ab|j4z5|WpW9`<_JPp-5815`ejO>i>0NP)i$U{~a$E4^L15ptpW3w*&Ek52%NKxHooNKvO{=03O$VThM@* zmmLv*XdPW}1qA>B8HaMO=W$!m1tN!n9$0{1=T!4|YBYxr{on(=XLtGrd>x^8V?}(% zhkS0PRUJSAG(ZA)fCq1<4pd`(OUQ&xm^j#{eUO)647LutAprH)4>9lr=Z6n_(0VO! z1=rzzXrOUuFnSVj1!30@6aWD&Fjz2m1zz@l1Q2k6*?|UZ7z0?R0+^?95RgZCC~`Y6 zdRJ$Es3!t#NP5_@16#m)G*AF}7;|?B0aqsiw$y>MH;ED;0`eDvSJwh9fOXfg1z$)3 z>#&CcK!>gOR+xBo@v#2~xCcx0HiI>|YWVhhIoKb<=WoRKVG+<`!}~j9cM< zP`~Je$*7FWcok5%eMZ%N3KkE%aeixu246LH1XTejp#UoIa+?=(>(Bu@9T0N@kU%5=2nW&u@o*hf z5C;3WBSAm{8~0K1h>zMaiuPCnfFJ~aAV+&cxQ&2ddn!PFAwYRTP+l4Bb4URl z@Q9YUekwo#Z9|7)AOTK!1rktGZzljrq5xkh53ZLTekp<%_)%0Dmj%#`*|83rH-67E zdw@^@pC?5jFm?hE0v*to3V8@=4?7SKr5F$WFq$pU1q5k<8Akzt zU`CMXWg^f8@sR(H6u@#@Kmt-wiP#|mM7R!XcYb@YpFbpka=8u^czz;(2LVAak5(fD z3K<4ziFO*N03iU2uOy4Ed2g_pbF!I>)>UXbxdSlZ0zQxfylJC1ilfDqeb4w~z}Z~* zx1MY$1T>&i0mTvTw~V{U06$7Ae=&A6jT*76$2Uya$C*a?J58%=w+a{1!)0;zy^-MqjVOH&b6TLQ%mar znj;9JXuzva;CgEtuigrhno9wQI(24Qp#lI=F*mJ0G@aJ52VMJ!dzh9qz;+9`bs!lJ z?Al)OAdYH(i4W^g0gq^k)%gUf83yiXdpX+yrbq!LfKKao9Rkn+Ef5b|Kmp8jtTC{1 zv`3(uBmp!lmvAc&^JpDcPy!^-pj+7iVW+n;`LLtfw>J5=EBd0EqpA+z4u`9_`^&$~ z$hc2e|Eo#aV8?5DBrt^9+MuY*pDC%mYg+*dc?C3o5Ck;v1eQqwTc83tn?NA|2puq; z{xrc7Kyr(Ca5}X~+FHA7*R{*!k1gPQ_SnHwXOCuCQxy=F+3~amP&?x(1TwSpw!D1H{d5<9=BI=DQ5 zzxvyMzh{ib)c3!SJ3;T}TDR#udwhnsWm?K*rEa%^mI04mSiYfXyIFWD5;CN+H!K)+-Iwr?b^)7*DzQNN8+ z+Dt9ksqNdpO&qHYjjjFK#Z79lJ=^fh(zabf7Of!IrVd+>0UQ7id=1>!4cx-rqdRTf z-F@6N2d1*^K?-t%%-!6K?GVqcInh1c)s5ZnjosP}xy0?=_03?&J>DQgs)`-f5u5+s z3bNi|Pz2O%-SBPTe=Xl_Y}NLE&EU?ZdtHDI`CZ=TJrOBm;TN7V>g_S^U=Ky`0PY|T z2QK23o#5K+#tn|*OC@(**g^C0+!zky6y8fPj^P^KC>-wLAU@(d?$;$=)%2a>K^}|X z&Eok@;}lw;tTPA;!DooVJ+su z)Z~ql4o_|lQcmSo%eO~4^J|FI|1sre!wPEO;F3pI(WrE%4qh3LB_nvwF|1k--Dq#yIDsuIrN{iztWcFQMv_F5`ag>Iwntnm+5buIwFq z>$bMdyAJIZ)9YRE>wA9W=I!SeUhD~R11f;*1-|Uzexnhv21D=|&VJ(2uI_@P6cf4k7OlQR(%*5ce+Y z;I8izFO>Z5@94hZ0ksZ7zU8?^M*F_O2gAsvd;j&*5v@c!Jjr+S#{Snvu^S$W6zxTqA9mJnY z#(!P?_dyb|4?8dqR3HEpumh5^1Aw*u5YZC*AkOL#G7eGu-oOGQ5C+xH|Njkl{Q%)k zpu2ko3*tkUuLcPiMKjt1xsV?`k|j;T^OsWPN`LQM{(~7)=1iJ1889fIE@c5IB|O}O z5~IUU1|BH1{I^9x33*az9ChjPjUAl9|j%|~S%yP12 z?lS%Vkzk-;Cxa4^fBY@_slbpw3_tI^L*sUDS+tnSgxH~|MFus{P3 zL@+@Ek=v`Uul~AcIteGFutEzJt4<+x_(Lf>mA30HMD9LdU>=y@A#n$P6kxy)cB)VZ zpAr<%?;Q@Q*rEX+6y&i-AAbZgNFnPgBd-RRGw4Dkmt?X@ePW9fxGIO*h|!GtS+LOwK{CAapWMJ@@1@Fenj{@;WM0 z0uf6?VbU@t62q7$2nHlT1C4$p?FUW%c2HAJO*iGVQ%`}U^T-F8>$6l-Pd)WdeD>jR z(EpaKJoHc!f8kM-0et+4;n9>hi>fx;1lmCb7uNi=SYwYxHd(boRc_QIQH3^IX(?27 zAAtlNw9r_uoVC_l`S3srG~V$C9yI28)y7}l33gaz--S0`c{gR&&aUvBHeY@BC9K+O zZF5!IZA0w#9~5nEse>RwAVC2VN)RF4>ja|0jS+~Qe>Y=|H|Cf)G1jOPNx=9exnz?g z@;58ndS#jAferP^#DC_If((3KqM`#DNFYIg8r6M_Vn;6SxM-t~Mp~_pLw0uLlb?o~ z#vVX9gy3;_if_82j5TQe-T2SYTEB+-q7=VeSY2Or^h~i`R5-? zd!`k4I(+^2uL$zTl($^^4z<3hv@dAxcpvrXw?GDB&wku1o%i@RK?*X&e^UXV-2|vU z=V5MaFyMd!8#qD|e(r&Z>)zrjxWWov@FW?u+6J*iz{}l^3Lq3=33a%`q@9p-TmLZ~ ze+z}UKNp$=hLe+_h-gSI4<3*TC*S}-csNBW7R`si8)6pqSHzMWv1LhAVh1^-jverT z13#={8r5j5D>f~7T7;wU7-Kvt1nPAG1Y>uWXu!vi(Tr$ZV;}_yr#9m6jd4U|83)aXE1+>1SQlKnGi=NZ;6uR4kgEUNhxm9m9ON{ z3BwY^P}b69qim!d|947MPEw5g@naNWIZR>>NS0W%Wim^KOMH~le9P;l1*AF6X_5pS z*Tg0^-(dl;n8O|Wz()o`s19~ec*rt>_DDdKxjf$u$M0GI~_Nv zN4o$>fuw^r+03Q|NJ34P3a}h6g=tL7agTG<)TT9^13b*Z51#gvr|eJ%6;x1!BKSa^ z>_C^{B|Rn-uJS{j13f?&e7aV)^1}^pg=;+ImjT~29e*wC7J%ATp1Q*VbGYeEWjfh% zxRkOmrDh*0y%EW=$tr)&I)aw!$^8h{bJg zb-P>M_SUz*1@2xIs}9;a7P6W>$7N$`S>y-aM|Ev>wYy#JcGtV# z1+Qyii+@hp(zdM$y=`#SyI%IT*S+su?{I0Wj&xW6xye=TOPPCF=SG&Bw54tjiU3s6 zhS$IcMsR`^ykG`vb-d>+uX)#s-nYWn!WYJHhBX}D#WGeM=zzz4^Q+(Vjkv!z{cmT3 zssaHM7@ZAtkcB*C`Fa?{A|CO6DSKj@rg*w5 z9>D`#d`=rz*~(YOa+bM^<8tbF$NcE=ki|S^GM8DmMQ-bdLyX-25m&av`DJoVoy=D1 zMtRES)N-Enyk|c58LC_+r+Ef^>d~* zy?<#=Cm7J`5VV8|ooG^*+SKq}^jaIu<|Mzlx%Z{CPwSk4JD0Q5x5jm@bxqn&Yk{C! z@BtOR3}%F;_teKmcCrzhYM-uJvu%d7OeG!bp3b_~=p<34x51&-`=^K{*kZ8h^o zoDPyaH{L21ssnhi&U{zg;uoLsrw4k4ev7-<6&`rVMV{z_oB#F5H!VrK6`o&)uNlP; ze{#epUT=)o+~zmWuErg}@o@k9<31jF(1kAMk{>+f376f%8}472r`ZQ8kT}J0K7Vzp zSDman=efTJ{qv!B-Rl|Nf`pAu5|t;NR)>4sL-vo z-uTDgw(C7!d7#tY`Om+r?K>Y?-BXtLFZF$so6gqY4?p$)$OnJ;ajpEj=N6%tHfyc)hg}h!d;6$-2IBfWUK*!0Dnu z3;ezfq`?|ounsgYfD6GL9J&!KL7zIo1%!vPgTJ$rzZax4cIbiw&_4{c!6$@5@4`Xa z(m@`yLXo2a&TFe6L^%cwJ%7WStQJJVw!#M{yucTW!ZcJv@j9!Wv%3JayepK$klO?E z;=;l6!rcQynG!>RFt0LfLNr{%K_o<8Ys0KtJ^`G=MgLT`IxH@N5JDovoA}eLF=Q)1 zJb)Q2#7*Qx2Rpy(^G`j~xJDak^wTi|4tHotp#wld1D&)mzEHqQx!e7M0VEjS{ysSRl zK4d%rf|5mM6vtU~#`F5Qc0iY)^E)7a+{bvJMz%u5+{;7j+r!Z-#t3{x#=?hh%tU1z z$A}!na%8I>^T&(C$c)s;jpWFV^vI8tM}YK26f8&;JjmWlNEcj4GIYprl*pG%LyDZR za|Fqn|Fp@Q#L1l0$(t0(MeHo;u2;gvhqU%sJY+_8bQDM=(tI5W#`G|F$x&C49l=$t#>1Wo{x zPBkpfutYf7WJTI^Mdtsc%(Q$?C%n$`oX$2pf!_?yYBNtL%uY!|&X+06+5}H^*oQFS zfxOVo_TWecPk-y|Pa1qr#|%oy97_81u=~u<@f5@Xg;1OO&j9VL2-Uy>jm^iL z&B)X&&)lgrV^G}OPYWecU7OJAtk4qWza8^X12xEA`UeF>F0l(y1B6Z$#ZgW>(e?bP z9Mw$Myss^R(e98@&7x8KbO0MAPakDc9c@DZMbYVM(&HO8b$ zA_snGQ#XYPIF(Z_|1~fB3(})BS9X2aZW~zKlUGk=)`SJVeTau1z}IN4*pa0>b=rp!kXT_QS#G=7 zSS?tCrPpheuzmmVSde8{DqGo{-KtMJ*_1U?ogKe-CD=}N)0j=gnXTE7C0C$jT5mI1 zlm#}GZGYOJWl?yosf;b!jg?vRLaKIPgAu4Bk)7I{{WLxp0UkgDAJ9U89a~Ln*=>E< zZq?eOrv4e>9MC?^1m2M*|guwB}~ z1=>&Bfxcb4pQYSA!&P-SR@_SmLdC4VAX=n zwcXpr-Q3mP-R0fh_1)a9f*#<3e%OcKHQwVz-sDx@<#pYGkQtds-PHY}^l_D~nTdCZ z-id+TBDjY-|KO1C1>f)$-|;2i@-^S{Mc?#Q-}PnR_I2O)h2Qv<-}!}yFX(|2z=waK z-+%q(-~RRA{{`Rx=HKXz9q(`z0g?=sVTpgh-qf{?Jh%ZjurBWv;0m_j3&!9K*5D21 z;0`w59N>TxzzPp0;Sx6C6Gq|dh~Dg|odpJ?Jp!5o;)^ZdfDCwzV#47Z{tXZo;Q-O$ zAASo{f+iS+;oF(v8ops5R^laI3mzU}CVz(Fvk+oDB4X!>;i(V^2(B(0j^Zx%Vy|#w zAO7Mo9*8N{pdl^d%(;OZ*kUqv<0uYet$1THHscsVV=KO$HE!cM=3^a><39f4I!2-@ zww#u@oqPWngdwlG33m-hel9>`=!4~_GCeV$c zR7&G@$>dEwfle0XR-U3zc4ZtU_|%t;3f(B(`7 z=XDO9Z)WEz66abj=XE*fbS9~H#(!s{ap!#Ap?JRILcZc_PG)o-0d?l*gGQQtM(7dp z=Stq2fHnz%5QjlHfDr(IBwpx@&X^l00v>o`jpm_-CTD=Yor$jKiw5bGju(#hXfaml z1`=sg|DNXq5(jTMX^ej9oc0u!{%D>mbqUo=)rD@#-WJ>XI0U zE+A_yFod?oYXwiFZk~C-U{x1ZoXFUcL{H-8SnCTfPeFTZ}nzx@4jzj ziSNoGX*H&A``&Nu&Tsb~aAWE3fmtF4UKa#902jCcRzC3ME^x)3@M2NnpRr?yt{MiH z;WBve2)}UVuJ930mJElTah7Sz@o;2za0r)h6OZi@mvIEQ4b)9>$|08>fPfh3fDn*? z_izK9k$^hr8XG|a3V)!0erSmn7w9}FgA?e18z_ew_w5IG0R6V|I6?6t-j)y034dq- zC#V3TU;udl0W&WEspyA?kpd~G00>ZxN*Zb?mvSoKa@xjnEzff|>2fOG7F`i@1}Kd; z|DXUTAoK!o0|jsbC#V#4_<$0SfOmimc{mr;%^W-Lfjp@4K7T*$JvVSqZ<9YiJFoPdWpxCb(L6hV*xC+GlhNC^yB00?mMp=Os1=mC`y_0eAHED!Z! z7ZOt6@IaS>l*pAQ;EaFhfbe(+L3jt$kaHG!1G&t?1?T{

    x&__F=bhWykAd=W}%b z5oRCcKraAjXMcbWAQykAb|Lr&Y}fXADD!-%fDi})8YqEq$Mgo@0bxgn7-#o%2laDb z_;$Z>4X+xNfOmQC074N02H=_kaDo^R1QPH737`U+rGg!xf?p^1gD(O`et5%H_hkQX zc?EIzQa2Qwuy~Buc$oMSCx8G!fB+Am_c`aAf|p^HXMg#aXLw|Hc%)B|nQwM1v3XpX zcV4M>t|1X$-+=-s0Sa&je{cs85chExY+%WNBJd`rZ|j#|dbBqXr+;^-{{Wb%b_H+= zaHx8jaDo=VUJ(cac@UElC;^`#daA~U2Qd4iXZx#G`^1O%$H4Ivr)DfMla^SA0-%8P zcn1n7fPa}N00AHuaG(MRPyhw!05q7H!53(ADEz}`e5_vl*5?tor)2f9-j(2tU4aQ0 ziiG`89+V$@)pu@lz-ide>DMQI1d;tx-XO?tV6m5D;LiX!82;l=Y2&B<0!e;a|IQ=k z_x(6NG7k>fC{$fra=Ko%SxPdSzf*%YJ{_=lm?pAvFClC&i_@`ff$X|bV zXn%kxlA+u^cbDKB2_S#cA-o3foDU%_*nl^93oA+)f&z?R10Szj2 zDAA%teIn(FbE!&qH^K-cICCo1s#dRJ&8l^)$dV^hat$kXEZMR&ncCEu6sgg+ZjG)* ziuR^KZ(%r`u#m$n-@bnT0uCJ5E6S#V4nP;Mzrkc++^x{r4;>gpDg49^&j6|Jdfu4KvX~8*v>IqMf>CFE#hoSQznvSC8 zFv?JZ3$nwgq?1xwsil`$Wd1i9y*dG^^SJVTWet+dldD~7d_TFVYU!7AFV zr2BvyuDJW`;6?)nM9PkrEjBSEf9j4Kt`9}@fW{8|92~L46H{EV#TR32FSw0J+HJS) zG{Vlcj9M!OwI`PY?UT~pV*xmSrt=&>GbcRm4(&LAF2ou0+_TR=10A%`Llez!&EPKF z@WVwj-L%tBL;tNYxHGHs96W!5BPh#GrfeLNdM^8?Ix~~4j@f6My@Lul1pD9v*_WC) zJsf|y;fEuh_}geR9)+wb>@l|DlT%)~<(Ffgx#oSF6ZSbTBiW%*U;7!hU6RC zy2N9jz4qI4-+l1Y@7}xj z{{t|90vsR#p~esJJuY%|D#5@cw^BO-q> zi6~TI>R9MIxG6D;QZykAIe5bh=1?*_w4x6ehqiDDk%&_qBN@wRMu{=8aS43l+s^35 zHwvwaHnbo=vZzJ+@vwtkMBUlIIK(2tF_3~Bq#4tQHYYBSkcwPnz~p#8I@(cwc;w;- z%?8FdIA92j+$1ME3Bl>biVfm(p(lS!X-alEvVu5_q+7OV!#z^%i$TPsCQoV0TjCOp zpv-_MTPU|&0+W!b>>wmr*%nvc50-|!WF~{@%x6MVUWPpXTPR2Q%V=U#io?8O9gS%e z3zmZ%oaFT2 z5BmtNbguKB3SB51k6<4y2Gn41*=lW3J-L!F?Uo*L`41~zqrEo@sQYueLlYkG`zELQ1?+Sgt$f|cFpUNak3zXE?2t?C%9VPWgr zx-Pb{kDb|XVM|%dVpg*<<*Y#e1X|tlwzS2au2h4|S~fzKx~4rYZINo*zB1Rd&vokA zqO0BW_SCw=-5Gij%iYV?R=JzyM`xEcUM~W13yn2Fd;3dL^|m&<{spdVksDv-;x@GT zZEP3@>|lig7`w!M@LPZ1n_L8k*S@(WuO;<6f(BDK#Mq2*Jw-fK3m;gs3D)gC62XBU zXu-rX4yJmkP`4SMxWL_oX-rql;d8ne#yB4GDQkTHVmxF)fqPj<@Advm zgzKpN)>-Nwt8Fc`)2XzcH&qln<~k*{Gb6H>aKxuYD?CP#iIgj!>Jpj`qlCG+Mq`(l z&yV}AN9$9Q(*jK?frkPKEwKynj$Xg04;=$N=62KJ)E19sP7@w6`&-T}kVkcPRCfw! zeOR!QXG=|JC3f=WbtAX4-Y()R;I1wpANH zb@TJoxBx@Fb|0UemN@CnpIm*wn3+D?GLmWsmFQfB_*q1q6 zZKnl6?ujK&t%LBki+RZ7Y`Z~L6B)~Oz}lmUkEF9`qc2DW=G{m~clTe0?IDPuQvc$W z)PXhZ;FZ)p9`f+L_SF!LhI zlB==o$I_x5dTp_HaZwoen(n?YFtX#>hVj%W3X_i*UHnYfl zR{_b>IMgf9JtcgJWx`ZLq7Oqv?B5<@{bXHb*y7jlR{TYkBcu-fL=FJVX&qyIYnf?IRN$~*CIj6Z2_A`royz@GrsubZ02z$3tf}Dhx0jS7iEO`mRmp8*Q*u;~Et|BHyHW z%gQ}ac!%lp?|daYsV@$l3U)xPEoM}por1+*Yzs7&Z}oZXZQrb>O&!=-^!u1iUT?oU z*m~pJjiDD9|7^}X0`S>L(TbV5C9`M_GFqn>D0pt3pZ=$4o{edq zZ|l32^4-i3yluhGEZxX}E7UHuR_Fs<3~hhm4RDEP zhKJmM9l7%naA#7-~EulS|YNTzV-N8<}SLQ_(4tEo)tkk|uAEOSUYa+CQgALai#Ae55%=iHB&IsZWU-B{DzROX$y@gkYn-3vVy z88MQ?I~lS1wFqc;yf-jfrO->0)!U`OJKt1##ZTl%XV}tiZhS%7hdpVropS=8gk)+G zu>r{kwvMn3Df~Q-YQ^X!7DUVzi)CApwAdcD>|WkqO9$<}(r8O{(mm1S1+eFyWNViV z2D`NJRuQe`hkQ%$8@3$N!V>A?+_}A)HIp(4t8{Qj2(7I4AwZ%L_f30(S);4RX_OBdG3ne1>e=5)xpn$b=3**qty$*)`;v*JmG0Wf8 z99`L*p+co)fAKKqKsgVzYOIaQqY4G`i{fCt)!f-XV@_vl?CQp@r!1p|qxaX?XalbH2xV zXsZL~09F}j)!}fY?NGj5&yLy&vDv+|@lJicMp-u3rcYT5#MbaJZe%#zvaVV>+RD#6 zLbIL;JUZ64^+4yEd(BBkEk$SvBjN{w@qLU9IM1uiLx1-~Z{eFbl`mWFkcz<|qx+ZR zwl2n86WQNM`4My%J{333J#7LNhxz{<$yeNuvp)Q_ePri$S>W1rI7YiVzNzo27(Oce zs_2r>1%%{ZJe7%b*y1g8^uIpA-j@d@*pO5LXsB&T$rWz3x%~~e?=9^<)E>iWyYXha zK*UnmF?NvSz!xz`>meP`!QQjBO26)tb5nwQhf3*{N(A`45~9Ro39w&%dAc9X1yE2V zgm7QjR08Q_X~hD-IbA5?lqw4ip4G2ao{cA)XxLSI%gcY_&zEx5)_T-7Ow8!?0jPi6bhjgIo!sb)&4j#M#`|#0IsRcg~Tpw7b zOpwSKf)$0qL|4Y7T79d128EvzQdQ$sln8tBLi~Bz<{k7CtH-h(*y(t@bvOfogF`qvpDM0n4rRAEuJ6l907TiA*Mm|V7l5A&&Yx=_{Lh6F9Croyd`cYyD;=mkc<_49n}_)X zQHSCj7fKs^!YMT<${aq@P!*_*Bh2UwHgZZ&g-&9A9?W^6(Ay0Kz(9>al8rs#7MqVB z_&sX*-n2V@AgvX(bHa1wSDfcp3g&;C!Y`?Cphy+-Ls~;hLGt`P#~TI2 zhSPK9r))v3>PH7TQCki&2VhsVYvFUfGfbN6^0Sfb$73h_YkrPLM|X7R4`63yk1kF4 z8?CNO`QXcs_x4|?J~q@VXqRwd@>I#UfJ7VXuzN2J6l7I$fFwW5U(Y|+eSZAV5-bPe zleemt&jDfjcVd%wh>tQEI=aXfb}5D;kOgN>8bpeF)Urmw797?5#!5BDIF3@EuT0FY zOyMrp=WOPo0;n%B_3%a+999^X6AZT&fUXF@z(!(UfFy$VEI-%5T6i^yYLu-g0ZjGQ z^H+F)4s0Q5n;ia)cePd*GPvm1c4Q6qj13MY0@^k8qAdb%dTZx?cHn;xbe=#6vY1`F zd=~tBRb&60)gWsCPzzFCbb&b=+y$@YB(KTL-gpkcy+m)Cmju5>)WaM8e5Jx5QS3m_ zHDF^4`2;aK;#4~7*ZC5ii>vuGCBncP*M5GN;<7g(TnFAGpm(x8V!=o^93hDnzo3E! zpCBRM2q7t}3-KEO4nHiUO9&ClQ5R~};J+^rKo)@Qgv4gGMIHG-tvE5LppOKqV-f%OzO` zhLh-yqliqw`Xj2=8Gh~RZP%37#h)L6%*PTb;HWL|Yc7m&Nmc^bo84640213U#2Vex zN_yQ}YD+Wn<+nS*r81yk;M0nT;l6vJ>dhdgoTRZ3hHFcM*^Pvjkop10ow3Em96MXX zJ)H$3yW^}z;l38}xuuRwq+arN@UBbj0)%1Shz$^Ghj@e?!!Rlwl8Z&@&)=9dit==| zplUzfw{~6Dg}Rqq`-!xIBwR(2j;@lha)7HSiEQAI`%TllTPSVor%()0^vLv`Z zI2uwWQl8!a?z{IJ`+<#dkcVH{KD{`wiuyl4iNs1(clr?(Es~;n`YmFE0}q3Uy6*Fu z`8^@Z;EtXFVG^~@`7==oWy~g7CK#3H+YlitmPg-bT+l@Q#4`UR7Ek>WNAG}}(45tX zhesQxSG_z_|3`)9Q1QqZar;tFbvl3Xom@f1fH@9ln$}jpLDzHRYdu&jexhmeUKHb^ zOQ)l$i3s5}!_wQ>U^lBExY~kT#SvIru32jVtcyOar!1yM5~7tqcIWx`O4=?dClgh^mwc9>B>p32&1WRqh-J3`V2lSJf#MKwpncDSU8e>I#)oOn@&EXMLv$>%E5 zDMWLe)#nQR&Ok3Mvp#Ge^gsEZT3oDqXsE@LV*#BT3IvZXrQiGGE4uUE*wem2?ZucI zX8VS*KkD$&#}$Muygw98axfW4;4zy%h%24-Ns$UtDN#x5^JYMI&8-x9L)q#s_wlPP z5s&KcKzp*XFeibbo(RTXQi)Vo`}JNfxCA0J)$Kfh;(d-(nl>^x*6oW3*1X4-OJ5N300|poxcPInP_Ed>UBKhbIf{G<5*ln zP7^90%ciDf6kc6U>bT|Eed^ZMJDDOgn&Ow&_IR)Ph0XDe^Q_t8{ijNUE~;t40Pf8d zA18-G(41}Orrji{_C#R8F(M^wMB>YL{AvH{#d;m5-LlUu_5*dF^+zYgqZeHeC{Hqa z=jPFP9mnhUTC0O6a;~dE|MnUN5q{M!`P+Y4*MRpcJ~QhPe=Ny2qJBkdeL#i8IVH^a zPxiYS!9|$AY$X{ICT*n{@g{wWb;fbs^cg7h!MZ={oZZQxsHWJ>qaUZxN*~h@RtuP{ zGDD{gG}hivu_ez2I?ya>fA>p8q?1~P8kx>omiF4DY?QYT|2wQ7kO-Mu81)|BBdSiH zxAofRrdMi0O*bEP4#y|66<=#^ul=T1fD?3fhNtd!St~7U7fsRn9QVG0c+K`>L3A#X zc#hwm&jEhLZ}L(KtzOK={rAgZ&LZ8K7U33ukv1)b)eI!J<7(5Ke<4VV*jRFrY=Ubd z8ZItZ<0_UuZoF^!YPiMXO*^xLArVYd0vTO;kgk%X`*xJ3FbiLqkPl8ny{gt&eiEE$ zmo&VBUwLbvAebfY;#3hBsUMzjwYZ+dhY&6x=r(43K*fKNzJk6A=wiKC#-C1faQJmV zSmzyos+4`vH&$NoICbJ8Z14mAo@Fj-Zo_WG3;bWzW>s*zqTwy!Yjep`V_P#y_ptiY z$=Lb4a7&cEic|^W)c98HnJ5gsk_|4GQ6z}Ck$oi)^h0!Ett`8+na#T(q*D}|H0nm~ zO-O#Iif&HM@0&F8K)b+~hQ0XInf`)DQToCQK2*0_g+f~!HjQo>h>MLN1#!&is5tf2 z7f&;as(8Foj=0}wh<<~C&!m{>3nm>}ihfnvkmvwn$OX4>CCJVpwhXlpP6yom`#Nqs zT0?nLYO?CD%HQaOFE30uJ=p%!4v&g7`I&J89tC)z$0TXon()!*wH!4;;(|G`#U|AQ zK&4U`qZj#d>9<2)5btWdh((QW4C05ZT|TBBauRYbzRffIaPHCIpCnossqE4dlY#x> zKc>64xo*!m_np*!TC`E57iMin1SiOt+)~QnDk2?Kvn@r`JR00Qk%hm=8isjS;fRTE zdNR}Xg3`b@;%tIi*mLKdl!!W}rbgg2=kD8&FF(T1y7FkJED$eE?xd2($MUh{iryja z-lw}C<-Nt&`RyepW-DmD^;yz&fS0supuhqp~ zANM2gz=M3By%&*O2aS4lV4`60Wwe^5=Jy<@9^Nx5N-PuWfV_+);jbUB)=FJ29y{)j zB&g8`>$nL+F68!m*#7{{cQ1vX4DQO?Lz%;!cQ*HQkLcL zgsH$V>)3{}HPOoJL6dBU$LiG8N0n`S_elBF(6A+l`Q9i?wY~IF!@LCCbu>!l^n`M; zK%Fak*wEU{e14MV9?(2m)>g~fh}<)b2u6%^%%0{uroBYl>BI-vT;(M(zGP%=S-9li zRd>{x{tg#iIF-0=UKT&Wk!tZnt)Av&oorsy1U7V(u;zMyMvKCvUiScixpgo5>)uW1;oe! zre9^N_#lrb;Ar>Yf0l?a;IK&3WpCi1S{ZqrqjJ2&!C!w$C}aq?vl9~{kbz&oX!WMh-p`8y4QJ@ud z+KN+*F#=lTDTM_$gsucSD22fb1#v>p0E8MlQ50jN6mT27h&2Q;Sv5T!FN22(Lyi5- z_z6Q+6e*rPBMl*g_?bG)0g4mN1gXX+BCKvUz~nVh(>&93fYI;=GSsQ#pW3sw+B3iC zVYcUGu`*%t;AOJ6eQr~vd2f#jIb-&D!G-JE5k0&WnO@{d>Kr5JMI_`$ zq-t72XZi8fIUzfIjd(T-$G04ka{fO3qv(Gl0+)D#UmTf>I%s`WF6xO?lxr~WfZ_@e zvC{|jbTJb{9FPR&b

    H$uLA`F5+!tnT2@inBzc-WG;SQ#$h%(3JnebPMqGRMX;WEvcdJnfA&wiYhndQRP8&LSg9A)3MA(W$AkE0weq&Lic>YbL{4%X z)!;a%R}n;t?G-QYIx#dl&E3)`nNnKG`fz!!_D@6UHuhu7WUvN+5dDqDrvMGEOVQo$=k=5Krqz$S1~`9# znk5?uTKTCDSkmF z1v&#v{^(Nvtd8y_{|UH)NpA$-%OI}yc`#6eFc9|F6NXX~k{*)^Fnf#`(rbQWo0jJ! zHOl&=TTo}ze~vESfxfr0C0#EgFJQE3V?;(|;uZ1I)xcyQ%B^4jZPBntaau2jH){%ZPEyf0t%lnx;eHrU7H- zh?aWHLelSEq~`qs2ZI81V^{BIxj^nPoHMB2Y`u7;i+)3dxoZ6;u07TPsqLkUZC#FS z#l^#TxhaO=XB;_GpG(fUgJXj8brpG1f|J6zn_q)d9vm9+*?uS9F<`I`oZ#_;(H(2mCGYJUTM{jm zG3eipvn!xi*0q@e41?0gEAL!jlhm7_61sH_-23Of>gRF}M-&M1sMnbTwJ0$VGiTJj z$Ynnly-XTnS1tW&9}pRv&2PFjL0`HK`}zdmiEA@G7#;77-XXp^eJq}&kpH3~^6iYj z8Ck%mM1-r1Kp$6RP@_1fP!O3GzFVSE z$;1zOp>K!hv6 z5;ThFeywN^E!i>hD6S?T@0XYezZmf^kr6^P1BpN0S4GEs4paXU_qhoXL)R1{GaGK$ z82f6Lrc&0$u1QGCEn!zE9tDs05q1lhbqtwJbiR#o6DE!OqMp*2)cX%Qm_?H*oE)^C zSR|YzM-e(A6hS{j9gEcHK)DHV8YJtv{VZ!r9hwOmn~j}HN}CrJSZa!sa!dD0imq#N zCUHpXw8`Mf$%t}`thhyZCEcdK63&27X1(&OS24)aPlCQk^5eTsmC?#(6XEBi%-N*) zK_&8)?v7Ygo+j47SK6IV-aVBfIo(7!6zk5tqG&(bBI>IM-#3x;R}Bd`w+Zxj_adfr zF3kmR)(cRxxfbq8*3E?tZp_Gtg1F}FMJba@Lz0gXqS`k_Rl<3Q>xkl*yJ9X-X|1+} zA7y5cc4l6)bAL0ibgq;IR7R&-_J%JSB$BdBS)jyj0RK_W1}b~&UY6!w@n;UdKRFKF zqq3&C@?5)6crMb`ou3RPT1l0{g{_m%cUM9nS}ZfeMhz(9)v2LNsZpYg@0`n$5=F|T z)GB$r5}+z%OesUKq!h~BqsxodzrW8`pRfEh4^`!6`^N7kr&H#t^J;Vs7>J}x7I}MF zEAU%8Gt?s`MyVl6wCT^crj+}pA38srzctr1HNOx6R_V0FiIxcWH?bM@X%A@_4NlN1{#x`sBHl-OhN|-p9 znsWsT(a`Lir)oxtvQR(#q)(;SW}v2l;jmM4b{o?2rnVoCw|CBWfppujJoy!!z;nh8=aM!{uhwa058zMOYotEO00*@ zvqw%0h-ZM=rrc+cz*7k#PRQJTLqzX2>+=Yt1z>6*OO_}8sM6#W=}h54GEV3Tego)! zBPBZ$cwqeW307opULY3rFiwDUf1zAEtzFBj!|hZf8j$J^<5h~bRhp+&dWp6Fyw}*; z)?PjPyCv4&c&`h$t&2acOG#|Vd2hUJ+jwiVqTjlrPSahbH-fjZX(+K};=N_jwq^aa zWiPSq?7i*Qw(a$_?IW=h;Jstvjg_?Bo9D6VMgHX+x0mH|^95pQ#jLe8?P(W}X)i84 zHmPmTkYw-U*S*!Cj;3^#Uu|);n{cB-dbsB2u)(dLvicBfL zBf^9#G8PU5J>)Mn>q**BiXdutVHd)pl8k0T>;Ja4a4bhLhF$M(ZP7%5TF$$)cPRBj zsZ0s`qm85~=216IoDVcg^`)~l<`czw1NCL|A%?4lhj%t5!|8hMJzfJ170c~N5Du+! zqg{8SW6RuQkYLGDWgw$cx^h$X=0M^tL;l-_^2Hv61f9;1a&ztOMBztOIai+Y{eP84 z1L=p9>svl)WPVRCoGSK~JN$6yyw%fA*ZX2P^oLuU&bLQ%I7V21HDB(}j=K}1 zTlQ8hD|6a%zwGUgV#*>t>EykNcV`yNNXq=AqEe}`kp1dG0iEdbqEpL)q7F@^<>IcF z2$D=q-#{0}xZyyKqegP6(CnOFA3T_fr>ld@^2)za?q}9GygT}Jvu1TI#e71O48jvg+KuW%oBYh|?h(KY{sFnz&_v z&I1jUVqeld+{g2~&o}R&PiR}$q(3*U6ruK)?41K z=t&`C58k)ns9`cc{9Qsu0&^ZY+K2BOj?%Et<_muJ2T02tQMD?Fgaae|)Lri0qZavA z>Gn`f73;N-ulncQ@E4fmhWYVwy`BzcP&Lt=Rju7`@3 zhnz=BfSIQkPCqk zXB+qmBzK^VIR**W!g`)z+g5>%STyhP1B9Ep{8=@!-GwSY@H1aR z#J>Z4=Y!c?)GHJt3!+r}PmsMEFA!}-S5kH~f@WnX_^fDoyUw$v_#C6|Bqe=w0e^cDz zrNa*po0P(p2Yh`4fnvG>2m#LASPIy?T>2P?0mL(gdy_Q*&Ksjnq8fk~rooWQ;7p7= z4Hy1n;4CoK4oVL**aF13U_`K5E47Bi zLOQ1MrR{&u`umee<{8tAw`!!Y=hUeBqT3)NE7zA%=cLIi9GtM&fbI}*7TS_ zAiDz{q1yg}G5I^sm$2ZQ9T?VK6m5MzINL~DC2y}8k@Rzpslq$uKh(qD#Uo0LN`_y3 z2BG)?P8%y`aE)$;Rv;4ed^3O;1VKzAf4y9SC20ps6QC?JeYs?9A?lUikI?{rMC4Ks zJ~e-G#r?U${C$r-1A1HwDmDCr4l14l82Fn0nQLVr{)pc}!Zhl`Li{;1e?dX=uLAI; zBC;Mq1M_nTXVqKW9V(yp!g6_YM|pgA)B75DEDulvaR63mx8L{Skw#(3C9VMZtdSs% zeGm_ECk8+b+nZ4h1WsJRS&JN?M$Un-_&YGoUl+Y3J@BPp$aJsts>Gpk?r%B-pmkqj zQo003TvV>Spu3V1BRTQ+k^q+HPgJ_!Wg%40wozz~PM34SPu=-k28>8kwpubPZ|#ljjd1dnH5Qs)LTEsGqy7z5d;VwHJ{v z>~ttHbmXGHF+p*Q2EkTG2T)&8%O3eqmZ|xHHdZmYU3X~4Gwt$tD0PIvK zNP83w%N=F~X9WV5PJn*4_Q)$gvE7_Q+S*1&U6X zsx?ON9DQTt1OP9Hn&mj*ge6u8i~V9M<0F;kaXK{HpRPavMy)Tw*I$@a#z-3V#&4Ja zfFCazy$#0azPR@%c>i74*ndv-A?=QYfl=JySehBWJ#6V%nFRbqvo&G1~iFm>A%lFGs8AeAqX0Ec6pq2p84PSqlGPaQc|jvFZdu3F0-L;vFT{ z0R-gMbt;#&1$mr^TxurXfI5!Q{8)?+1jMEAkb=GptgD!U+)|jPdo2{?D^!kHutgf( zzM^8IvatA7og%2~Z>py*J!A(_I#lf}N^C4&nMQ)CQk6pGDXTZ@^r!Vh^E>#`PKJKN z&i2SrkvcF>Mxx_|3O)ib&moHg97Pz{V)dviyfj1_PJU&v0}y0NJHs%-@sYqxe8EbL z@JNvbA~OP@q1D9y3Nf=}1aEvGC~+)#CRVg?G#O&3NIE0h5zH5@LwfK^xN}O?KF&Lu z*=f?*MlL~Jp_l)H%s{-_mrSjd*I7)hAKM^Foq)1rJ~5su@=gZJYnpg)X2IErDHo5U^ZS}PpC zDhfUkm8uW|rJ!P@h{0ndb^I2Q6cxo*6b;CESA81sCF^H3eT;NJ_e21t&@H}5Q%qLl zyQY$AX1}<{zwsD{~=EBmMbbTZfcEseq?eh2W|CgX z+vIBD6ywI^dbgBDVXE4hB;|`_vG|lF#gyN|spi1c10lYjr-?l;BD!Z&hlNQ8go(<2 zNWLdd9=^fua$~X41}PcF$%_&Sr1U#!5DVP-eeQu=>jS z3QId@b=HmSO~UDGR?38oRW@48cX>RNd8!Fg7_8)o<_!Lc!br-ZXpy2=?V@=1qQvB) zic2Ei<+vr6{%tNr4bGJg-<6J1mW_*)O=_1-yO&M6=lroOO^E+F zb62*4pe$b#Dc{g8-*PYCNiN@;%bR;1aEBG9$&ByotmFsvWlC!y1TsU zsm;#L)z;S42^cgrHU98Xqp)GIy`pw&@8am};yfzZbW~9%P$SBhqV=6DyAvv{EIQxS2H`#w(q)`6Clc zm$aypx5O$l3$-<7G;{e!*G5+kGTAxtlXE$#4OWhZ$qjVHuhMTU#4P zM-O{P8(aT7`oZ}0#?#Y9a&qd`)y4GmU~+Qq)z!oF^yJ*!#?sQl+1bP0-Sg&$;c?}` zz2`{y(#F}@#qjv#^z_2?^v2xW!qd~k`1Hcj(ZSZy!O_vi-v8E%t*wQ-yNkWO4FCXu zjRK%vP%BnucKTrxQBL+&X2}E|C7k*(G9?&PgD~DP4+RO4>@D=y6pUnu+OO6AKLSe_ z+Xek-iB^rJxYpF_WQ9Rj$p5deNFUDGmCQHT5mX15pDr&X_)xqdOF$yAvBBP+r#1@% ziFHfAf=5!e69{6_C=*nF;DQl|$BMIs!M+%*v;nuq|EVQP87lvuT2f=RJe=li9~vJQ ziVD*Ca@lacGXnp=AQF@0_K;p@lZ35KLJT$IYy?dvBk z$2d1z(BoFIDWzT<{(s7RZ71kI6AbBJz9Oxg7FoBd89HgjJx8#O8xGHXuL!H|PpFc{ zBtZaj7F^~{jvcR5cp<}A^GLy?oApSA*S8z7pKWe8<8jIxg#+lG^jj@$hlRFs6Kw8w z3k%Bc_DUOQ8{1PH)3Zg*?kzpQcY|UsLpd!+_s1PrTn{JRWXD2(TP9jnz^8LZ`>w+> zKU$9ZuWcSKXUr-duNL4DB4_bfkin6kXLtK_%9s>DRc6$~#XnorgnP77=;2TD|hsrMEF%5Bf0v36vLk-HU>9oh5I^%qOZ{qn+LSdHdd)`8%<#M6F(?! z7Pf-oZ^Gmge^%vHDIrCCSE&;-AZYn$2fq{UY$A5qmj#AvMIcU2g7&c){-O*du`7LL zPl6R?vtK6kbu){c{!sgwOPe1|704iMC*H}eHNWKn9D5K z->>3+7NeT8F~V>wCo3Nv6{W$*_H4B%L7v4`{>#cNVWplsBSzt4NnV{xg(G zk(@s1uk+8GxJKoC-h}=^Q<3we(b`-XvL382LKyXpQ<1`OOS0k(rg~zJtSNu*+hK>~ z^VA(>GtPqB=K;4JG-NP~r{qPAcBv z(Q2l=stkV5sqm{cx_M@(+~x7*+>!fr%L*Qs$vU_8MEo?Q$hyp(>SS)Vne0W~VVUQ) zlKv9mb=%F*vnsH+@N{?G4ggo$Hz=*3QQdT4t5o`u=>kthZaVRgUb`WNJeDrX6Y5Mi z{$ty>AJk-)O@o4~f)$k42s1viNKq*;zIl+-sBVmRFM5D;TV&oX-Xh;2G>=-9z5R9=8PAsndcPwL;vETE zsKF{&*pgHoAB_y>XYS(MeJ4sZW~||aMNwv|prhUESFc?tImGW0eK)z@?L_|OP*~-D z)|>{DeB?-d!dk;&Ql_M+v?8#x6z?J`ZlvRik`h)W z4EX)gTz5WdxR(iuo!fDg_1vsZ&MA}>_E_T>EJOV;Y*e`V3JnKJMY}e9g)M96bB>MY zN5#_70KYN|fLJ4vu~7J(01@Sg7h0LPWGg~F4a_G52A=C=1^|!{tQvk5 zmbw)?dviuMhyz0su!`^qC%> zb{;fb^Gw_d>I-pMqz^&jf|-P>0_LjE2=4-o1(uNL0^%Q!0>bQ`mW=xz=ujU9O3nGV z%nHB^A9A$q@&k}p3XP820~$T%(+TwFgcu@#M9>E`8%PVTvRy=b=n@)vBcSai)bB-Y zo8@w5FYw}ZEde(Yle`0l&JV>%4KqR~P;5J6g!!$R-2;pu5_sK)w(AH+%-{M=Qw{oW zOOMqM`)2DRC<>A`JRE>NXe|+m$qfS$&D>EH{sSCGP^|lJmzp;;xQy3`J3gIDt_%6u zJ^eG3=`o>%f&~6q|8en%ha<>fAkvlZB7$&!JHW4eB>88zo&=viE&%=xfV+aLL=Ez# z5E$3ojk3>i&D3{E9Pp=CKLMN zil7t%m(1{ezz5<2;EPUDXb725u^MpmP2jPq6r-S%T`(7etE>5r{j4dP0=`eGYXD2I z{l2-U*vxlSb?D7Ev_c`r<;XCCN>@@1znir{nRt7H{IEaQkadF~0R@jAt`P8T*tMV) zA-3IZb-)P>UJZvN3If#>Tqzo?0E$klq}(%R_RNjQ;VV1>H4t+q0{*?hTN;~N45bC= z60q*8w_4*4inzuDMS3c_LS)!LxcER`Zh)fT4;43sI9Ao2dW$^)Z>boMpu}KOCuLIZ zAQQU~(6!@xGpk=(PUsy@SorQIYEB>nG!Qr1P%u}RAOPJCDBbISN(y@a8S~mM0z<=z zaRn~S=!{-qPiBCy`YnX^fg24&%@)%wavN%E+ix5EFAmoZ$Os5Mfnt#10~OQ&WOm>& zO-x2^01tjL@vMq^Z=w{L{cIm#8yfHP1qPIX{QQzI)es-$20qmUpwGIVyFBAGl7wTx zAurq*xt*`!;LCVEGN=c)84zxsP|xg!k?E1?mXItAMu4Co(o7HMq@){EG?)jDo-k|w zv)?=HE#w-O+;Z(0#+J;Z`B97r(W(HMGq)wA5IX#lT)>trW)yE@;bTmiWZv&_vlb=n z=e7n*M#p#Rck$`C&4f4cr78f>N8QL9@HUHplTGpBKTJ&2K)fq%R&N20!F)4t*r?ROweN+5GbLahM6=wDu;dA2gP2ZtbdGbm)t z1^gR}8_OK+-E1BKH=yVsQQdJ;tXk?oqS z!vJpVph7J#tVqvFtUQJjSAZjMjLZ|)z|o4$jUh6>lm+7SFIWK|sPZ}R#sS;~2QxPo zal0!|zqR7U2cB@F>Fot8Hn~Qd0kOzEd7W{qRu@R^x3GY zhRmevQeJK^0yuyY2C__cQ*>9(wyd1|``i#$`pMEoK?uBS034@?n~}wFN*+VaH$p zhoQ3!YwC@|@L9k%VlZ;_=tfFu+-Mb$Qb`>pC>_$UjT};=L*P$`fTW5FGD-o15NQ+; zl@t&p4EE>i`FO7Lp6mKO@AJFw#0X=>Xl|hGntISg@_lX~GSt&+9uxj4929o9G)g*W zR+4T73o+i!tP4$oP#&MhgUmx%zRg7#+Coqk(TmbqM`fUEBY?aX`A!P1R2@ViHkT65 zUGXX{s4pyDFT9sbh(9=E9bzE|hm9iNRc37?U}J@`m%Sd`4Po~O&D?;DFtE7$lfO%Y zn@38gYiqbD~TRP$k*Xvp$53h#LvdKq3UveX)-9|sDaSS4FQ>iM%~A;V<2?Ib4s+O zZeTyPSq7*dK4VM!>Ok4aVNSohPxT^$9Ow&-At9lr7V152-1SemlA7)R6Y}(XX%Y%; zsZ@E;M=-Z;?}=}(?`Y4S>|U`5Z%(O)Q2jby176QM<#-=nE(|JkxX&g<=OPn%ZoWt4 zMMt4s%y~tS|Bc|%I}e9u3jJP(Y)v=QmY$?cKQXyvOp5-FG(j+mW{TFzh~^VOxtWZ zDuWt@hqN-Vw7_~kA2MHf-Za0P?NJ-Lj)kDGKAl>Tk6#nBl6rSSh)R52ph%FsbV;K} z>aU2L`(kt;a9P{#Q&0b&uE1}o6D8JT?~07HTtw5Zk`%*m-c!PI_8XY zx=;FY-%t{y+`{YyWPPe9xE?b5Mp0m$O|wP=DAq)6YoK&1m?JsZP_0kps0jTcPbq9P z1I}^@gB*?!{NvBk@_k@qKBR75#mFx5nMeF)ej$rzB!sh1gZ(8t-luLOJVlC7cl4^! zH>s>natO`wM&u-lDOn|Rb236IO5w6MdX@Cc0ZWTQ+J?N2qWCkNg)jp1@106Qy@KRM?+t6Et6&x~0W8jS<7}7x3BIZR? z#=plRWuQ1R$enfa9WM#%Iysqg?s*i{ipj61c4qd%bEgsD+k=mSQsad7yYXTR54iC0 zY3jgD<|!qLh?jIK8~!sd)d7l-_qpF^>ep5P#u7&KHVe{Jv9nt3$n85Z zZHwN^4UNc4gl|bwgCepe8Z)hD(Ku{9l2Vk@e828UD{hDOq%c(X`Lp{fEunn{DK$e3 zPvc7Gom2s1dkR%%kNXa#0v)CJ_>(F&umtho=3$%h{JPD#h*PV@@)#)%t*Qr|Nba$Q zCwJ3Gw)y_wSI0wG9;Jice;e=ej#80{^Ln0#mOOY_L?FEm1~80t>nZCWy(kH~pGAn_ zrkA$-y7QjD-Fn@@4Es@64I^)|h9P}prS1mg*5;t!Jpa#x_#F!=)`|V&1h{g8{MEpg z3ZK6tV}oj&hYwT#ZO)DAgkFPtt5zqpCq{!|53a(WqNp2jTDxvqiBx(PSaU$eri$?F zuI2kQf&}JGV$<7oCXWE3PZXhDJFL8*%H6Z2bB>3LR^)7AYgD%BI*Ck(0nAa7@B?)Sr0uQ6ZLTDDZ{f!9>Dza3q1&KXhkk9v*iYRg*f&8mx2?YB zd?c>+&ns-ALE?8Q7UEMg$2Wbur-M}g?%i%>Zlkh94H2*bwrEM9oT zAGU3p4vVm4ge?mVfNbt!mC#NmDkE5ne;N%K+}0SN$sYt zm+&Qmk^qhQx2u0y?wII?rHN>6u+?SR#|KuXj4PMx8w=VttS$5t7#bQcTpN)sWD+S$ zJgq8|EJ4XpiS)@YQ4_K3Un{O?@kpo>OCh!sOT}}l7ULBVt5iU1Peh9Nq9a|3@hlL< z=u5*U(_1R>@%E->+z-bWsi4bM`%i?=%_IuW z=r#C@{daH1_4}}tbv|Lk#%3W%=<$cSOg&DCy0`sH3MlOtDS#Yo?Vjbj zXUn#bu+njA8~k)+Eq3YHbzxxg%r-|_N#Yk4zvw}iw($3MmS&=6eeN>Z*V@61f%M8Q zlz8vSvmlevu1ZjE2=l1e0TB_5ca{IS>Zwpxm_q+E@Hxqms1+K9_lXg?S-}LwO8?zUHqF8D zNm>z?7CcO++TLQHxXUx6t)MsKj5Tf9Kq$1;J<(aC4YxDPMvYZ&gPXgl=ZzQUP5Pnj zOq}&a6E7aUh05&m5a~@Jx-!m}Vxi=*i&bTyptOFBsMIG9ImQ3x2>h!6*V=z@1=>=D z&jFh%FS%Dkp*f|1siWWv~VxPGmy%*bR-9)9)Q*MUEFrIiBtr-E#3& zJz`o<(G4O+#z@c$N}JfLD*nfVI$Jrfmo&oK4-@JJAPPj%y2sp{4$pwjFqd*p#w1o<|x)1-A6G7$7(Vhm9yyHgYL6u+rdQM+>ZWD4nxLV%l4x8Ou zs>(RwmN&F54J~%NH(%mjy;<~KoBu9MWF1acE_dC%ZmssQz2=waC=RGwT;=1I!rpuZ zLccD0Hq|c?(wZiqRrcz4$fMixjp9wFmxUbWKG2T@27sMo`E%PRzlA*Q{^wJKb(pnt z4rzbA$l)31u(-)pm*ADW5*Tt+OR=+UG{{G2g~hSY9+Mj07{bMs;J~ii^`)j9pIxcL8oEE zPN#tduN}W3Ui-YXE`5>vy6vmV_wdo^)1b2X)z#LQ8b1O*)tA7W)~|R(e2~=*zRvAr zV?0W@JW&#JuhGM4v;HusE4$mjKJNa;TH^84yO@xU+U_xn{NS0vAN~yuPCtTbBNrWB zhZw*3C*yza#p1uyP%11&GOV`!(^2V8C*#e%6c6o1#6^$(r+GU+eWSk06T+)6p1#Y> zADJnP4IfLod2l&Y{d?_7_*nYQUkx5QLs$HM*AdEI{%Ws{-UgjU%v_}VmFz)tpBDc5 zXO?gHu)n$MTYkwO!q&^3rl`wLl4((E#sNs(?s%*Li^+mn*>EBUuFtApd7`7Koq^@;LaZ zUVNZ{Fj@5+T%lBdDYah^s>9@cev@6VzygzAmimke{FFj8#ZsHqYdF7%kDK83BHN0H z$nLCc#4w|Tvea=zy+KrtAG}<^i|mJIIp2{CnQ6Sx$f3qdx_p zwtC3T@e@&&h0Oa|c&kGnuWfRffO>VD-Q$vafyWtO?i}?0i;_lzXx}YZ63Z$Wk2#q| zsmgf6;&FDxa@b*5O`yHuN!dfmxZIRudY?kH?VXfwo~WH+M&a^?Okx#kD3y^ljYR{N z@|K%>4ntw;y*dC$E3$i&6c25YLoSBWGl`S^@Z0w6*ptLy&vb~%xg`RsAZ-9i4;o2} zg00OYwLBx18a#+gW*J2TeQ>6y9VY(`u!*eZ&xoA!xpZl5tn4is*0=d{ zz~#v@a#vXeB+T@+Cjs6%z_T^-rdlrbJ~7v80-h3_&RDU)OOb={yp#pw_(q)s zroP0$4EB_B!)@LoaZQ*p=V!Xggz(JT4%)V)$v1-gq$?gOMeSuoF%OqHv?$XqoLC;Jqpz!gbmXjss$xSfU#%FKM; z!Q4grX=mj9NaB0H*d#E?GCd2#zju`p4G<_39ZFp=b}|u-27wD~@(pT&DY02hW_C`D zZqPJE8^u3TMDxozYB+dR2Rn#o@Ne+dQ?W`rCD2V-=B+R?90R0RT!ZW7JbMmU+b0W4 z19kR{2gPF{AZ8y<()sXYetYJpro3nYqC3AyV%U8jA{n%1ihe8=QhiloQyl!Q zWkP)l5oNr=6zz@rDhxCqH|_Dm*oLcafSBXP8!8`O3hNv`iiM4;5=fQI=YQfwT>37L zU7L9q3{UW{WEF9YD60`q9;Hp~jvDy1e!kpYzujg>$M(%7`Fm%Ja4%A(Z=mjcK`4H@ zYpmg`c;*$mSFKl`~qlx*+2Ro)Lv4UZGKi0}y8I0J+}TOrZr z?fi3y?$vkQ%zsrZ6W+i6ZQB$9k9e!fP9}jZ7zgo=!p;EU?ynm2tOas?s@$w_fFg)} z2|cJN%Tq*TIvI0lg3~;tnYsfj!NVzti3!*)&L&65Jeu1oB5u7cwskjbqCyaHJr zHnvfGvb(6ckqee0isphq*AcOIhbPU3SU(p2Cq%Ak*N9R+z0db+J`DRGpRROgI$ikm6 z1Z`5r?_(Zqf)#WhS?$G-c)%eXbSTS!>Nwvj zRA$bsFO}a=;~Ah>16QZSoV<$i`S$Zzk4&Bm?Wj_{&5_sXeoh7>3_{C1k{(mPE<2O>fE`4B@AUwuHiN? zC?j}WydFtSi_psrP|q+3W@Rtq;svrboE6?bw+7cF{rl}IAT{Uu>Rr^<(1i1B^Rj~Vn9q`5BWg-YJi0jhOA-4Q z-HEAV{!R>YKv>rMUDk=UyT5aUk`q`)i973p=a8CXk$dRTnbuozEVu7gB}y$w>B@`} z8NIorF17+Ca!j{0lfLz*z3P-CY^-_j@_e+=-2BcVQ%g@nF3Of*r=(r*+dcZh$uKb-gS zGy&ogr4lEpbbz+6l*(nL%*RCK;(4T~VqH+d1 zFOosb;6A?{;Sa%U-<98)XNvgitD-ONy$)eZx&TIfZplbMG)Ng_Gn8gS#_lnwm2f}v z51Yvl>AgB0FpO42?K80TBO5FSf7WId?ezP6vI+ASUR@7fyq@|xd$Qg^qtjcZa0Sa+ob ztuLGtJ)a!fM~p?KKzz7}nns+@?v5_KXPkEfXCZmY(&^nLFCR%mMbY;4(=% z#A#fo@b^d0!RJ|=XlCCt4y4~wO5mNEeE}68qnZVGvNTfsxGBjOhWV{6^YSU+8WDN7 zg0s-Ic;ae*@;fjy zV!qJi&C({;BT)YWWvm4melzvW6dX#G)+Hb_cEl(wC-?=2ip}|ep!aoasojSRV5LU$ zq6la!CmE=A7C@*%w>_4v^`Diom~A?JXrN8riKUiGo3O*KkF%3X0q2nR+X zQ*%UCs^|&18p};rJXXXYiAb0yR@$7QH|P%EP5=9k#V&^(t(gIT4oVlmpMNa6M$&|R zKf`H1(mWmZfvMtz9&;T^aQw$1IarJ7s0OJM)!!CL>#(`LS$_4KjM) zjAz|D?t?lAc_H0my~}9q0%}F9gmjczIUTo~s*br%Geu)aW0~l(M5shUS^Vct&lR0{ z&oII$kxnPcCiM^>i(Je$Pg7%?a^{Icao}SQsyWpJbwJUrs0s4}7(D+dduo4Udu_^OqobYy}%zM>J)d z9?wO{K6-YTbTjzRNrX^KFa3l6ntyLI{6}818<`0Iug^Lo7|j*G>>_&l<+}^VLl2R} zFO45=o5x6eEqiKPu4$DHZHl)xR(IOOw2P#lU(vaII^=PmvuLR4rh2rAZScV(hucL5 z1hx(&QM0hXML)%9b|))~uFk*jdKO(q3WCpmF)c=Bc;~`&>}(C0yG?fIsoplN;lnFr z-lc7mUqn7nOH?Xw+wEi4P~+nW`Bx3W$`AhdkNh$3+@p+zM+Q8hwW+p0vb>^m{^K== z==0&b)i)X=`y&3Gj~WPkcPkj{8hv5zP6MGkUhPj8D#KFn;B z{vEYMXEV=#3g?SaUrF{mS{=Wyb*jFac_sbvR5!z^;8NiS$tO!M%uhAe%5UjZtyMpW z(cDPCft>$Z;C1>ty!dE4eB<$ajMk55n=iF?o;=dMzPU-&?b>qv@JZ|EuxyX^{yVMa zL&8qfQ(f(?!Jz2B`?Fp>I!B9<8BqsvbXWgvPI0IFJ6dn((fzai;@rJsWZKo3Z{PmV z?w|fS+3dMU``0c+>#Z@qNS*b&c)TwJX0M~tDfj3k{(5uw-G6#-@ zCIrC~6(oCmEd6!3-sp`S`rkZ@B}!WS|8#j@@_9<7t zdK4weNLz$0JM0B4t2+J>M5Lv-GhO(mMe_A75w3PmH3@UeL<^>snL4tbd{%4fZEexN z_rnyWV^FD%?4rw7{l{Jiw>Iwwq-L_tqRJAUlP9k^K#&Un2dG($QCKkyMo^xO}moZ zYW=7!?@5>Yw*Bzq8}B_b+k(Xu;-ud?iQr!OX-!@4n+J;D_edm2|g(tv%6$d!P1^?$Wml^`#c-vQ~iR` z#n%>xb?g`E(!Ll3tXEKcVFl9Fj~r60^(z4b z^I9XZ<&4FhUvL%jve0|;FfseWR^`L%O?O#-j3>5^IWwPNAOeAyx7DOw1B^id*)5sY zN=#0wjZ2mBo?C6|3^%^Xk;TPGkkL+hWmVkm5RdN4ghG!Ypv&kaU8^y=s45?!FSd{p zkw47h6dc0UQjgb)0ud))D;T;oLLjeRMwjzr8SeVnWV7Bc{%B6t)OH!xFlv$BB1#)q zjd)>ECuZf~i6)9D38vc;CqZ0-ZP@A~v11_QmZ;A+xIR~f?Bd#pbGxf>AJS%*PTWAR z;4>NkO)OJTtV@893va2fgQ0;44QsMMnGvWD}f5-Vl@t1F2Z$B z9aMFHU1S{cPZANs(jm>U?7%qvy&(`2KNib3ho!&hBU1{0kGWw6jZ)L}oU#+a!x zXTLhpem6{N?~5ObH$7_TBO{axnw$oOA$!Du3!zAPg;Dh}W(g9-3Fh8#UK4-_wJm4#qQo(%Q=q-y01ch7B(?)moLF5YZT?3K6zQU~e7+L`Q{PP# zztE5_CWaF_pJ;3~O#LBNP&xn9ypJV@O4LY1M2a*)x}iWsY%T&&LvmKeZ`3 z&l(euEf}zbCzVfQ*T~6q%rS(~^d0G=u}A;!G!CZt_erG3x>=a1Z!r+ikwxr-rjA5I zW}jTY>^@;+K)Sw7Eb`ki{hRKypl&q+FlBvPMfYbeXA`3L*%ng$h7w=kt9KOBmLSZ;KdlIl>AbCX|eJDUQ1{dLjQ=li2z2`60ZhIYN-= z&&}EbSN@B6aVzWz1C|v4wlIwBysrgxsUVgu0P01<05zUqYD9!oKfKn$Gw1g*3tS$kk36StjM+zgk@-H`QoW>^{0H)G`)OO>;bI+we zm<=2&xfgTo4L%l}N`Ks3faeFm(MIIR!(zm6Ttpmd3qa%h1Xc-l<~acGBfuGsW#__i5POkPIMFIl zoW@KX2`e^GDpL{%H>C=Tfetu{^c;Y87^Ga-kjIk>-GT^{Epk+i@IBb9L_Vba>L)IL*zNeAVg#D3k@ibwgY$zfHeZJIwIp=KwDLe z(I3F%0El2BBOE|cuptN{0j=rW6HcTA5Dl}0F{=RVEtdT+mV1H37zG&g(F;B&3VwpX z-FgLbfHgx07FHK<6o3H0@J=f7FIM!xR3;ZUeGSJDyl7=hMBBs$F+p`aMI<9!nD~j> zCKU+peqBeNKf@3Q^+6pxsN9LF#gCm{9MD7pu1s@K19BjNoG)+24|ya6!sEPI=YX*| zd);F67!QcQPtAW;#psLO-61VoDyt(PPELel`x<+Bp)b?u%4R_w*Lga=xU$i(Rl-=; z8K_Pd#E49VLoZFQPlHrfKvh)hSN&@K)z_yI=(m>G7M-L{mh=~Ge&hfg=6$?lB>m1f zEi@-PA(kk9fEC}u!u|pRVMGRi%CifHive&OK5ZzGVTLN=PlVXw_znOBt2pL>%2Gm`c`dRHh-&?KC&{l3o}QgplgJ{*ldr2`f$p_*Ev~Dm6AojA%xPkqtC@_&>p_lx%l))Cq8&(TDbL0HQ zqN1?eR0xkE8i4_Tw?zFmfRTg5C?(@P`APptuMR&L4!;pXBJnRkN_E{>w&FBZabOBn zZN^z9+z>QrxX&X%IJrZ-`6EtS{k3itK)JvzZ;utX>8GaxhxO;CQLFC#2gk4J z3;^6iafGHXbgHkW7bnVc^Ed|Ll)e$QrRsE9X--ZY#F1^!gwr*Z37l&Iwnn^HGfPzJ z74SIL0%!6W&V)50_p7BAA{Oj|P8^Yr)bT-C?Xki-&N+hY&Dp`&3c1TG!@d1bPi*9D z`pxl4*>UNXJ##k2jeAdeUBo~ze=P3;q>MqPoL8ozLI(L)0LEH}mcVl1OCdHJ)wefl zLN*?W5IMz&umL$(JP77}_hH3y`6F+=IRM77(Kxlia&TrFc*sDZ);48XNF}Mfgb3KU zGpQRh5bEsO?5S-R8V&|Ub#mgp)CY3w>z&6)m6yCgw)|C2)I(xe91Co}CW8;JOW# zHAtx-KRCFT&(|kp7Aw}-ADFl;AASX7;do<$lyo0}6i~64hPIb+3xeQ97iivB!i<`~ z98{TvsB>h~mU6k@pXuTyJLM$VorbpkNY+$XeZRRnA*;Q#3362E`Gyv?rwXf!2wXogncO>Xqjyb^wjO7K3lHyycPVI_@bic1f9URq4?&;`@n}qoHa}Hs6}!VW zu+vw+dpUFXe%79z&AMD4ivfYeU?T`4VnbSYblh;T_+H&E>WI-f9{f3+6poi~ezj?j zMGC}CPh_j>W$6R}F&v+P9=qqXZmJ~X5DA!}`iI|qsENjKEC>nm!CSB}C|1q14=F}u zBm(d?8T3Y_*kXUreUYt1L*#McJhfN1tR5cq=*1Hw@vS%y-$w){WKm2q&WIHVPb=bx zzg9Qvk4$xEf_@larf%KD4&3o#hx(tAHGdG;lK zU~ZtJs7#b{LL41-Z!s=pqE!Gw)t~V0KpF6sWTC&3QUR0Z(cqlG>+XQzTVKalKL=gK&-433YI*$j~Uu`1>Z=SArR zJgD(TN4#1dfj7=$p8AOA`O`~f6k zp`T@;_l&ftb#N%)4}x-v$8v4wFCu72@t5s^`+WaGlnljV4g;#=C`&rbX{ zdu8V|EB7t#>~L1xGQa!4s`AG3YRU1+eXE>Xnzf<7`I&dJx&104HS6;uxJa5sDbK6^ z%d3C-ydjkJ;bwT%G;2f8^QOG+RU|k5a};KSVUawAv&i51AtM zo?7l6YhF>+v-$<(3r(Ek%4foAAr$kqwAS=RrD!i+Ts4a}NO{U1QN$M+96TrY@5757 zt)6zXF4)_yo!@unwY*yvxxEGRozMC}dQqt4ARY>M|2a&Uv5$r$d58(WfYxg z=A^<{s-`2GzkGE6MMWdK=X-P(UUx5y>MTzGTS#isUdkIty-R=%kERT({o&S$T!;1iJV*Pk7+J>> zH7BICfA!+8_O$(4&4cWh2RAMrg!Spe%Gv5#AaRB$j?9iIiQPd$$0_Ood7x>oaxFMDVBNjQT0LKHf{WiW;3+`^k9 zKZ096$qeZm#S?V<-2;u#L(>-duP?L2Q*L^k1l|4EVD~iSpS|d{51S_07t(k`d>3DY zA03+Ac(OiMZTRIhnm;`7>zhIcCWVNw)%j}=Zaj?h)LH%IInUj7ONa_6(eaNxr5Qz-_WUc`$iP4lQLKG%anrZB zu%8ZBdfU#BtIH*& z{3aC6ll@ltotRjO57d6RjPcEgfA312*RBxDo4URv;9wzpRQKQC{L@9a06{>N45(f* zzLYeP37)ht6v&;lGSlJwXmiae_v3Y^XwE5H_mbQxdrKYIwBx`u8SCRh3+~_iXCsn)iOZm^bg+{f}$Ge^B7e^!rYSdolQyJcYviYkW_ve96E6_WbAK{r5W4#TyTQb!%=mC2Y@m6)4k(tVB+<#wI8X73d_LnVX&d zTe$bR+`+7|F z<&eDHC1f}p#R_f_K6&VfxMpi0Du_xpc3obZeA*2c^o&)uNukrQxyZlKl4Lhofs2vS zOIS@2{B&gnJ#71mT_N)ZOVG-IIk&#Fd1hkJ!-}@8{C@dQ0Vz%cH<|}LjV_*|C?)z| z9!IEuFrU0tEn=9>YUE3#8<>=c|Ir%@*eH{uOeIu??aVnf*>8+RE#p2Bra7#NUKLRX zzFkukCb@M@2 zs~mf);=kVO7Rj`tj{FO9gqoxQ7Bg!P>)*?&Rob~SAyK^J38o!&b{`*(rE89PD%>lA zf4#!|9i9>7O{KeBuwnne`eT$Jw80^_!SO}WWPE3`M3r2%&Cv5V?KQbgB(rn}Yt8r1 z1fNvj`zLcQ`Rf&Hk4b9kqIs9f>tvi zy!`y!0{%jA(e{?N&gLZvk$bIlcE)$uRp;7r4m+Bx<-MF79H*$)D{$4@f&WhI3fbJA zZiGwTBJy1g+tO#SoB_F~%`c8(jvkJ<{|GBwKP#Y#J@4j}y<_I(6vmHz@n`o(losUE zx%>HDCneS4oLM(%Lz-+WqnghR-Z z`(SJf%dez*>8`YFM7#gNv(uFN;Dw5RYrK}jTx|RKY~zyd6r;JJ&I3#ed&%M2uQ-I< z22IDk@DH`{Xk*-~^Vb8NeT&a77dl^C>el*vfPYxf%YRDS_Pn$~P)aAb60pBFL3g0Dv zyU+Gy_ruJ?;P;slOO{T@3nb`lN%ZYxdId%B)hoEMJ+Y2*RFkLmt%UJ(^B?KriyNF% zJo#p-ZiFMb)%6fs1p&oYc7}?xK(hahfPO&-%}kYL$aGR6wbu`C%#C?U_H&Lr$~!y) zKX33Oa&8K~N3yRlYOd=gy?4>D>%J$4C*{Sl68J4(q$f)BT>n z_d0c1;Vj~%d*y!ru*#pG6EN%h70rJJ7_&}_!r^wyC-gsXgmV!Z34l zhQHphoRZWIEpls1FkWhn^TVSb_Xh=PuGhX;l$IN0WTiso*0nkZaYV?15DfyI^UoBB)P{ z$eSpxK@fy4RuB##W6aL1$?OQcaPb&4Sc%&ig;f9glfDlsfk8WufB7j*M~^3P81He@ zEXSd6qO~psqiBLo7>9bk;)UVCZI;{~tr#N=kFzC%;0|!Pl_S8COQ?^p#}bWV6%1VB zHyIbaWGS$`1b%4&8N@?f0CWIqX(|9*xA$&>#PK+j`%Wux8O1{|<6fqMR|7CloB=t! zz(-2~QNAINZ#Eei zAj!98AsJ$k3V8YMKBvEi7lcW15`1bDf?>1Q&R*2yPW>r=|p-gzwN_4i3 z;XwGmwQ`QxpMrs93=DWM{|8ypw%{68Xr)|O>4OZ6c*wQF_k>N&bsuO9(6$J?owRQi3q;Cjn}b@Udb;5G8N)Ns`)730CYM1K2-4Vq(C z+RVT~iZG%IY(?=`JHG;+pLPFyw-vtx_7F{Q0VGsZtjpjuS3EeToqxdjY;AKNQw}C& zV(B_$2T3B#;PdX2G9N$;x7d-2`&@&bBi5?{nm$!8o|TIO1WZC<4{v^-Y&JAiui0m=$OnOmv}5O%a{ zv*deF(khlZewMfdLxz}E;};XqDr!p3D)^v7hSbUs2-pQ;nZPziuE7F?G(gt|bC7lJ z&jfA{qUUO@$IPxYn+2?ZmcYMcT=7SG9LBx!BJwsmX81UUSiz+w4(A*!>;n{e_Jyn% z%_;+amfT7z+;qEO-#ukQI|1{33=@bIG6IBXg$FjHdzX67iKhi!o_}-`>dhqdQ2^i4D3rn3tQ^Hto@uI)r8$-@uN4eLbzlVagwpRBX-r(K z$^cwc*ay$FA9&15VS}A(R?Tfz!i?5@s=6BYu0?NKBP#Tw9|PnL!ntc4A~u}%0qiqK z7iM}YyVx~>fX7y$*RETuxZOHb`!abcWe13{v~{{}^G8*ytV6i!!2X7^!v{YH@kR$@ zSM|;uuxgoLor)=`&2jXe)d$YsOUvM!?M|OLmt-t%(kas)kKc3+0;}iA`=R9d`s{Wd z0~`lOt8KEktW|bMOa!P1Y-rr(dz&+?1E48(+!ncREy<;-dClTno}NCZ_f;Ef4=w{k zj@xwicnyd6O?NpgpSTd@>EAp5qOZ8YeItnO@hNMC7N^>Uf4TY@9ok`e!cm7F5GBvA z3KG)hS2FUhWGuZ22?UPcX&PeL5xdh>l%us}Gr~J3W+EbH8%#hF1+x?Zt@pO~cD*!i zV1tx+GBbmDRs=gIWR(J$&V}+TtQ+8Mu2karPlclq~|Gk01~WnB9;h~9X~cyAA^BTr{(X%t||AIj>noyQ@M z#o$7({)e*EAWWX!IM@xNj7jI|jWB{VBedJj4Ugvj;P4Os1BgI(zgkoGfPEbEP zR9eX+g;{QeS-5}UT=+`4RWz2iHjtJAav%}^ka>#4;D>`4>}uE==^=fuR(Nal`lP^W z6Vn7NKny6~CLo*R7D^iqI^b7C78(h`bz|t+uSsv7vanpfi?O0Ip z*h2K!VnMl&?YBM&;2eYxSyI)4b5jgnz;?bN05KDB3F3br5&F7nMr{-}gRL?K;n5iMtIAOF;99}aa@OHmyC`6>Z=90Zy$K{bF=ks5^) zoeu($tI`5u-~vE;AjsfPF>`v=?j5cTlV=Pb9+!YKp`-mWRxwwUQ*{G3TPPP zn%k*=j)K8X+>Fv0OLYjanghJZ%bfLCZ*dI5dX+1?BDk9^!+0R{T0H}yAPk!R4j>2( zLLO4_Rd?F2{SvSRn~(i?MmyAUF=DZOjft0a8|c}d8KUzr`Sg;Y46xv{Q`C$@`d%}^ zi_U)`wYw4{D_ZjC83QNu5Gvd%*V7yS5aJ&6xlLD_r~B|AP&c@P`ux!Eg^4@oj@gE- za{!vTxiRj!DImH7?()8Y01gx)uiF58ApeRyM7tXf%C?HVav?Kfo-LG#*~rH&xNM?t60co4tKaMYVs%Bn{%fr%^%a-~|ZWkeiMN-w&3Nv6IE& z!6A5Z#h|1kd!7dq&k@3U%e#*Uq6#c{J&U}^y;=a3RXlv#4}p8dTWz>o_tK1;%Vr!X zFQDg6VjH?`*9xIcdE6krVJL-M5Vp1{2NWw=cFC_&3a}I+GPGjhAlCc15*jkC%OQVq z&67m+(*o7|AiDZh5%f|Sv~K}(%>M~mzjZs!5n|0v+%N}SF<(hZ;9aq5`KmOsS*-|$r)LF$gbXWa;H&r~=Ur88$}e66(ui>cKBz zCH?B%6r&k^3){S?qs39n>kH91K3})GqA}fDIa66RlFG!MiVGARS~qBDmWz zU$GKur{)8h?|)o9b(&?{MDS151PUM7-&ffYzvaDh@nPQarTvT}zb|i|_wJ#(In+c& za_BSP+c`f6{ycPxek4M_ykn5`0m6idas&$!6o)XOLU9G*h%-SCp2Q!C6f0W1h%uwa zjT}3A{D^VQ4j<|6ef)Ngp8vd+_F9)9^$Zw)mspA#U5Pa5%5&$o{d)@a;<|t9sy?lX zHEY#+P`i5l+LeOXv12bJN~CpLhOy-k2{bWcT)lM`zrB4sB!U4p5AXUFNKoK~iF9%t zFlaDFx_=-wj)Rx(Z9x;_M$kzy(4dI|Wh|yB00%L`0VXkC$lP#qI*I!JNkKe0qQ!B4 z1Q;SVF@R1*I;UYzAW*vT#Q~IW6WC@k2fPBX362O3@7}!u32(n8Fkl4W+XpPtLkQbM z=ZZPJp`L64%j|CinwPt9k1;$lr_UQ)h`%60&cgfq{|{h*6^TR=bQ__h5=%oZ|Hxp2 z4n7EBgc3Gr)KN+)#gtQCNkx@a9cq<-6<1)5_!U_unuS(YYO&>(Kyl4g*I#+<)z@El z1!lql%E43EVa+KfpMc{$7Q=SsP)5KwQrM>7V4f9VpFjkBgV8+%*aydEDX`|6dk|ej z8&P-XwXSkX5HOi<&DRUm-CHp(u`Y_oex)T4VqW(v=D_Qn6;4Rwfl zB1M|s5D=PXn+;l#mG+4fLjhucNR-1pSh!ctIYX9PTX*l-_|^dR085dT2;rrF*8obaF=W+N zUp+6hhDp0v$yai>FhK>tqcUsSYF4Kd(ODE3n^IBz0)@WJyKYhef0FhviCCvn^qTc_T|87~^&MD09!q&Q_@|4q8pC!dab z$tic5pgc3b4twmfn_BaK%}C|E;m#kz`ZLf%&q}mdxT=_e9lN%eF3@z9ds?v(@L&M~ z(oIi2!PRT+BW%-BdjP~&hFg%~6#X;81fp4h+dYj_bO0RYi#x!Ma>F~qHwJbOF>boy z%XdM33kbN$2o7M(5g2snQKW5|zWNS~(fJ1nQ-{J7`e$_>LCHBvuJnkWXQrHn4{&5I+5kMkUbIll=qrWog3po6GoCyXv5#E2}h;FLvY}=a2#n zYlzES>hg6rwB0$u4g{<9T341JPHi4D*KRt@hHH5D-#sy081RlKb*LYD@pNr zkA%dtF1C#eTws-4%pMzMc_|YPfQ;op$doWL4mxP?V`ccpH})Z&+JLSc1n>qKB=UlP z1Oi?$xB%Slp&fVyl7E9_rEmfm7(}v*aEK8fJ?1F7NFIPP4+K>H|2A1c^mvkwo7AZCWhtmJwRoQbD`ysZW0@plbkO4h1&Dz-)K*Te z;S@k7Ifp~mcpq^%2_s~POgZpc)e#&(9wUI#LoC35o#4DcIVQksV9+&y0cca9dV^N~ z2=c!GL9|W(N+d-MV$sL_l>mn*Lm9AefrkW&VIHL%1yyP>43-oz9Gs6nm;*krXSJiErAN%=t?&yLRD2t%Ao(Vitr4ny;JH^pOVaF zRs|7%Y&q0h5F3Lc4L~A{`9=)tWC9TYfd_~%Zw#_}Q7w0OV0*FJmut5kt zoM;h8IW|&~I*2$1U_S&8;7;sh=R)_^&_cRRqH+6d_@E<3hy^CS70yv>CrF-<;%KCd zo2@}=n*%avM;wkl$bAVw%66JKYsu~L>6S}>5&);Nmd~B8k&isx>Rw0+za*P5wYxi? z#mc+i4X;zPf`>os%De*M#7Z|~z3x#)zVx*(Wdx#M${gUh{?#5jG4&7pxknrYaOgzJ zAX)}j=O6_*#}y}Xh<#Q#Z~McrZwUD}LvmP=ae~e_COl_B|NqHhtDOu;VasAraxO@J z_nz*oEDNJ5X?x0M}q<+^cR!-4VF(8)u z`UOV z^+>B-7wd>ie1@}5O0Au2R9tiSXH;HluR&CgduRcg%(jsU)MnHX#6SddFhH73UXD76 zW6gx=qMN7vAALZ&IpTOXMs)MJQ9D@AcB+i2lk+)tS^)pP!?jnT*L`R^gJiRRhx9q4 z4Hzuy4A{bUvgC<1$#2a0d(#%thc`fD0TBZd%|2ha+l8ZQoD+=5uAaEv@BXriBjw`R zoyc~lB4v>8nyEw+?_Aa~04)&P}x+%dS40OZ|(Oe7qjEX4DaE!GM8}-z_52= zNMjk|q^C?|A63|Z%O@~ahlD$cxbgGF?y*reQUK}j{|yL+DGCD{SyBamQfCp{pmGVp zQ8ac}2%#qo2oKw!brOgW-j*eO799cT7vp3RsbzWZlxTl(Uv0M>jE52FP#by{10&EG z#Niijna}@eL|hgVJOI1|<=KNIrDf7Y{)I3Aal0@P~fb zc;#{cZIy}GfhmQRiBJMz7hxr%*oPxP6|-><7x4c`QIuYYKmcWbU=EKVikawt6j280 zHHzDVL7S0@=_ONqv`XuTih}_+sdNwaa}N1chefv;mAH(8sD#xRcg=NuQK*gE7!*@@ zGgX*z#F!OXIAvS-6ib7S>G&&w7b5il8B%Zn2OwDV08AwG4PLPZaHslZwZ%Yd5sR2jZSHocj*#Pxnxb&cT{PWpUI7SNo#xwetwy2-4&R$GMI$< zMurI$h^d%=jH!gawMyr38Wh$LBk)g|$(z0Do4<)Eo7seQ37W+jg`#P3q-lkwxpC!~ znk2H7yi+w_*%kLd4*}o;;~<-FmjmOV564$AF@PMD37q9=p63adsz!}VX`Jn;eaN|Y z${CK#33!0{oFfvQA2OY;`4rZPo!Xg%bU^Z8u}F+S```L71rqkQJ@4nB7J0_59V|m-c|r9u%a(2rBh0!{b3GG z@CKZJLYEI(qg{$*H<}W*R+?AXoPy`0UIC=2M4eDUq(+LQ+zAisG-p|I2>S4JRf?y1 zs;9znrCBPYTtXo?eeC3s;QgG zsS>dUSgNI*S!9Ars<}j{V!E7&N{(i_|EQ~f3L?_UV-w*O`#=v?002sGr*4O5k#aCF z*{Qz@tb3{sAFu(TI-GzCT{xtyqxurc3M$LGtU(d25_hVGYN1uhqt4l?SBatP;Gwd5 zn6-MVxw>!wC|Lx6u9aw7F&V7w>aH$2ti}4L%(_d^>Z~R@r@eO!jt80*{7VEP=3$y~F4pz_v#;TMv z3RLoN2!{|4@nAE`dJb6Nv@c{6wj=+4Dn(ICMe(sJn-oED4w>+@sxol^Tbcr!sHj=6 zHJh;3nzK9Gvq1~DaVxhMF|%e+cUxGfzOiSxmYj&wkrbO76B0uQ}!SQ$NRA=(Gnvd17(E{gj*Du0JcoV6atA9 zhX9loa0CM&1=4#VSTML>+rHj+0Q5TmCfvgxdk6u14)MSM48Ua3JHCT|wGx%kyC#4E zeYUjrumautwb6SaTD7!Vg$ME|0ugWl(mRC}QVEr?67+xtDnSo(+`A}j4|+?$VS6+5 z@JsPgww$ZLKa{qhi?9z26%h;o6MVso%*dRY!5fRWu|tJ$fB}`;i4kA{RnWsDPz4td zx%R-qWfc$dumTq#SYvR106@(D6nksRR6GJYoF_|rA@bPDKYRhT3w=HOkEU!(O^mzk zAWoj##YnLNWo!W$Faaab4&}SIoSe!(j0Gdm$_G%!XAF=RPzBGt5(iKP(yYxA>CG+C z%%3bnH_FE)vANyqxvlEJYl^d_YXyqj$n#9kQ%bb-aFRI%yR!p-xyM{q^Z>XQaJ}}> zJ`8}nTyO!d6UsOmc@luT79h9)JOCOn!VCZh+{^?RPy@F+2E>b_@lXH^Km!;M0TVD- zop}KoAOjd60U{t+AsqoSV9`B%0Ju8=5kS%x{k$VU$wz2 zU;zwpyBfg52OwX6OHBiqJpTsLTLou4)m$(DaBKl3ZM!^701QCV8bAOhoX5&~&VIa{ z3Cyj6{JB09y6&t+@GQ^uY}a>l0taB5Vl4tDzyLCk$srBeRu#5?@h}1rKm+K5(PUthWr{(;~3c7yt)h8@&@<15A)7SIyWHaM?^?zey1TGCg3p%grKC z0}Q|gz0FebFaa3A1jtRA|SPW*wLqdjmA@BkkT(E7;T{dg2`tS)G-~qdd-)XMqZmHjb$euHFGkD;%!`0ijO8^!w0lAB=MQ#D6 z-NI531Jmt?iwzgameBH`w~j3ZaG>By(GD3o0_!)~jqSKdfd%q406(mC6}u0W@&vPORK;9O+QP)YmHlM1{jf{m1I8t?v!jg)GCV(MXV8bP%Q(t^=mbE%E0GCTJ;Hnt0X0DBk9+Arkm-j2 z;Uhf4N8srPV9-U;!v)a77ZL*)aO#qc0Y|(NRgmNtQUzU21AL$X1<($WM+5dN1q`6v z?LYt&jl1XW>oqU}Q9JB1fbgiz02hGld%We#-rfW|$j=_%hWr%LPVHo1?b(j>NuOMQ z+b*h+3_FlJ0BIcm+3_&mXe{C)5LsD&0qhRaGJy42pB+^|(e&QK_TIwzo0 z+U+u9J7RzH@F)*epT-eT?k!mbbkFWmFaR}>+5doAY`9UCJdyKT?(z`mF_6EllL--i z0Q4{bM-cD=EO`VFXBnN)AkEkZ;KUrRkvM(mNP!1fYymxd^#_m+bW+K$9s_!6dk)8( zBaFWiSfBw65dZ0z?aTnd0K)(*B5I6~mr%sObmy=TD1gP@M2ZzHUc{JDqed(p6Mh7l zklwj;_x_zk2~VZUapTs#Tz3-Y%$fC2-o%+x=gxmLea7thvgNpyD{ zILIW!VgwO@kO6}T2w*Or0R%b%u@UT%!bltkIA=BKk{k@N+U&VaiVFnFPP!aLkU)ds z7>MAyA4M3UMUW1tEP?_at1QXvmDgT`G!D5F1a-hRRTW`fRS6z4I zwO3!^L9wm3;+iW{V>6BC0*DB>0FOQgVD?nX zIcJ@B=DBB|!3tKzs#q)*WTQ3p7K?cE8cB*w9Kr(+d!AOhV=1EU)?06>25D<=^XeFj zEN9fZW37{pSM0c!9$6l5ua^3MZMM5U=jpL;yW3m;az%>ETYI8*`);huj`wJgMdq~R z0*g9uRh3zG8C8{mf=OnhZh}=-T7TxebI(5qJ@m4I9#&4nPuJ*>rlq*s;6o~j2S9Wj zmIAi}9O~$ud2aW%l1w_v4|-tcV@IY-b0?Rq>@9@{?8+SPNSwLokQ?I zho0v<&TH-GLHfO1DW*;6oYyNkXL;K1X6_v<(y7{G)H6kVM#Vv8T-29d{t4tF_n^te ztR)t@i8l_x0vpgl38I5w1SL2@3jT_8S7BYz?zh3Vb|Q zI(nGwBu{DF|0bj$0S>T#K?P*h0bP~A1vc=375@Zc5QR8IB4*`+R>`1?P{=_OHqnVs zgkls)xI`GK5NzjYA^-Z9GF8>khC9Jw<#aeR9x@OfKP+Mz)wo7BdhUo-NuoTcct0uD z(T;b-V+iNiA1j80g)aOD4E;yBE`CvRlbeaHO$>ReREm)(J48t%ZScrS*3y=@#3fcPnMq+`@NS|6 zW-x_0Ok!4qlm_$GDN)wSm93J1%v2;iaPo~qsDJ~I%w;yUxlKvZ0h5}z z2?FFX1B+_ZrZ>fDiToMJ6$Mm|Bn4_vg?cQLt}~@8ap&WISPI5@Mg=D_odE}OI#sGx zb#%P!=u|%X)1h|Nt6#-PQ5AYJs3f(JOU;Q(VR{m%O4X`wg=<`?!qL)c5Uh8_D@nzQ zQnJEurD(;8TAg|msFFaghed2$>Dp6q=GC!}9q3-!$QZvITJ0@xwY%NZskX0_T~%gZ0^3!}mL|@Hu5_!r zUiK34x>DIHcjY@@bY4uI#C@T0B_!TvD%Z6>Y3^o!Px9R8w%5Q1rr>*{5?}f@*ui!2 zZgKs(UmE)NzsFsWW(E9@BsgLQKR|GZMeIhb))k}=MsbQw`jN>pv>r0#FL@1V-j!(> zDmdxzhey0)9_LKKP+@S2h5XX&ZoD=|AWCu!;vQGo%D4LQQ-VBX zF3Y!n$nrQcQfsW_3M;oBXI{{YcXHacl{M#>QRVpq? z@`aOYW}6&WC((?`o8w$(MmPGZ;3TbG_dIFH_W3G+hH;qzTZZVQV;uFM#JOaW z9cB2&Rm1>iIXl|buQpH3wpf%m4K0O!hnBhVGS=f_6Xo{4+4mz3{ZYb zv!6X}de<9RvX1nLv%T-2ZadfAZgPLWSPu(OKpZcQ00l%~6La|bALgh>5;9y+xCbF1uxOH3z0UVIIiyogYnFHYpu!E1 z*4hF{o+3HZyf$P8v_Jt3tRoQ#=lMy0Bwz)&H@bQ+hOF!0HKeYQIwaYw& z`-8aqhY0wGeQ-VsIES8~2foXH76RBmGCG-WC<6}Az5;~7+fs)B*aGnLvjxkp2Gqge zvajJfhi!0+34{kgTdvA8BnBu0D6oJti;uK=DGjIrdN>J-gO;U}g6jhnQ?mgTD1jLC zLK&n%dH_NbBflLqLloL8Ak+!rD?*x>Ih{bWW13yvMGeO#kmK1umKnN!$9Q3w;Dt-yg?w# z!9*lQMSQ@J(3&z>q@yCjn_xfX!Yq_{u^S_+OU%Sg?8IEmsZT7#d@I9J1jZCP#Zpqm zJ(Mu@YeQ9HvRI@Mj>oPZ+k>oWUiZ-#VE_K zd#D5&OoM4;$BY`pAJjtyJVb4z$Bp2|Rs1drOvXX8FlM|%XFSJr+=6v%$AZ+Scie_} zgfDEY$A;vHVML~L=tfoy$5#X_e=NuU<0*7hM}zdpZ9+(e#6iY?bI6i3CWuTZiNwca z)JIpeK(xXkS%f!Z+{kqQ@BkO+f{)ZmTnb67Xov+gNr${gnry^x3^;y#sF-Xd~oQ%q{jHIcwimLp@t1QW^q)5n7 zs-^PEj8wsM9LuMFG|Rj!BDAauwPee`bjy5nM7ZS2q*NK4pv%j7#=F$Z#vCHPqzb?M z%c~4bmK@A|bVHatOmdt_{t-*3bj;8Mq5yCKc=X9%n#`cA%=|(!%v8p%+)SAS$eP@M zC`ba)#LWn51JX22szlAyY)h0psfiR!qm;yNlgrp#N{tLS%XFyC+sw`A{G8n^&4fHn zpajlRT+O1~%2GiqI{yIA@N^0~c!BcF!yG`*^vnS~gSr;j0Gx!nm(Ru&7MCz}4G!X4ZJrv1n{>#5dr;3EMbD-% zhZksx@_d1(2+#2JFLyvv98gjvb%*l28FQe6N0QPK?9eKMmBA zVANj))?gLZVI|gLBRr%b8Z;%22 z*n%#&)o~@)ay8d;Mb~sy*K*BO7T{AqJrzJb06{g@dbQVk#n*fVR%AT{eeecml~QN5 zRCtJ1Q03HWbq9lWQk8&GZKcm{{nl_@*NLUrinZ8_#n_CE({_DVUY%E8f7REJ71@y` zS&~IodC&(SoX<%WSZFOzX+2mb`_yayU08T%SW|siZv|Iz)!3f(*`Ed4pcUFV<=9<~ z*IxaHl2zKJW!k1S)RRqFfThxBz0{XASZbA7Yu(hEy;+u>&u+znEdYQd7}~Nm+p|U6 zv|ZPth1Um>S9*2YxRu+vf2CWfRayCDS*j&itG!mNwXm7p+EHcLQuSJH{f4j|TeVf( z#bw;abzC%MTaSfXx~1I8wcLBPTdAegfi2j+?bNJISeg}Fna|`IMOG>JhDhDrfdB1XzWv?L{afJ;RpNEn<4xYgecttD-}ZIiGL2pb zd0UXZ-ukuQ>&@Qn)!de?+DyG#@eSV44cu(SS@c!j_eJ0YR$%6h-v*gq+P&WhmSD@x zU+%?Q-sN2IWm4c(e=fis-qGz^)0NNMlL8gk00daz6jtFCM%!H7f{vBl$(`UCreUS6 z;Qjqx|MgsiRag)%UMfA_5Gqi;*h=J?w#5U*5UBwVbQ&r zarohFjZYFb;Ufm)FcxE4O=6>6Vi|toG*;tZjp7UTUMhxJe+~vL4=&%))m9)LVQ=jK z02t#w_TxW>)14rL0O$ZEmfz|BUE@SnWJGP__`Kuw+}kSNU;yr5^2Jt_xMMDcIuhPv zK=$NM24yf6WI{G%2S(&YM&(pi(ME>4NABM^rsO%c8rs0O3 z)Q6Vjh{orNzUVIghK%m$nE#gPvi)eurC*Z9>5`5b?X_S>uIF&RXVC3oeLmkjb~cTk z>7-U_jNJ)*AY>^h1AVY*2+rxMj$o6XQb-;Lh>lqclTuLK2U^}|qwWBtUh1<(>vP?S zK(K)he~5=N*oUdM>bbsOtd>%(hG;2`#IM%Wu(so|cIl%|>%k`MT3ze5e(Si7;hU!G z#=c#&9*}6>ii2UTms1?(c3|qDwu%) z$nN^KZ#>lrwk~bOK4ZoP@BcR0sA28#2Itt`2S!K&X-#h>UGMgOZ_VCq`KIstrts|E ze{TLpX#WQA4bNBcR_@3)?*mV8P+f2wXmI!bYxoX839s-L2kr|eZVs1meD!cC&gu|H za0RbyO+E1kFWlXRfcbXuArI}H@CL-@?j^?18E0~Pt#LO#X&fJMO)c>rPjLvR?jWCV zBIk0nHgY7#@ONJFCMWY@eR7{J?;$KtP7&8}3j zGWT;vJ@eO2a|6$D69331?7f6=HpfIj{3eUNN*SnoFXFKJzGMbB+4zXwx$^evb4V+UwTPjW`W^h?)tPM7s) zm-cC=_G-8GYsdC%k5O8;bsJx9HGctJpK|9uboEYjA7}JUPKQC50T4j;cVA~^5A#@R zc5m1Rd58ym8IC{acST(ReNTaZ^>z>kcX8)+f93M^bH8#qANF;RDtL!@YL<5+uXk8E zfEn%gjDK1ft@ZjW@bWZxLwEBxSNKIY-Vt_q4v6@b&*h1?^m_mI2B?V|ZKwH~xA~jL z`JA_Qtib|r$kBnvb@L8+Dlc~iFZp0+cvE9{m1p^;2jrc=0UMZsO3w+H*9S330+`qO zf34^GuJ`({2m7!W`>`kcvN!v)NBgu_`?YWOF~#(6*oU!$@*6MsT^IRYCwX9(ZWUMh zs6t_<2YfMxda0-SX$pLRzI1)aWY`9IyC?dQM|8b!X?0)vzd!uTXW_x0`emOe%unaU zU;IID{BcL`qBrrQ-+N& zp#9-zXPt=p&7b#^Abwr8{o5z_+;{xl$NR`f_mgk*;9vgi|8L&d=X{jVeo$_H=g;-% zFMZxOdf(^!bYOiF`2O~1-JL)H4sd`2NC$t_diMw9@W1`>Cw&|!ae%;)Bnh1t6ffw& zgST%XLx%SrLj0C)$&3TvE|>5lGarAZ#(y?%+C;#?!GU!8ya5dglqS)lMvo#*s?;b@ zeGQ*N-IpWbID_g2;>fBMC)ciCzv9%Ybzs4R38OBA7;$37rEcHCjVpI9-MV&XPq}0f*4{_{{bil_9j+}<*mpdd&j*fA%#3L*`$-H-IyP2Pg2RG zkGKIjo{&TSR^)odL518sQUowV300z*rkZX=>EW7hVtD0YSr*7;mz8TR_@#@Tk!dEJ ze*zk4Np0r;D5#;?$%zG02ol|BPWEhoiJRN^F z8wm$9NKpp4>$2OfyYIpque{9?s~E4j-sG#ky6P%fJ^un6u)qM@RFANl)@$rP@FY9K zvhzY5vBVQoT(QL$W2~*Y=$7$M#vg+mvdAMpTW_!U7Cf-Z1pBKpzc2s8FT(ZGjI6SW z)ts}=JM-ML&p!hlw9rEnU9{0hBb}GdkPr%gy~w#zY_l-bS7V*E)?0Jkwbw=myH3n6 zlfCkgWbYa*S2M!{md!IHf%DgM(_OdScjKM6-g`SO^$h21!#3Z86JEIChZE~IvE!_L zZ`pQsh4wo4uATT-Z^w4A{-mpXlKRw0r4DKuAR% zit&zm^qv`?m_}Vm5qdmipbxKzlPqp=kBVHR2J^_sNAj+ZA8ei)cSyw^I`AuP$cGfH zpaOVo50auB<@X#(%2RSqlEC_7t^ygmLB25|VA*6RKN(6?;xd<~Go>zjsW(-kk&=L1 zBP>np^|_CKQKhNy)X+n6kXwK3cE=7eqpu;vDDK)-W}7 zku#lFlO#4T<&U@lhY3AhEvGVCpqp=g7u7n&sD*(U_)Uk$(qV%B?MQ2KXTY5~IsjZ+J zDNo0_(u(%K4qbWRoHdUxLfvMPJ`c8o& z^>X?c=?B_y%cz2Nlu950RKxnvp-Qf(DXM8!Z?{zdboHxdo$DUQT2{K^6RqsKsz%#t zJ$+OGuJ@2DUJDCGyHeDDu=ms}0{;bh)J)#)9#z=D2L`Ly%N~}jiN)+V8LPu7VimI1 zlPqN|%h}Tw5wR>qtusAaNyq_=t)j)EKSuh7Hn29gGE^;4b*oF)M)6;EGFV4F>Q^lC z!?wO%t_pd}++G6rvne93Y=3yWoy%QRM)$STEv|8YXNwauAixn(2ml$r z>t6lY^#Doe?Ryy+UTY4Cx{tMPSJ10o_SQGR;EV5k1q{jix|2)#4K07U;@|bQ*T51s z9)amQ;W{EXp2KY?SLBIMEJk7l>ov!POWeB(n^=!ir79b(s$dS|#KV^h@rYAwW7DDd z#$;Tv$*NjhwN7S#!7z*QK|g%|NE!!##5!K`=5owrFYYC@ZU9>>ID5)R-3M^if2Un4MXbzNzz^%&C{wNnIgkcf3KfC3TthNdv^ z2TrF$92W@IIJRMe1I+r6DUiag$?#}jgZpWAg+LOL814*O+KIv@s-56K$bV2^0+U-u z1Smj&dYt2b+TYkl8PZ__MgMQpdfV>yx6f^Gq>a1W2VY^jWBOw|nLxNPpny2)F%EM` z;12^>#|XrM=mH=*1^_p*@{%A07I2`~3tzd>5^ipmml4=fUUym{o`^);#00o%M7;?x zjsxhM-$Ku}@+@%x7LY*YFkkx560UTn3$WpJ&NP>QOmOp@@4V;hpog?^Wv_1#eX2%B z`qQCqcA7c;>;sfK&G(ujPshMu^_aLga@F&C!1^2s`Gyq09&jvf1qL^7beLv`_$pSvv+XD1f1{{r5u#UIl|keBqx;Zq1M$e{3f&kiW8y z0~lg|1O*!b11_)*c&x+!1PnMpJijr50Sw>*QZVFHLqGb|pWXBXLB8r`PUp5a);#|* zs7Hm|uW``#a)Ivv3CK`(=C54&s0aV|R{!u9|G3E7KLGdd@qO|eT>S6{pZOV|U)HPt zcH1X``{xgH`TJk@)SsP=SNfG1NTtI8%)knN$V~tmTqBSbx%Gepat{_gAM0(H0TSO$ zC_w@)U;|PhxIy3yNMHz}&mmpl`Q4ueh8+ibAOo7<14dvHOkfNGj|E;D2BKeewV+L` zK^Z7u7l5D*M%oBMKpGGh5uOeXs+$h3AP;^XSNvcQ4xtjdnGqtP74{AjE*=3Qi1np^ zl{Q7j6go^5Y9W(hVgC}Iq33Yn)D7DX7F6j(20WwyStY?5?9>`wVFZ?e8tUQZFkwQF zmq%q_N6Dev)FIs9;UDfH3HBi)noc0%o)Z?JA<_&G(V-nKA|#?AANnCD=1l=f;vlwO zWPl<3Y+$P-;vME8DB4&Lc%mz^Aqv_si!f2$6B^AVWn%>U<#;VJmOf=80V?X*M zJR(iQ*&;J0LMcwhoGeC*bP7Zq0tCR#A}qqHmpBbL9e<=nHVY1LKnHL@2}DA(l;lgo zWK7EBOwwdc#-xB8gsMbE4y;j748%_+fj8VkSv1H(-h)UvWD-E6O)_OuI^|PBWmHP# zR8r-toMcL_WJ?-LRdQuldgWJwMd#L0lq4HSURL z*n=X#jekEZ0;=$3Us4H5sw7ML-v9UM3#6XA*2fe@f_tGRIdWL4LL-g=(l=^u>QJD0&Jg zcz+V8coHarQs#%EXM;Xygl=eyx~Oz`#f9qUi_+*(bm&u{=y`^yScIojWTJICWVD!D0MpNl(NK)Hbjo<1F^ioHw6)qpl+Gxd!s$p@DMMgstA7*(mx`#D#txWjg`kaTnW}}6BB_$fXPg@9 zq1Hro9>SJIkJdkOQZfXE@>Zg|Ktv2bXN-3_w>8Ymbs`BWF`sk&KX{Ijdtkx>8Du3&X z>MEly>zev%j@s##R_d_2YO%s9phg6zdg`-!>xACtqJFEIMk|U=E1m|co~KUV(qnR?SHYVMc009 z*rsjX+K5+>YzLSv+Uo6KuC0!??Z19$z~X>6&A!W0xs-|isrIT=Nj&wBCh}9 zmTtCUEZ3^;4zRB4(r)oShkxuEZ>ZQVRp2hmhAw!LZsVTr;{pHxq=4imZ}!fH(=Nd$ zK&|!$%JP0)?yl?ZMz85IXuPVf^@4Bv$_DrDs{5*m`0|S9CNA7QFOQzD@5ZcWtZxd) zZvc}9{5q=uqY3>sFVI%(=k71T(k(eyKLhuS~!5iQ}NEz`J6GhI>z!J~{4q&m9AaTl$?-G}9{|Ps+ zwmw7>NHG;#@fW+XOMhrF7klv=??@Q?tP(45+*<7!|85$uaTQ}P9Sbr^#Bmo7a*fzA z)#CBns_PA#uM?y3J#51YxPTRSLz*6PCWi#~8nPyfNFuZC80T^R?lC0yu_RNnC1bKD zvvQ(l@DO)$D`N;K6Rs#Ta?mocDfcfbSMntXvMhTtC(ki3TYm^GZ>}wWF8(sH{_679 zK7=={zzhVy>=Lsq$FUi>Lp2vOj!NqyCvzin2@dn|E<>|4Q?oV)vk-4FHluTY81wCl zuril%6E{dCm-95Yb1TPj3uJRX*T*}1^ZkPJkce~dCdWsht|Le@BkY4eYqI|q2LL}i zG<`q?Na#ia-+%G~kFG(3L_#lgLr?S|LjaLLZojldhje^Y^haEDJP&k=h%@6(=0STz zXKaH)2f#NJaYpbap^wL@q=}t12B}^f%*jyNc;JkOA>>1Vq?`7|`@j z3-VX&0|}@=PgAu?5A{dr!{P#KM(gp*GPP501XTZnR7>+#zp;N+W3^VZb#^cWNPIQp zuIwl;vp@_)QJ1y0+C&+|!&=96PJ2ZTymbqZLE0j~6Fh+)I5uN{?_km?mVz}Mkik!i zH7Wlj=Qg!p{{tZ$fCJR@U|;c9oWWryHq#=&0_eaLD8OsOwgOCn4un8tqsnCG=>Ouj z3T7j9#csB$_Vs`7+5~8eHffi(SDbcMBlgZNc5BD>bI0~<>w#^D3T~sQZYKn93v|%_ zwo!MsaQ_1k7PoN&@mE*^Sp@(k;KR*6fet|TdqcMlJOOnJigkY|cEf{qkMKNaMRx~x z%>H#1IDie1cX@loc}p`T1cJ#TKnS>Ybe{lihron~fDV70z=Ol~6x6n;*!P0sw|>jB zBmby>e>Z@Kw}2CPfyc0Uqql;GY?M zI;Ru#pntk|r@4`b_pbMPq91sRr+U320G-ErON0QITY8nuI(pW6Z$r*E*!a4ydl{6$ zHW152c!p$LL>cS^2V6T4Z&e3Gv>52?0*E_II67>9JI+Q%L;#h$mjS!8d;gXh71`in z*!+Kkk`2qjr?EqF0Lf_l#&dkfd;G_9JUsjW3#2zbfc(iv%pyGc6g)w=6uSbP00N+V z#Yl#|a8V=V3LdV3aRZQUzqDlepEdH!D9`;zxLHH5hgm(!3-pR{YLLQRF0yw|kEC2J~4xLH=?pJ?1flw?#e|VqE@N>U`L4E)ne^cH4_&-hZzc$~SKS2Bw zI1pYzc;nV3TsMxPLWd6P4U{-hV!acG7aJzDIL;tEiUK>rOJ_p`iIA5u-4zp;Or{43 ze|3`ip&~#UIzW*oRl4+K2n7nJAV~V;se%wnm}b>#@Z-OZ2o*8}dr@J;t{*Lu4Lf#Y z$F3nqmfSj*Ze6=~@#fXL7q3vFM)?L7|7_DK)F&?QC5D%nF-xjXuMU>1@~y$K3p1)+ zXZGyGw3;)w<@zyX3X&!#r&hh1b!*qJe`)#+K#2@&+j$pMJ#QvEl@DfLu6Pk!$4 zgASE1=iFT2bF$Gn8jYgTNWzZ30})J6!3AFmuQmoDL}|FlR7y`hg0@lby^xeBe@ubh zBK*m|3uD~rW~>=VgLJ{fJ)Q3%a^bi3Rj+q2C#(@BS- zd&;O&$$~tbPg0irOejCis_g7aDGdz}QR)opGR9G9t<_f6==gz!*&e(VHUv)a5y+F$ zDIcLkdGm z3{HB^Nmf~A6YH=lcE_dmR1*aqNLy1^bhXGWV+A+egAq=+C3AUIcrrWQ(RFz*dxa%-;&UuMYuRlOP}3?) z$@SRUhp_GH-$FGy^enhie_mPUr=cDd=3b+|3)rf37`7mH%fR{KkJkCd44bdC-bLzV9(im&4-A%{q&emA~jV9SlS7<_uMoX=M8WP#nr7cUx ziVnKK+w#j9yc_ealvrS61#|$h@4uT1Vek+T_|)*TB@#;@RM%dWe{qByZ_!)iB&U4y z-FfFu^WK-Dxyi^z&$+oCLg>R&v*8}6b%tK&H)PobYMgDQN0eNJ%7O3Rd)3C#wc+oR z>il!i7eD}kZTvR=_???wz4`y=o&N{+=@+k__Uj+d-U=4DM?L`#&@L|!U(5*D6D2(1 zSyefK4nkmtM?3-ne<6dPox(LD`b95L_#?~g)=|5XHBWK?OyCJom=pt^i)ty<2?9cJ zzNer84ODo-+AgR%X=!kF^}AocsP_-+iRLBasKo!0;6f!X(IzV#9}{!3KpmV94SS%% z0@n7A9J0(S$l0L%qzAuiGYKx(NUl?9rV4oEtf3lLLRYgqi9b$R+dT&K|~-XtCpEHhqcD zbLf+w1GQ+&07?mgUNj{IHK;%knn8t5lc8#x=R@kLe@%vPbE5m?=u2Ie(T&2iBOd+e zIx%>wF1n7SV60{*|09-O-jksDQ~^zqnlN`D6CFvd>55&fcI@!hhYUpzT##;ch1kZZr^QCR$e`gXS)x=pevY`)<=5r+4v*Ud;bK?x@YR&j1 z-?%aW+JI?Ux5m#i1@wZ|DuqLqol)ZIEm#3)vv#&%x~x$i zA9o;9h`|B+73%*{FS%10y04pgx?c)s%feKKiL#mfY;{9h!~vZ)gPli!7z{wne;<(o zsl9z)U5l;B?T_UQ(f%c zvf3pnM|jJTzLl59JmN6r8qOvne+5Dt`2vJKz&n@5^EQh#t8jZg%0Ml7oyUG~v!k8xKT*5P6-=>nTrBQr z4t1zUaDj|B|7RSTsuQ{P4&_G+9lGXjHQ5JWc+ugipaUmX59}0z_g-fvzM%>_fCFp|06h>T zmTm*ip$GOVJ>bMxGNs#+#QZ8I^3I_-%HZA}P=3m*r2cJC9Kr(a2Lm;b13&NwK@jFd zkOVW!O@{yE2)(U0Fl7M^tuxXg%{XrBf`fn1o?_F z+M_*y1NC(60;J$9kW30_&*vhH3VkZ8bV~=1+~hhak45e-c$73^36P+aL*Cpb5l~vU(#(-sP1duj;0*4HIqA&LmL=MiNz# z0`pH9U-5SGP%dim2g$$^TmS%e@xwf^VqPy8LG9iY?c1EJGXz8#Cy?B7FcqIsA`BuL zQDYiC|F9abF&nkf2#;j}myg%NvG$IU981O=iB0!d(X`ePe-;;`3?M)n;Sm7k5gP&V z#!T@1TCer+jm6r^ACs{amk}K+P#s4IRyd^!6mlWOuOaEN9tjZzxeZAgV^o@>95wPB zjRvJWGWrN6BuA1YiO(b-5+W@G36roTT@oYhP$m^89UZYCL1JstAt8T2C;yKp`3yMB zuosn!C{xiWe-{fWo$(`YvME*IDWNj_r1H`@5e|b5D;-fQ0gfv*QYka(9>7v8$8z|} zvMvwgCI2xd0}>ML5H8!XDOCn7@p9H0G9CP{Fu6l7GZOpyauxs5E1^*^OMoyH^U@A8 zF)#l!I~cPlACnme@{<6QDIs7mHxunL^EAJsGqdtDe>t)l5lgySf*v?v2D+dFRa4P zVS_>)(?b37Kr^&9H&jIV>_h*PMZJSWf73)E6Gf?W2JRt5VN|$WG(vYYJ7m;3X%sXu z|MW(4^hX^OLUj~LCnHF~^EtP2Jn0NUPog-Ff0Ri*tVfp=O9jJ8tFR7jG$y*q25^*1 zv(!K7p(o9hHN12V3-m(6beYa!31(m)LT^p6%SF=^PhX==H!?V-l&h$;rslLx@03qh zOHb7lQ6ebSbCo72AplgM zl!TS9fHhX1wM&V$L?abYBb7Xrm06v2TE!|_Wz}1MqE@dJIBjR53bzl2+ zVEqYTVKrPO7AFdpBWAQ*qx4)k!d_D>C+AODa0&bzwnPCPenS zEH-7C=wt=fW@)t^40dDX)m-T{W@BPzFI8tJHehSkXklVyeb!}x7G@iEChj3$e>rR) zl-8U!bq7%PYLS9zg_L7S)nge}h-P9Ru)qp-03R5XYZFNca9{_bKpqyAZFj!|Kf1n z^k+LZXd5>s{2>#p0M;<~lp-Mqf8h2cOZO%;S2I=-YROh6LU(jmZgu16bW`_oZ8s)b zcZ?KwAjei$Ll*$vpmuk6jrIX`E%$gamS;8gYdJS;JvVkiw*-jSc$s&JDwlAxwURx}Vt-Ree-XHdoR?)c*J(Q!c6Id|2-toPc!BfxZI>5=&!~Z$HgTU;dl!5gSnTC zkwb|Q_X>ZvhsGC-r?`r*7>##Fi;ZxQ8w?Hvu$PW4M{r$W1@4!J@tBQ6 zIDYxqCHxrp0$GsjhL80qB93LD`pOMhV;@ z3JRH&TNojF7KU%xizgz0Gf5^8fD&5y9+sJzTSf`)0h%j0l&e{h-}hy+|9PcCs3yAk zo5NY09fq9ES((?lViS_t2kDt^NbsJ6nIWoqEK2HiQH^l{S|td9 zl{pZf3mRca5CEb%p$8PSeAc0*lVKw|B__I+bHJi6I$bh)qv=>I7W$(V_Mt`Em;?G8 zW`G1FH>EKe9yI!#(b%P**IE@hf@QjxX<8)^z@~9JX?0pse@JixSo)_GI;dg#Sc|$^ zxml@mfT^3>QJy-g$rz|T8hSxGHfOqiHrXC-I;XpOT)x_;i@1kgnyh0wq>UP_Um^+A z8mHS@X5Jd5*;lTqny#(duB&w^T|%$dy02a4ugO@j$9jp&8nMnAv0MKl1y*1NR)7uw zo3U%fv9TDke+hJ`W%#Oj3MMdHvpL(d9R{?KShS0kw6WQ+Px~cOd$T*6wVfIspc<}u z7`BCavZwQ|Et@4$pbBQ-2grb{bvsO+dJ9%yj^lco=327r+N_Ctn~fW}m7BSn`$?WV zx*wam2iv*}8@u62yI114lY6`58@lB? zhv6(X&6}O2Gd7ERCH7mh{rkV&I>5y{v>$r3g&V&YTqX9q1AgGaAv|2-d%P1owlBOn zGdv~IK?A${!^I`UDSX6(`@ZoTuU#U=Io!QjTv}ZGwJV&&WgNrR|63(efCIvk4CXn< z`DDkZe;dZD8o_5=noyeqSl|cf0G5&5t0jEETe!e2{Kri^$Wvm-r@YFq{8p5FzL}h` zo&3p993|dC%JG1$%Y01EoWOfL#?PD0!Q9Q^T+Zj*xwBlvpZvi4In8OjCElC`;{4A) zJJ4Tz(Cs_Vhf~E~q7rO?1=7IJ8C^%P0ssVDf5a{0J0pF~C%s5u!qPEa(>L8lI{njM zJk$+*)C(QIN8{8lJ=0fRQd)h&dEAsmeRE5EIw{>HP`w1!K-F_SM0Q=vRoEb#lhBD8 z#%sOOFWuOYJ=q~-*+Jc%x?IxDde~c{*pD6C8AaP)o!fof+bRDW+*hIvwtcMeoYcSF)Lp{e;a%S8z1}0_-t+z0Wj)$yo!wXB5CVSQ37$+0{@nGw z$!EPer@bX|pajrX;3J;S@4?eo0N*Jd;ep-Dh27sZp5u4G<3HZHLms+GzSm*B+xdOn zRh}g_zT+YO<-w!}Vt(Wg{@3|g;W3`!e^X-TcOV6n;M#qDJb+&0XMV|RKHYCV<=Z?Y zl%DCG{^`9V>SccDWBugS9qad8>q}q*THd?8{x-mV1-?P-ZT{j*J?lGSgm3*rsE|L{~rh1fbAK-H5|X>e^<@o zjUKVK+3pPj@0|b#lmPQHe>FCr=DDK2$^Pn{XYyTw^i3c2Q$ICUpXytG?mxeeWMAVC zVF#Qb2`uyWwSxq$U<)(>kysy5zCz9E-uE+J=Y!t~Qpfm11o@Sp`E}pn8<(UX z=}{sFs{i`2A40T$`SaZ)o*(>Y7@MeKfBIKK30hza0DznaKK-*}{kb0?;Fsa7BpZJ& z{Kt{tKZ4`Nt>d_^q)Cn_Q*x|l^5nme;|7lVIIv?wB`vl9P;#%0#-Big3LQ$csL`WH zlPX=Bu?IXWTQntMO8>R0)vH*uE=B1Pq)3u2N2*lGGAu`!GHD95$q=Vbo<6n8olCc_ z-Me`6QgjMcs@}hV0}H0hwWe3GVa0!rMOn7x*^p^Hs$Gba1%P`o2W#HUxwGfbMESDN z6bQ8G)2KBUUV9j<7u(?;#Yy-)6+fDZ2SKx&hX4u_-0cz;sheI8hV08;V*Pe9n z!6V^yxK#+^i!jFj_!ox)%4p+_35lqnbFZEFT#75MgY5EA{u8y zjXtXBsi+25>7}W*+8L)*ni!p-VqrNUL-)kPf(Nel>g#5!cKGYCc)@=fsH~sTTC1qH zE_9D3yAmtyv~mTDDYe*EW$b#i7TWD}v?WTPLeEB^;w_5Wu_q_WvtUu>SZfa7Np5>nW%z)hi@J9Ob+3zz|0)P_W}kY;i*cAFJ4`YJwZ# zs0uZ#iM|(?{4T{Nr+j}<#s*i(vCAIE2Xc=8EJDHzHmI!gwD-Uh0Du+moHEM?d#bRa z4A*>f&O$fsYR^Ac5wz156OAmwDIGoT%1Yx*_1Bt04K&ynTir3%C~3WDLHBI4G}&bF&Gx{dV4jgE@EIcNZ@3-VdhKcg%lq0*;X2UMp_-l84)k z_vP<0zHze1s_jr25U9Wb=cwDbkI!SLj;`nP!Yq12q?_*g?H{fl_0+f%3%lb+GixtH zwV&Sm@dWDs4&dg<`%WK%JE~N4=*+4#Is`Kq-~9IGp`J!iY`~WnL_YxOCRMn4sfJ({vWLLeEjE(~x2txrU z*c+6%fCRjwAfFBxJq6~Edizt9auiYq2ue_cDEy2CF_=P0aqxZ~Je&SLCc>>Dq=Yjd zK?`@Nn)nfrhj@Bn`S2%05Yn)J3&Eidfyl(X43K$E43mEl6Nr)pHZE-q9AQF~7{x9U z#)nY!B9x}6o+^G2eOa{OLAWT!Hd@7d5ZHzry+lUyosoedL?Q_}ki$9pQ7Lc~!ylPc zM~V3 zA{z6UN#cKPvXiEan(1UwO-7I)s*^ETu6ugi4LY z?w2Woi7*W^4no*~lgrE|LRM#kWNI@*V~J)Noe8{4qG=|rR7f?i3CnM~lbhajXMw`` zCMuFMHs+LOIuo)^Y|8VS@U-PW2SiWW*t2E7#M*y4U{cSJOtT>4D8n@;F;Hy=RGAgk zPeBy~lURLDp$s*sL-&c0h)y)4%e*K`_p?zFb@ZOTL`+CI`cROhBLFif!Ags%(w%lM zVGVu%DMCLgorN-#rX-~%Jm?XC4s^k%vg|2T!PC-nCeVs9J*rDXu+;~Y38tY+t!+0_Oo zoSn65rxIG!nQk?y201NGzu{UpwzjwD;p~5CKTF%^h!&}T%`IwYz+2#Y@wd)R4Qz)y zTcR4*w&$Gea?as_8AR8MIe{jzt!`RLf?a(k*RAt}1v}2CF^Cnvk@v*Wjtg6*VxENc5(rktmVK!8C+7QS}C*;A&u}?$^!+q?^GE=Td)*7S+fe zh_V3??PteN!`;@_v?&ebTVq<+8{l@hF9+>)!)x55p0cTN4K8#8ATI7E92x$>0Tn+;o*GfOCS60sy=@Qu8;nW^iT8|_kMqqpL_B1zWg@8cl*<&e)jKw?(fHa2L)R6 z$56{RS@%!|E8qegAb9^rEyDM24@fhu1b?F@e;`(XFmZt6mw*e{fD?!=5$J#aAt-rj zVS%<6L*G|L%10XrSO$2&fOJrT*;0KHNQ07*P69Yi2D5@PMuC4Hmw@)L1?_`_#L|C8 zXo4j*fPhDTK-hd`FoZ>zgua4=RH%Ir#e{L@gaCMdQAmVTC@of)gjnbmJV=1x=YYEx zgfO@TjTDAe$a&TmhGoc6cC>|Q_=LF9hHnUmt}=#3ScfikhdwxOdbknkper1J0O#k2 zr_u;YAOLfCh0`+BeXdc6MsAHoHzqB-~v|Q0h6u`D>Zumvoa4|q2$9wWI0G6?`APzeROa&|~W ztGJLj$xrEU4pndgRR95(ArA^G8%dQUK$KPB2s%ZHJ$X)qIDgleg9wN(+Ypy>mzc%} zDu0T3lVxa$J;;^{nOkXj5ctxFqPUr<0v!jrmKoTVCK!bH!kMN?KMa|ZDhOnmh>hBH zny}fKsX2&-^evU?n&TInx~VCiX@++wFQU1Ixw)If*(bfJnyCbwx9OI{S)9&UCdWye zyksa`$eg_QoY*Nvv#FM~Nu9yTeAk(s;(z%h(aD|D=_##gogX)z?5QN>DVfRwGwC^+ zlh>a1c}m*}pYdrvtO%ard7l94A@8Y$%K3v`<)8H#pb8337q=benVhz1ptT{K|GA(R zN>B}&8TuKY)tMRFd7&W6O#c}woe=7s%juz)8KNpmAO`868(N@-c%UD;qBP1dp$Ph;NSYr(N}@T6Ea{1&*_fnKS{zG?qeG>mJQ<}^ zx}_DAmM==A^U0$L%B5t=8TmP+CMu!yS*C0nT#<>USZbMC+NN~cVqOZTPTHR{TBm#} z7-x!*FdC*u+NXrtLvISGV5+AnT7RgFY9M!tsA*cHYuc!kS}c$Hn~9pGuUV;_YH^p^ zopFkr722up)}!jljHoJ%67i>)8mWT1r=%LIo_eUQ8mgx%tGLP(0}83OnybDVY7OzF zuG*i!TCBPntaut)B|&xn#@a@qNL8BI733GKA2N9z1zG!Pdd>PrbqAM@`G2j9nV^~Z z4dhy`=6bH^ny%`)uI$>b?)t9fI(x{Pg8M0U+v= zXtN;`vdz_aCHp2l6JetYw3Z`!P1YaukVHz`wZ@nrqil8&iw2R_i)gn;~0E zLSFl}s(Q0yA+}J$zFW zACJ36kz1IgTe@;KYyPAuj6PvwYv%R44z6sI2 z1o6GWD6xM@zWSRI;p@NSs}gg0j6~ao34^-p>z%&aGwT4q?<2o}q!;!(5cn&M@S3iH z$-m9}i*Z>IGoil!a8|a6+rSPCJ`gOsp*xHhjIPaVyBsV>6o2u-I!m^8%eo|7!rODg z4?zZPFb>|(1%QA9`>Gume^A0zZ%g>cAA=Uuzzu7F86^M$-w4MqkOOsWI&Cn=drZl4DvTYi z&)+ZtB47dkl&}a%Ko0}}2O|K{wtN8tU;+hj0e{}G4`Lt&BR~KJKmY@P1xcU}QZN7m zZ~+8h0*BxY^zhdOFaT0e29ZpRU7XC69Dl6YzBO&r-qy(s(FFjY0w9nB-wY2q5Y;4* z1Cx*iMW6yZkN`U%K?u+UxJ}9`U;_vM4@3Y0(Wn9m-~wSV+$GRmE)b1b@CE9OWE_yz zpnu2KqWX((jR3oB%OgM!NpRPj&DXtb0k=E?-;e?qU;({M%P}AYyUYc1J=aoj2n0~e z<~;!iFto+^*%G15qOEZXdABre+P#C*74ZYns6%MC5AJXe`#=IkU)9Dt~Z6T@V1cO#&n!2`bJ4AP&7812=F0hoG#Koz<&*G zkOn(&K{%k|0pJcrE!BWf0z%CJXK)5TPy{0pMpY;MzLV zrM>3=mV@9F0gV?F=LfM5KfnQ7-G2mN-~ubq=cbd+WZ>H*kOTm5$2~yLj9}FYt^xp% z1#FxEvRLWWed!SK%55Et+kFq4unAHi*(N~CBCyvHeE|Bv*CK!g9DUdY0Oqnz>j5v) zVnEAqU;^Th?^NE|;5*4M-KsMEyT^{~g@e5W!RQIV0sGJcYoG*5fB;>94}Y=!0YxC` zMZf}+o&+~O5Y(Lpt4#tVzYind2$4Pm0MG;<&;$*4H!)AY0)f1N^9{xL#NUt(8*Q|o zP5>zo551lQVsHrZE$|J^1s1^GP=DnXAn^JM>J}gl6HxXhfZoXX(qPQYX-ME1ukm@q z@&5zi4JzIQT|fqbkOMdX0)I`g)E@9CBw*AcUIH+0I|4!7NkH9^Fb-ru=Qt4QJHP>5 zF!^8b1s5IjdOQ(EKRHP6#APr71F+xZ`VR%50WlEuQ(yI0e*j!R0#Xp`1&{(>5B6ff z-WMPRQY-}rpv!3w+7)lfZEwSHk2-QM5N*(T3196?`z971lrGw#cW1W~@KX!0e8fE_Nf1OPB2OP3^85`bv4#%P&;I`4h+ zSlRNwZ|TlW&|ske0nQdK#eVxtS4 z93`x{a8V>n698$xeGN0Wh=B6Gn6C&Itndq-{~SozA+R0f_(2~=KyZPB9@=;;vYaLx zZo_}J`Q`u%?@BDQ)N)HMyY%u)Foha#D0P%rqn|FmAOR3Y z8naN1Mi59LkQ~$rqz5wS>>(sF+IS%nB^rsOi!>s6fea<2(`TPgey~J|Hk2rHQ3U*d zxll4Ble}yj59t}QcJ2A(7u$}P8dun6@Vc(&10 zNurEva;7IUin7>$)`1Qro5FPVS!kn`c3S^xtF;z=^k)@6?a^6%Ox&Y zCXsW}r6{Ldsmg8Rm3Llx>$Ue@@&3tw7T=<}%`jYZ0~UDTbB7XEU1Hg7&Rv?AMUG#H zBbIn#iYwO6q0wz?*f}Vdg$HJ<+jjeHxZ@s4U#NNBTBNSQ)|=dK`u6*8qYWk-VY8WII&G(Wg{Ne> z8+ZJ1$m{)Po4RklyC$Ib)_g-wJNLZv|9(3xTe-8PZ2Dc0wpl!K)?0V|^(`l_+~&)f z&3tp*EBkzR)rrceccn{TS#8yS8HfFNhlBVTK)Cqu6>~Mo#+Th zI_%|@3gGno<{{%{q$j_F-*S$Br9fpRu6`3_ zVGCU-vA%teX5T1-3`4R(9Oh7mJLF*xefYy2g7AF@j9;=&xV;pj&U-IpViTQ6EgITT zW+&Xc*QI2z@V;${y zM?B_Hj~=_pKl9H zWG6lO$vbA!Lq72sAx(KoK_ap^WhkMs8fiiXPO@K@q-8BBsS-C1P?x*pWiNgC%WW8P zlj`~jDvf!}9nLY4tR$idUumqAjf0u+D3~p+c};9)vs#v67UhC}2gWc$GiB4PrZ&xa zPIRVIJKS8HH?#LjSdO!2A5mvL?Rigp8ik$raOW4{DbD1Olb-n`Xh98%&wcijkvOjDv8|K(^$u}RTy{IYEc6L`KY+$chxF;EYl|Z2QWUXvDU=-R(bk%Uj95R=C3@ZgGu! zT;wKKxyxm4bDjHK=q47Pzojn!b;UVd+h(L5;rvH#87sykMpwM!C2x7ndtUUWSH0_H zuX?#l+jwgAaN6arcj5cp=CoJ8`{i$c{rg`42Ux%ZF6vS7dtLmZjRn3s6;5oI5d{Y$ z3*w75n86#_?uspgmp=su6@P5t%NUg-Ef(pEe|%&lCt1l$W^$9A{A4IcS;oT=vPX!_ z(2hu1%UkAhm%aRDFo#*pQ8sdsD|6)(XL-zPW^Wi`)P&wJ)` zpZ)x2K!>@`X}+_ACmU!)CtA^qW^|(!|9xl&3kS_ng|wqBeQ8W*T7T1e#SH5S*F#gTj;+#c{cB(cTiC;fF|H-7 z>m=>=Sk(nCv7P;FXh&Px9cK1zYuj6Kp}E@1o_4pr{cUh}d)wBA39`wh?Qw@&-Rov| zyGcE6ZJP_;)OB~g?SFl5e9L*>zYQ6@^Zjpt2VCGwhWFR}J#d64T;U5Jalt{hoa|P6 z9ppaZZGYS8?V3Z`yk>aEJ^t}NJN)6v+HPgcfhv)1{KorW(KX6jDX`W=|nxsFoORZjDQ~S7&?jNVTcQCcU2n}h(XhBes!#8{l_>5 zTT99i0|HR99_Q%!a>`(W3m9wLH(&q*4AJ%p+~Xw|h{43GYj<5Yhqu0MiFIF6kND+X z*SkGO1P1W(GB6+lDqF_|2(WLKY%?T(^trQbI=*4|3lu=^*or~geQOy?wA};;7y)dA zJ`M|LfSOijaf^{{?vk_k?|;`WN2Fl*mzYBeo7nC+Ccpq>bx`};=YIFS|9$X>U;N`I zfBDUS{@dfd=me0x*=wJy*?Z&y5qP|Bm2eKG!(&9lze=X+VH0H0|G9DCx)wu!j);p4 zb9=r4_`AVdhkJkx^ou|VoInb!KnuJ;49q|c+`!9#2Ldnw6F`I*5IT7 zH~@3#hyjRz3uuYHtA_*7fCy+i26(&!V1Pv+01aS(bkMm8xIqT!xn$Xf0#LjNuz-88 zt!)qi6QBnXP&@)K2Pu>QsJp#?!W)3!`Hg=Vfwm*UsN+B~EJHIqLo`f7HC#hB6q#`t z0TZab3!sO3c!zR`ffyJ7ix3BT=mG7!OcFo$(O!2`%L0=PkgXu^rxh9O`8Mwqz9i+~7_f|Qs- zDcG(^7{z31xszi64G@ER*ajwm!EtDW`HO%NfCqC-#dX+1RkW>d_`x+;gY42pd%Q<{ z%tw9PM}FKK+lm3%(}=HsvpviRIxBk(#bbaAFpmAxh(sg+?ZN{TfCH8&2N7toL~y`u z_`!2X1aTBT--3q-5Qpqayj5(+RQ!h|h>fDVhaZf^evC<(oJpFjNt;x|e+)?4Bgk(E zIs()+csPdwFa#LHjE2kz2rvXZ(1;!UjR~*-IB2^TqY)7pbw>t&=*W*0JCP(wT{Fq; zaz~Y9$^U!Fn=DJSJWI4pOSR0odH~4i(ULI4}V?fPZZ2lbPH_0eu9Mi)YMW^Rs5fzdz{$F(B0bN@`{R$Kyb=(b9D9l_-<}*YL3kMX;Hb) z^Wx_8rlzMYEi9_J*#73@?f3UUckM@e)7p7=%C@<}zRZub>fYkyR#sJBVQf{1?fJ#T z^X>JrwzSfJ*3@>9+Lx}|IAzXWm*+2Q%hJ-+gq+xjpvsP)wAR+t{`&htg5uKI^U~7X znUF0NMnwFd`TeqR3tmN?c($3t~;NI%)?EC86`s(F6Ha_a*>!Hc?&d$#& zCNtLB)Y{(PKW5sV!0U>>?DF>a>gx2~+TAo|hk!`&fL=4-qzCG{_5nQ>Ok<) zJn-^BMm}5=oUHJaxIo%~Qi`zfaH!na(D>-ga(Ga(%A^!_ETFb{P)-zZbfh*aRNx?h zR$}0Pazr%n(iq@i+&Ub5I;6DVU?7Z)Y*t!0vW$>anlxHINUEUdW~7AN(Adz_n9$n1 z(BMGimXxwan9Dq1-G%yY@R!TH-R!~kHF#7)V{_f=R z^8D`Z^w!qg-rnTq>g>+agw$B^7Pu;+|t(E;^OS?>g>+a z+}hgY>hAp3*5uOGg?|F?DqEj;^yq;=Irk7{Oa!X`uhCh=H%ky5_ z!-x|rUd*_$esMi%brcU zw(Z-v*S2n{t(U=K3@ju6dpAq+=+moT&%V9;_weJ(pHIKOefQ=?qUpxJzyJUK83dPs zstqQWpvejZ3l$aw;Trj21fhT=m$7Cq6DAp&_#lcYTC}2%JQiu>kw_+~Ex3( z64@Y-K_aw9h5Y2Bmyx+SFAHqeQ(~0^T}feZqia zYU-(|rb?=&69#!8qN>LKD(kGY)@tjmxaO+so~#n6*{iz-E9|hu7HjOW$R^umuLEke z#=5k`vu!91%QV zJ^8G0NIyUaEws=G4VUr387muL7u|F@Yv@z+%^fv&$RWP?q4v3Io3_uz*w{`Ujd!`|!sv|NQjVZ@=Qw|I@qq>f;lRK;sLb z_+0Wk!F}T!Iso9}{&BwsI`DxIjGzQ3NWltLa32CW;5P<`L89yfa2h-yJ`mzJ5?b(t zC`_RWSIEK^x^Q_WH|!fiLbyS|b#N#j{2L8Nc#snI@P$AOq7eUwNW>x<(S9-Hp+RTH0~}v2-OY!}-coniC5h>47@e$7^q~-qs6-QL(2830q8QDnK_iNdj(YT?APuQVM@mwWg5#tp zO{q#%T9;8i78nESbOo0YO(qk6HkA+%fItBX5Y?($^{QC4YDWgZ)vkK=t6=5oI=L#) zvYPd*XickH?}^d1y0xDZjVnYoO4qt-l%qb)=}Pyy*Sz}muYe7#UsSZy*3NqNv!JbKTSMzvxtf-tc1^8+YTJO%5+3 zPfJ~j?FJ`od`@T@O~C|F)l-*T5__JOdl#Plz3}dDUGQSNqVa&y3+eYB?^s;C%ELD&b@`6;Y;^6TBICZ-HRt2!!d4EQQ*Z z?fnYO1H0n2UxM)D zjU=r9me}`84VTNSa**fd43t&6gIcPnX+_Sm7goP*b5-Zco}0J$vHkUt9+@4{?<&`V z|E~6~y2$k0!g1$--i(>5SDLXmtT1(b6>&AC@_~1BkEb@MIjz5-i%xV?+*dlemh$%V zkBr&$-Sf#y57Z!N@Yd}vb{Y>Mm$(!w7V!_{;sAY4M%;wM^ zZCpjlCf&#IQeebg+y`ok)1$|pqbZ@ALBF$>gSC4kb>7ufYIBWVrwlwx-;L0(C7|8T zu88b04D|n;{pe-gluN8Vv4UbTb zpc_Hof=p!%D~ACcRM|QeDr%%*F%I!!+{iXga6}S`?f`4_qr%bt2kT;PgeXicz^Ot+ zh^6|Ewf$KU^d>B5%5Hph<{W#lI}-g29ncfeR2#H{Kyb3_AwnP!MWTC5rGhYF6(9D4 zQ9!ICfHK+D3zyW%CKKj>spB_%*rFPPrfP}I)qmritN@JTmoEsjWcZfk6V#xA2LQm8Gaff2JfF)~aD%VJ6JqqMeRWC($(+>a|~O^1%EkF>eJo^k!q@4)^Z z-zgY~?Ew@?zMPVP@``Tf`@k=ogl~dDJnZ;~g8sfZJRSGo_h!&y74e`4c-Zp*ngvSU zV;0(juW#zE$Wp>yVGivM6hS{OmEfdFfRh32%~IsuK=vY#vlipP0J&2=dMLjlgu#cR z)qv&UFH#R6!~g&Y&;%duGJAqjXMuz{K#UL^^aBut02vxg5v1}l%p~}cNNk`oduWKp zV|ClJ2*1#-=b=bb?x%=I&YVXbvIrsoNF)ae(qR7o;Y$2Gq|`ku|0AAz?|_sxeuQ*% z_KV$Xzqx4=i@y3mf?|!qk^lnDuvO;KF73t{WbDJpurKW96r;dnE`EMjy%KQ7!3eYH z8S^O`qNo2UKhmJ4&-|h-X`+MD^X|d$K-})_8=Y4S$7qO$1Hojuh*I2r7c517lZy|j zhit`I=0r?!-yZ{``52fXl2*1lrt??em`Z?vCah`>N3fy4iH;OBS5U*Hy<1T0I}jQRN-IiVub)- zq7^*XoGJ_fuCqYS?nA#@W25|l<~VEV?{gpC^9(l@cI=991Rv}jy@WI z;DT7M@ZT?dgm~wk8l9Y&U7cvep2@m{dyY#Lu*;50ih3~!<5 zzYmSB0tCr0drFbv^L{|gFHD#O&;?l*aXwtMh!(*>zMj0O!5mqp9MHWWWrEy(|842GPFme)F#&1&S=~ z-sF-9DB=WRS5P6;_ZVdWfcNBd+=2I$U^FEG!b&XGJ^EzbbJlkW!On2Ha7cO-#q6OZ zg5^obkfy-`u8fTlj;{l8U5TENrIsm%Vn7a+sZ~0oRYv6Y-O9mi3kP-=Vz81xZ$EDH zNZC5A`0Ai%;HIZP0)Kxi8a^0d$?#KN@f-sS?iCjp|Cd~YyU)^o&&Rybqdx+ucnz*U z4@pNTuD~HbSg{b&9Sa{(_2D)B}GIG2T@JsPab72a!tcJE+`a`Pqj zz#RT7e6~O_bo1Yr49@yc!j=Q$T7i>hgMt!a02wCJ^G=)tu(d)T&|uPwfO1X|rG-_Q zJFv7BGe(0&#YBMP5JF>RfPKuZ`$4%exQ3OzT<382W*zrxKl5!o5Qd<2`?#E3q@ z$X=^Zq`@dZ=Yn3{X#~g!JGV%m%`Q81MS;`tOon?Q$crMbVjVjq^Ligx7V* z^g~p!r}iQ+!*~aN$mSp;h$|T73Sh53m!sq3Rs|ph0op5YTT(M?23kTr8BT(y2OL7a zvTsEuP+C%ga5wI!7C4BwIxZHBn(z^13$-ZhPomd}E?q2>WEt%Cw9MrgykpERu;Fbz2oB!YY*Cg(*9( zsozZ!=)+Y-4fm#1!WrQ(Vnq`87zS4f0jq$+gX>Yc7&-7S_Va;?FR3J2-r>Cjh0X8F zj=#rnUVwk&%Om$)Q9zvfjV+Z*48Fytt{IsZ?DVJ!%fLZ?i0~fV-^CmSR0mr{d#KCD zh+X2IB%*$cI3o+?+tXnkbi5uLi2lrh#sy6_^N9*c6^2~NqH?`<1HWow| zA1 zaRDqL%mH9W>kI1)aAKuMqMGadLXO^?UyySlIskTp7O~h*W=aNQNu6qeg$wC!?hQ3} zW1a7p#%Qn?mdUlhsdZkRDStcSbLVx?rH$O_E=*W|u_nLY=vDLyTS`qfznM#VJZUaR zk$}e31xOG2?t}dtjGT*H<_=cHtnU!+*9x{sXigC%(+a~f53EDD(bylY1O2~tgLYKn zxu7_3{bh(2ReG`Zp>Fco&zUySFnXrn=aZ4@_7%z99|@rmoaDe=(ywb*hf!UaiD^ul zoKL$6It-be8U>>~?Z+@d7;5p$rp?n^J-A8E$Tvd|ylXQ#gkTM3i7e*7_DIivX?1*J zwqtg>zp->sYVHE_B}125>)D{^HOoOFeLbiF40xm^n;+>H^U^OiY5QlKlzIIO?YH9V z#1#b}Y#+wb>RZgyj^$sN7TJ<_i$Q)>4&4GZKSsQlf8i)oK;#2P>0H3m!l6<$BkIK5 zDEw?UEs61NFT>F6=au`;SH)5+TzKu09((Q`a)xVI6g*?5%rCG%4mut@z4P?t)A48f zToWmX^UIBJf?pUm5DvnO?mRRf^5=tCq(1{~@- zg!MCKowC9eZ9c+Bo>trKy)*D){U_$dZ=AL}P~jTZg`3i9t!4VXJX%-kK8jmo4)yiS zWL;50JWv_l*~{5WaOswrUgbW8e!c zH+<_zP_}dnekgK`kZ^R7(lBc7-VwOJ@&@3Bm)fJR_pq)L#>2ew1OdRP1gT5_md`VI zOR_bsCr*%FSj_kN9s#Z$WXugs6!=b7Z`O1b7>_0zt2?e}IP!qb^#Gw%=cKXj0R=}W z@5)zf7~jK42-A<>8Qm%*i;<_%T~Bz0V1f(~?axr{L550KIQ2)MnJa7^ja;|;i}#<* ztQi-a)1A5cwF1!rc*S-3qRssu0GiV87qi?z^JV3afK`8r>#W~jxsA2wb8##zfW>E3 zsK}OkzVeTG(pMH6C4^0JE%b{Lfvo^kfpP+^RERPCgY)F{~m6bbnceK17 zqoD}EJzNA=O${d7{@ykdJw54tZSwRV$6XS7?9a32VHo!jKTqb>MZ#e_Xs0FHsN`YP zS7Ac%vPnVXjr$UL6lqlX5E&HX9`t9J`{y87t&>t~Q^_JNf6&}mpaF`!a07)PG#zd2 zr^47gr&Ux2=;66+Y!t4p<#imL@Wf*m8#l7490iM*NyWNZk;n9cPua({%6g7B1uLsK zka}Peb)ua7sw_7pksm$y#M4hjz7f5kaD63hPSewroA1nxp?elplF1yFqN8$xreK5! zr|7-bS%%ZOK)(JvK6fW%n(%BcwDp*85}@P(HaKIBPeNaajiRbD(ht&Ef{v};swGn; z4ZGk1wPE&ZrrhDjs45-3Zx|m@MD_$V2zq%|39h8z%j9-xz8=W5#+&1(`94E!T< z{iTcm46ZO_eS}3~ZBXjIBYWj`hPNk|uL_Bl`&p-*Z;O6ZUTEwI2QZOD(M*r7n-y|Y z2wSv`_~^lf=9C*7T6s%q6J|F6n~tP73MmOvSed++mkfDX@QhkCQ4%B7&LWBI@>F%pl^5a&I4+lOS0Wq6;ZmDJT^nfzlsGw6=+!9;A5Oh# z+}Sx*K|gZJOaf-B`t9xJe`&6)T}osM;Y(0Q?h)1aF5<$8R;4I}Qi&*OPC}-nrBEXO zSBR%NjK!-P+%{T6hKe~_nGdJ`QHLtfAu10frjkNW$>(M!P^luRPrrj4ZBJgYdKqXb z)S#OgBdRs~GuwbvM$KZ;Nhcj8odw2;U&kFXi+>G#=D}Nax zR*}M4)z?_rn_-l$N5lw8+vi<&DP5<%;R+k$&5A(V=b!TL&+vU$9CjRTw=MgAGh~aF z8O~uhsK&|(DZG7#TD|s>7(#Vw%oSx!L<3+BCP*EW-I<6aMAcxxyiirEyQu$dbT|a3GKNAabZ;sEmGbh5DNFaJwk0glN0l2V&k-G))`4E z+`N1PY(DcHATZJc{&fLBp{R}vz7v@q>f}(u3R1tDh)43@lyI2KLTy|`2YG|eVx&Q9 zwrb#$W~(asBt^JyWXlBK_P_Fsunrpykt=0J{dBv2M^971Z5|8g6;E_)vIybel`=u4 zk5xv6DlY^eCY}u6l=ecDIuuIaYN2447C?w3uOE%#xX}73na$FiP16EqcUVy2*k=yDU{k((rvXaCw$RfDJ;E?NN$TYIR~A*3XXIO_G{vq{ zzGjK@>VF$QsUZk8vtF(OgRrQGoJ?MXx@6OydIAdM0p2z_72k!EEIIh14P!$EVI7P! ztexYH2`3u-&I1L(^VhT0d&~*upG40Djp@C!NdHZC(hhhl3!Ib0N)>zQ3lkD*w+xDw z9l)}Y-lD5Rwx$g;SKd6HzI$Ug!OWO4bK1ye@^~f-$`*t23?!-LMYXY+G4V&ISWgsn z2fOsZe()Qm@=3BMX#t?;=xf&HYF@Sq!i&^4qU3xU0WoU#l9QmSE4;#G*wqWjMKY+Zgp1u&fHM^1 zpbfvF#pY|M=!jq02z~ z4x6Bb6&z@s%6K`6D#KlJTpLObDbmmsf}&BWIXWNlgm*v>0YOgB7jURi zW&2Oofla1wAIPPscLG`a0smkA;mb`b))>&eef4eBGKF^Yqm3DTf<2z5*n{hqdePw> zp_ci!Gy3KZpXW+`h5V_X_Kojo!DQkOyVDr`dxb|4Z(T21Y4!SaUtTzHko{RJV}7o3 z_l#&-q38i&{H-S9Y>*DW$@>P5pqsP2Lhe80r&LUD*F0S&-bU3lpf_7P)XXxbghygE z&mM3u zG!Jujp6gmV&57e;ibX<4liO}TH>Or&H&HSIsXL!?nS%SV%l^P`vv*=l1``q%?Cp!W zy|9>UNjJW4`=4mXVr=|QXZ?Xssj0@u;BD?(4>bOJbJ2t?x6PDQ`SPEeroVM2AJn#T zz4pCyr~~phy-3XDT76TcJ!L4X@qzNi_tRzFnZ&}tX+@8mv_!*aR}qi<$=O~+$Mo6# zIo_Mflz=`;;i$nbS^K~<>%45|A7#OwHw*VEk4I)5H@#SxrLFVQSTbOe(D)3(mUtd!dDPgv5_c}Ik^45@{l*Xqp$C-haYX4jeg@5bkoi#-*02{ zH}gO<;Rdnsx&GcVg|avM(S4k`A9d{df2C4-$)}qr8zQ>@A++|-5?CDwZ1)JrK*H!* z=`j)g43VbwykF#h!r_@BNKU%(>`3}~OXDjJ#x|79h6~os=6tQCQmy~Ajf>s?M;&r~cQ-0L>E-)(#&(6B826E^pg zTy>lMh>4euskc$<0~RAZiz$}J^s=<6n7L^{sp;c}W}nzr0;h?%j^5cMQ^7ilDOJ=g zB#<7s(Hz9m;;vw9nAsc>XciUQv8&x-W!b?rcQDiPCPt5##VvIVzv?(q-Epzi>}H?Y zGad6J%T8lNr|ncbaijgt6eNjiCu-@i*P%M=X>^gAu+IsZ-n4R#BFtyqz8yk_wRzq~ z>+LY3uzRK{nZ~K2rh?KsmAjNqWNz21hdLM6KZI0Su+c4Q4RznRKyNKAs=9TP8|n%< z+lyjN(UvJ9bv%WVn(8ey)()`SF5S}>@K=izWakU=hdumo!m|U+*AiB~R=K(wNg?a@ z4a>=#Jj*^<+w~abeQhr zuF5~x>_Tet0u}6$Zqb6=;5Vn(W8aII{bA?0XwTm~mBJG?>K zlS;kZsq^Ulj{HCq4+kDU&bprJPmiWz-9$3$qs1gOdHcI9p3Ad)f_ag4y4)A__D8;y zZk=Iro=2d1gwNqDIG~JAp;ca==LD9r*@*X?ptqve)evND&QuBG&_gHm#war_gP<#n2TiVpsN35 zj~|aj_W;%Gsqv}G`L_9jbNShxAa4hi4GSfxz_@@b?cULcD*JQcKdw!NpgX9%wNyX% zXJTeQwL;7K%v4*V5cfY>C!I!GvBJI1D6*(gsOQsx)ew~Wl^+FjHIL2vcp*@rR?HJ$ zsa__L3IWKK!ab0kdE6beJzC*W)a0FIyGQC{BLnt|U9)6R>-UwVj=ppG&z3}NxELH4 z%4{SFM;yC=o5r>doj}+*8?HGZZTkD;jZ5)KZ7UAM)4HwkR)wnnL;xD>*7YIbL`p&x zD2-(QzD|M*0ezv(@yiR@3>Dx?jhyMuoB5p!@%T5}MFkwS)O5VEOczXuJx%mWkwq3K zzzxXw=T(_qRlt5l)t-!6Ir6cS&rDS!aCNAuv0Ux$m0Yver=3m-0U_W{i&Ke#ZdLhUMaLD1^5{NSY|; z;He^W*eL=4=Dz^6S@SS8N_Jphc^v<&FQ;O1UWl$M_l$b-T#%9%1F7nj_apw7)^nKf z=cAsru)g2&-3zDV%zp?gBF*j;dpfMkx%w$myEiry z%qwoz5S!*;27^++uZe;oMP0@*f&;J@DoE1_crc_4*s`;B!IYYYp3Z%skU3kTPQ*aZ ztdBka+IV?g%hA9q504+u3UJ}{7Z0vgWRrvOrcH@~&jfSWMWaLeDW{)?iwRJAkkl2F z+_F3!75AyAfa(?lkBGACgh|Tb_A7dV8DcOfBvtFi+F2$0%EWp)QnD5lWrWy`<6L}I zUYu0=XI9t_O87cYyjU#{agRNFJH|R-IA|_wNJ>}29Sl~Pc3Lf&vIS57ij80o*<4L9 zjX8fr&y?e!?VB{^B3GRGD^_8jn994SFQg7d{%!^4HH+{A5%)JfHwU zEI5kuL?g^=;7+7%Y}OnQ+6E^TN9OXmI8RDzWJC&OfdojoIDP)?&(shyN5@f=f*bYq z1KA{$6+M-mq{W$$c2sUZ*8_qd3PxEOa4)kHoE3aC^6Zi-DutI^8%VM(qO)8lroQgX zUmZeH%sjipp=2@gk>C^Td4Ec`7ZQ((^ScHMo;K)-S4n2=i40~S@8`H#J4Fd{yD|eA zxOoQLuQ}wt?Y(cO3pgO~{tEKZm#9ZpvX36VJQL#@km<@(=K4ndA~?dsKYnkW+^aPh zi6@1`iF26-NE`CFr58<{e*0rJVD1HN4iM+2tamFSDlVl+M*dQ-`~?REO97kJzPa~s$2B2RZFs^$Lr9tlDGh{=C&WP_Hn z#<*^ITIWo_4}sL@T&{4zzgaaoBil34g0`?qwZ&Qf!?h-xIfW!mM%RZ+zuEs2LStv6 zm|blfC=rFs-&aJj;I2OoNTL_;oH&wP?~{$%iaZ}tAlF&cIXd#rEDkq)KPW_sxw?9? zhCTXQTRLUMk!9%mmth!Cn`NOn`t!fbs$R>UZNjnToRsU}Q0Q)V5JmhT+>P_qBOV`ch9B{&Hf3N-UA$|N-fVH5thy?!0 zx!7dizfs9l7872+IRIJfbK>@U8&<$%=nBP0N=BU*s*p$CX0f zDf4lD%VXA@X7HJun~J>FY;FJXpP$ov?KFPv)$2FT#sp8sb4p$tbc?PYfH{~_{t5O( zpvVaKXH7#yzOT?KTiK=JR3t5!nqRYN@2A|kg)EVCwvBlzR?8vtXHl}}D^r{Yqdj=| zT5&#p|L^L83qd~0dM!G5pxl}sEl8`{0M!b)+3B@tC2n-Qtyk&xxh`6YxK!d=)b{>D zxsJz^8<(^mxPc-B-r}K1ZZf6F^;A^7?#Ai)|K@h(BFTQPe?imH*<+ide1#kL^Zt}Y zwd7{CtWJ@FM%RPI%hfX~Gx0^r@K^Xb8-=KB+l;6$*ssY8NFka}Jfq*f_i6koo^*2B z>kl^b>EL#0IWGw=DIXe(C0k5i+&#iKwS6x*M=j4PO|a)HojoS(xi|$ZS+TDZyq5k< zS?Tt_V>};Adyjpwiz{-dj^WZ3LU}?Vo^IXU6;m~CF@56^U+=^2_e3x~RU%pC!mbE@ zFX<2x8;exhVmtQJ>re=q`!oEXsmd%K@&$Xn(FgLJDgXur(sHTjHW( zv9xX`ABR)P9EcW_Q@*QUo57;>=R<5hzmk2jEqlslOx#L82i7vUChyP^7s+WCxJb@L zG5$(WYSyXu6u}*M!u+RvhT57H45g#vaf8GQDF#l)AEn2A<<19x3JQb zU@3@hA0wp1zS)jBRIKbbE#uAp+(5$EpLn`9c{p)%2FrHD{dgm@<|&5t1{Dc}2oGCJ zl}8VgIDp)=E9r>+IcEc3s<}0f03V5afP>A=DoSs&(JJmXJhkcq2d5k9yyinU6{7ys zcp?m;xspgj!S7XF5F9xN8f%LB5GZI(f{tGwT+ot6*H>1N3iXgN0;zgacy2m+dMWg` z`_|r%ffxrBD9o^5j3pJJD#_e{BV>|}UqnnSuRldK|Ev1O!G|Y(_g)y+_|5WgPc7>X z@3|iPOJgGt#Hwj@^+)VS6l5g2RZS+MB)_J}8krXVJjT85mMFu0-Gw`clBEbhVdiq@ zTCs>*d6(l56F$`N!#$19?`L{a0)1B32Ln!(*Zp7F^zN0=-YdVZ{SV>5>CvYX3RPWg zKKwWC?B`2X-K;wyaWmj(|A6yWt5j&fx=Y1u5PV7{@gi3TxrkG+C{h@32n_vZDyR}q zLjXyqMjK4_k6WR(C`;>#H?J%BisD#L`%T0dFRT5gEvkOVHP%jgOpi3J=_%)wyM;?< z(;F@HKxlqJw(3nMF;Rrq@Db?3N7VAGeE(594OO_ZHdS)7{nU4HG+09g8~3+NqHI`2ih!X5ce)OeNad$Ym&gz>Evuh9O@(-+qs<)cR5 z8^&urxaJImkoY71L~Q5 zngUUa8PyjMI16U$1;hgKIT4BTUNMLs2?=MS3Sb1c8(o~WSQ4(q8Bc1=~_BlBse(=M3Hbz|izmhHBqBKr;Fz@jF!^bxx;tDAeO z+=M{4_)xxLNv@-EJR8MUB!?|0gxh6Nq|4J-!rV<>u^w3J^S6kX#3PzF=k(>z=LI|K z#OP5D^&P?%<*aDn*u!5F&-g?Bnv9Wh>}>~Nd?Puq1M+u1F?aZ%r_sUjiDqaIGD5OP z=8mDlF-@jtNR!;p0>rY2xRO`#=j&^gDRs?`qun75&Z}0WUc`*;%UNRl#x1)Ly7;A+ zEr#yR;m1(h?RF*Cu<!RehD0fQCI723m-!R2vkqsk5w3M(nyZfG z^A9u(eE)(Gu2TGFVc|Wb`Sq4?L3Ar>?(I~_w_C!OGmxyVhn>khxAepp95D<>9c96lI%lLVD|Bt#R4d!GybV(iJ$t-x1ODNBKKSot z_hO3Hxpbz&r|^F-eyX1|9=~H#>1bVkTCvbH?WXk`CF5MK{TaQWAi!sFl29Ev%||EV#UuT;IQ2 z9za=tJ+>z-@OF1!8AK>B2D;ugR-c%$o;)@7J0UV4xVOZwPK$xMT-z+rq;gn}Jo}%( zB6NwXxN>S2!^ZsEP5&CJLOxSEakQ%TlTz?1sHxM98MC1eoOsx0$vHmXT-&a9aGDmX zFvaK`X#Ax+6EZ){7#+oZG7MHtdZjQeuTQD#5D$LiW|%oObAOZmd;0YA7KNG9iFMtR zHJ(0vrPCs(>RK%imPy?TvzkBZzWR!br}J=5G(=(ByQ`Hmmpx~Rd>?uu^wck}Svqf( zYrYSTOHRoUbv3&D;d^qEchb?P(-A`hz4yPaW?a;9w@m!dSD;q|o(XapsZ9I)@2PhV z1r@q*?Z<~-@5IYXes<3)YQO$0%eGz?s<`CDH|$q8s^++}H?QAf*B7FsaX6p1?0$KA z;LL+V!|Jk0<;fK0(CC3iZSMX1CVxNtYz+SQre5riPgVWz6mh@g&&%#tm4$k~CfC%j zm;DX;CN!GarlDFRc89cH&tTKvdbS^Q-SHIVbHBC?uKBpqYV-x$aWf6Smfn3b>T<)R zIJ5SV;@5>oFX~6X$lyCJm#;m4Z!?wk^}kA~tOs#b4Ko@aw<9=4#?_D8D|HpT&scuy znaS5UXY%p+XBgU&${{vkO3~_jb&!i68 z4oeSGHmdlPw>vLCUfpGK2ez%3|D1Kgi;i>K3fgds^}fmB*tLZzUsb_;s|ptNeIA7_ zcT$OIx%G(3deUm2qo)(sb#@WJ9OjntWg5Vj!K%6H@zL_q~g zvS)*0(g2TiII9)F@9khrrgK#D4!b~b^>||!Krks3WeIS1FfMyTEWoE9tS>ZOAPyIR zhga&jP=Ck5tDRwh;VpWB5Stai%1;!E zgHT~N1o2el0JP02p%)uU5iJMAG@8#aLTBj+v6rL9X`^SVZ@8f>@eYXp#8@R=B!yx? zBrO*iOFh2Sat1;?z`~CFL5Nz2a@U#zPd}pxG)O^;dykE+8rqNlX}^+#VVk)4``01d z38CJ`LIV_j#a|D%3eH4vlL+JfM~OUrf>aasFo-3IfUxXarEn!(-|lw|=NtWGySAJO zORyKP`^|6?D}6K$&V#)C)I&xqTpB=Hfyh1(UFsyV0EqkFxE?*GgSFhsojeG#67*+| z>cn2g&q1@RiL+TR9BzdoV~F@TkT;4dwgvEvI2&I)#y>K7&?`~<WyZrhuDIX#xbfxpm2kb{m)7(v58d(* ztyDdL$Ua37+$lC}AV66}=@eqp?cXxqVM5uuagoyBkOy#lvERyPvm;sEF*ZeV)}Kw_y#ekyAe%szG;fhF>gL5(el-4^6=m}A2? z<3SK<3)mz$v06i@00^-~5abWxiiHW;5n_VDxjJUJvke$u4q|i&QOQoMIn+a$uu$;a z69Fo(S?2s6yEqxa7Iqs=c10wC2f&@cqaU3Qv1+j3-X?0xH$+8-8qCEqFtbcUSd%)$VLMWHMFm794-r|m7jaHeqF5UV*dDY3i=-5Fb0mV zNa+FjC;qe`QggAH1lA=YPabm;8!(6Jg9I}rky{`(lYw$TJhdaRZb59I8&CDAC{IXl zfB^Wr!M8v@lDm$UWkN7`KzT^uxkqR@WbMpBM{Ggl5}j>}Ai!OWF&go(Bp}@k*_H^% z71H(yl$9-kDVT?^6r)yTN{_Ybq!O}t$GJv}@4lPoIz#w6fxz|6OL@0&`A(SSDExhE zZ;?(AZGf~%RDK3b&xn}cMpM~|)XywNkcbLCcZ|%4&JY3NLLun!FL3mMC>r2pH=%dZ z{KaiZW9bgQ8}ahx5{D5nV+V;zaA$K+!DaMIv!hb>)C~6cLyF8a)6z zj3k{t3h-=*AUFVhh@qkbLs`6!i*Es}8*-cSR8}&0T>4Y%%UfJIblpG#{v@p3bCS)> zNF!{L&AN5zs6$37;jGWi9AAP2>F~MP;JZuHeP7P9E}T=K7ylv{dxuWL!|y|&M$Ykx zbPqie0j)sSsBlMlgS^R*;>p?B#+Q}f-6`nmXTNSj!i;gQ9QRQT0=qYW9X*dSBH}lw zp&Lf{K0`MXq8`ill&>#Fg0uPYK*@OsJ+dU#-EwM_pcjS^U%?2>5oEN$kPRvui3x}S zCftjJ3=+iaZFsg0rH8+Z?n7WczCb%Of2{2r17ae=qdM$w2LVWHp! zgb|U$&G6TGh>N>@_dn7#XbR~E8UHa1B>{^MVWk$*FpRTA19SYZ;sf->lZZD&8DD}X zi-fp88^#xS8)1l`fz`qCr8gm+OnDS{^_K-u6VHyNL>RJ#K}T=g1W(Hex-JeG=ewNC z$5LJ&1`vxa#2!e{x!ocNLbIC1@e!e1&|A?T50ejLXz{ef-%tq=I);4>!CfhJ+!HUS zx}l-U8Vf`6`v7DJ>9T6%pn3?Y;R$;sXiLY&0<55?V3ae;B2503YO@em+6ADfPSSEv+f69{e^kY@5u ze4L&Z_wV@qi<(oRhW0m&E>vGaq#8R@?tUB0G7%9F^z|NurK0-)TsGip6V?((w0H~% zH@xL(*oc~FIWh+x>d%qf^dqsMVk>h;dgjji!Gr^gFw&keywo*4fF0kgy9aUw5(GyM zNjo)sG;g>+9nlA20{z4y*N#0{N}4&1jQvZWuW>h}9{8Mm!MmlnnUkIlQq02;0%3=i zo6WpAC7O(JDd-M@P@Un{GTTVVN)L0mu;3E=1m!TbLtIAGcS>2kBO%o-$DL&0tm4p= zy__08v;<|zawG*hj1B$1P)%~^X$z(i`_W0gj?#=$>d_l3!A+2M%amI`!~zj?OXLO|q*DZ`(W} zNaY)-!|=m8B2;k#M6Mz_3M>+{bP$E^plQzd2B6YnT%K~$|BLFDy%~`mf}{cw=f4y6 zR!EoyK#bk_Fp)^OtdL6y`rMF8GVEv1{2#mufmz8<4%OUhk?noP*0815>Tl3+jPqWo zhPAX6W6LPXP^dOqZ-Z%gY7Ancy5UQNLqn~EB~w(6CD#;GsRR=UyUhli?kbqP2`zB? z7$PVnz+fZPxJyD`-3#FjbB^7%@2d&V-Ci?yHhEkQ|4#$aR2QK5M{uM__OaaciI!|N z96PWhZi*AWH(7gg8e1#nhx@>)qh-ZM)xVv?2R(eoyZ6{b%e)F<^WWZwxScDHA@*3{ zn8DxHcthW{&{@={q}di??nKD9XXP0Xu9XrndHxPNXcF<7vn1G^T}N$bg@JB8uQkFb zdiV116Uip2_PhN&oA+)AsI52m!D48uj_G-k1@1-yQBzB_XBSEiySvSxp<7Gp3}O85 zKWD97VidhrBc@R#7f_$mvMsif#4*f_2gs_4wT(4Z! zCPH!lU5qt^+rp55hhQL4Rv#kRKq!XcaY7}RwK4&cxe!=~^;3~-q8>5+^UZ7L)ec8(s3 zYTxt2KD_y9y5pahL-`1~yG*CToSOZ73H&pZ~C^eFq>Cr69A&qW4- zd?)K3dRv_>GimFbt5<5OOVB$hmFF4$q`bbTY00MR0`gJ$W5o|6{|UKfn(Wy+i3)hc zCiEC^mCe69IB0394-!_Kf2Xjkws7{HbhvU;tfY6DUZ73UQjeAKr&axJ+tM#Z+xPCN zHyt|rx@Ir30K4Q^jYJon&;2v5L(~e=JQWkefq4jbV}RXk0E%!9}l$? zIODFJwJOq^s&jwPrEyU`E1v1djpsgrTK2iPgvQOkjL zSCN9hPEndwzBlhH7T8Rs-pWp!Nx$DDTKR~$MpGv ztYEEc34#&7#vf79>C?H_HH2>$H692rReTcHb}b$|GwAyI&4KA$!piS=cPpo}GyZ&7 zZmPGcdW>G1eLdXfyGRK--IlS^%%v~7+WgNX!=q;Z>(Kp|<1@I`F2#?c>)pDJnd8;Z z9EQz0U~f|IcAe1|``35nhVI|2qk8r0ZTiUlzpxXOLGNEaV_BP{L8j4OB^P}~=Z5q@ zG;Yw(R<^S-MF{@lJ9GIjvUe8BK8o)y)r@8D{%K^2@2z~2xDhyOb$?52e}e~eFl8Nm zb#Uwb!>ifS60tb|bMN2S3+BN-Qv!tXGXRt=0U^#!MOic8LLJbqE+L2~Npj%!C%tbd zl=nTptYx^L`mwAj7IE&BieWV|6b&wph3Wg-ViG$|&Tm!);A@iIcR<% zm^Uexe_GD`n#JX8-si>E`O@3HdK_Ko(CT5vsumVEI(0jwxT;_2(csw|2fV3t{u!0% zYnIO9d}*E5GpcEWmacky=~<7G%pD)K*%mxZUOVe3a`vX!JU23PoS!m_@4R;2E1NHC z-g;JRaPYie6JPdf(yY#Obg9EA-wSn)m{Xnjn*Rn*h2AN>^~b{CLZ~=@F6zphfzXgu zswE1k--iAr$FF5^t z-qL4AIyRjrzu$U3-qub%h4Lq=fOvGlDw=8WCAj&#|DUt&t6ExCJ4cU}TztNudqJxq zzxhqE;{M$2f}tyKf_?n1Tq!x9_Tf@ljk*a7>!RJ@kWIbfqTHUG^Cj5HvsETaWcQ#F z`|Y8tA2qnjr)jVCm1{57uWgj-{XB(Z4%xQr*|<=}6fQ9b-&YC)>va_w8N zK=ppeBF^zW?x}CYD?hR8y&A)VJxv1d-X8twb~d9oQ&=FQWIE^e(+Ru51A$t)F6REM z-QXtCGN)mB$uWG`VOGyiruBq^!o&K@QvZ_F%Wf%o*9~9)`{0aPT#4fOG7Fp1h2-R} zf6IP@!=wGpM6Kg}iIDXa|?$5<;EkHfsrKBQCP~LR}Y=#n+OGGhOO{ zC(>L>l(RPU38U&4?LS7wKLML!O0c{o;~z zqXsyrLKSdOaU56xm&?RHAQ&9xF_-zwY5sAGTR;RN7=aYpu zVAux0|8tR5QrkC*%$F;>_7<~iSa&wn2Dp%*>Uu|9OIbA3}^hgaCgPNamJ-7#qAs!7Pfg(^&e zN+8yKj=q2cBY>gjClRuB`Ve$~A0PS2SN`&u-+bpkAKj+kdcYBGVpb=$^%5?-HW^OP z+E?KO$l3k)6||2+7~y~S!H>|Xh;Mx8zaRebm;e0f&wS~lKFb2PKG?CJ{d#SG;bbp0 zXwUXgKugFE0ncLvuHgaFFC~Ug2a3W=~|&;lqXB{M0ogAC-7f=g5C?Nm2QP2~yH0=Xp5!00>jU{I1UX{_ zNv8yV@GwpS1yzs*T@VUs0tOurB_L1&w_yjfPz$$^3;C@FQx9W;aLYij2!rMbizW$A zFa=jI3foXHrcef}kOr@?3+vDh@6ZmvF#nK746ly}%aH7b2KLg>;h69ouD}4p%?%fE zPWB-NpRhgV&<20;kP<7=66sG5jS8gtkpKP=5MNK52r=zYA`cER5g8E`St2MNaRynW z{U-1dV^J1o@%S>aBtD1}hwvl-F)=_9c|>vcP~r!`01?G66_3$pSWymLu?At07M~Fs z|D(~}Y;g~{Di=+L^>{H5BWDmzun#-O(Tqk`m!j>`p@nv9TV@&=*NCAA@lp z#nAvi>>s1>99wZMUa=q%5+p-%2Ne<*8~Da*1ApK|?L1Sj3nFb@;ouF@K_G8?(FD1m>mB`eY|0n;p%F)jb2FcDKTH**@{ za{7F5E|Ib>wel|QQ4m8BLE_~w+6NrPu?GH5?%YvIz4M zAKfSaI;=IXpa$e3Hr;SGo1-=}GdG_TF?UlmdlMyp^D#f8AHawlwlj>bA}oy)Ig?W( z&k}zfh0Hc55jxYeDy0)FN3${U@;X1l9}bN^4~-l?>Fs9I9F0W>ytk3Gb#1+IQg?b5%53LF+kCiKsOX24HO8eb1UKVG=C9S|K`&{ z%>hDFB0u-DLS67e&C@wKR7MTbLzfUit5bhL&rln7Gzq_f8%`8O@v{afU_x8eKgp9L zF;hTilu4nnM*o2!#}G&TFE4jg8+!CdPc%hca!8BRNG%jeZBj`!v`Nb}7N0aq{V+sL zlN<5HO0g73w{#!7G(5j_{9d# z9nN@1JaOj>jT0wJK7qeP# zG5b=59Bv>87(i^rHUc6*4uT*E9DrjbrvZY139z8tQs6|<3`pU%Q$JNc|ILg((~Lg- z!8>OqD9RyD2}H1f)E|7qRQrDcNDr+g{6TNo6=$(xXanKU(hOn`jT;y?RRni&EsQeo z)j_$yWkG`+Ote0I><#LZZn3~~VYc>6_s|GrAIO1d9oNi2muX#fK>9&$L6_X3l+f^p|K_6i4AOilOZ0mP^={Euxzy!Vl4(#0Vd>VO{HUcqyYCV3&edVjdh9NWIr6=3!_PxIX_!S0x(QLH%Kx zN}|k8bQ=T#CF+549khQQj3OPf_k_7%Vqtc9F}NPOU>?YU8yC7p z%mgyP0PI(e4})xj00Vi98%~Xn4=s03!i0Yh?SUg$54NFmZ8d~X zR38|Y90GxnWjH13L5LIB%=E!VuwrphxM@{5lgZ76PXdNdRE)@hk@et)b66F3*g+#% z9~ha5Pt=2<7l8+vKJ_3SlvsKlv>ehwgy(Y`v|$Alm)sKAA8wf>{~i^Sk9Uy0ICH@G zJjIucuett)?u>ua7;D!TM6ET&41fXTc#iS6Y-NBO{5J?D0Gf4~B=~^^h%_JQpq2%g z3l`XrSvZopp_1#9mD3q!k-3BUl^^<6+ZE7bV>Ksx3khSsJnFI(vEAMGRV(BUx4p$EU%7LYY%g!hsIR z)Tl@M`H-5MVRMbu6r3aMsmmEL$`%6-A&=MDs&$$q-hc(nKnT2Am+=*a#hQi90kHcP ztvw71Ec?vNVNh^op;cF!(}8B`+C(?&M(}!N^_qXoD7uuRVz`rAfTh`051Xzjm!y*< zvR76cW(Bg(ySG<1CFX$}+WD%%yK*+WvjKE1;v=+)nzZ{n`Al1>sa3VPw)M((oX2*Y z>o=++Kn4!s5Y|8&8h`;NU>m;rh`+jSFQOiV00C40!&f$j|MejqMjX1$AxrgOx`7)= zE17?lAJ-qYfxamNAAt0Dy*DTX+JO^opHjegx%bfYK@ftxxp!H(Qy@mF`;)PouN`>1 zOX8I0mS_*{qM2De#JfHz7qF50(8wf6mY0ivoE%1+ALLemXZR%6dvQ_xr2SdTf%Ko| zy06VaAHsaZ^&t?B*rqjSvuom1^joz38_<9K4ZyoOwL7tWQ_Ow^AOjp@0R$j_7n}js zpft3h9(c%8%z?}mIL7e-9sa-tRKOqlfP1-MnThfuF8D#Dlg$BS9fh%XdDW5JaFtxUE!v*Bmt+6+#g$*V#~oA;wBelxxK@9^ z!N>i!VHiVz^SmU`+(EhFMPMbDKUuNyK_5i=(E4FR_5r@3oMTgS$?KEK4+o6>oWBDd z-xJe}lbX<%dcfN_#SYv7v>_Y*;~m6y!6QH))?hTC;6?U98!#P6ZT%#;ArU@3)O|dO zAqApYxgbiS)qkA2Guwh``fwq|+H-&1AA0yWeAJ4S>LXCP5QzOmL3vi<9g&-yB%XY6 z^;I}y!mywHLAl&h9{EHiSeh>K(NIJm1s4-Uc1D{oT-4JA=M813siO|8yV(f*|3gpd1cC8&-ePM`?P~ zw;>S_KnVIk)a`Su<|EhxLE1syo+BCNWnwqhy4f!ngSTOLXB|ktK1gQv^3B1_8#c*9 zd7@cZ=QX^$e>`3;aKXc}S5d<=*;p2bo?_KSy|J~UB&_9%^l@MqcpajYxGjyN>?)SCJ_60`c zP1#)^xWVe>)Fk3y3kZJ>4&QH6BI{2y9ZVwRDSIZyJyQV!pFn}+{P{D75TUM|0)Ap+oU~`$kUV%XusNnLGFqicpUq4+3pS@f*~S^+paX^wOUonJXh6)F(2i z+O=%kx_t{bu38=VDi{H?f@ZkAeD{T;vn}wsm+f5x7=QV4;LYd2R<1&05365vO5=di>Hs074U3TH67hik%1(;x&4M}8?MjnY|l1eVw*k*!x23ke6iFTT5 zExvYCXj5)EB?BSkrkg&!k@i~zQM`y9d=rXjPJeSWeG?r5)L9o^cm@g5MME8WI1!Hg zos{A{B$cyVLV<9>g?$aR_Yp@y@$=F)dc?Qqc>^}oUrzs36ktSLIC`UjY=XKWgKyq< zQ=xT2WL!l~v1txNE6o#WtUNIq5s3rUy29^0k)&6>>ZClH)l$XVU5 zVfmv^p7;5*6TRcXXqKD!K=Bb5{>+3cLN1ZI5~K-FswcquMGUB>Gj$5lr+$jsXicW_ zWE8LZe$;A1uf8N}MYN)1t56Lmq$^9ko_}0tu*L4obI#j zZMIRyHl?@NwT30P0-fwi%Z5X=kW0@_d+oN{-ZYfkN*Oh3-%|aW)mM+3wQl^V zD;m4*e(MnB2Cq~$3+t#_x;gxi)%H_?*Z3aaAaOI)3ZM4_{ml^R{pd?v_|3M(mkyLE z;hQ$ZaY7#BxHv?O5A}JQLgDj}!GD<}5E==LIY<`~%UJ|NnVVIuPFJA*g>H1!ixFB> zhrtZGg>^mhQS7jFyAX4zpqK_utvmg8Lk-dOn3?=j1)qmkS*0}NH zFCqKe|408KM-ZP7a2wpvhdxXMD+S^Ma|zVk18?P%37SucXPJ=(|M*7^3eAJfl3fW8 ziO57M@`O(t2yIw6k{4d7YP_2v@oH#1xNcH5Grz<M0x zm@oh10!&$M$c&Ktp-)Z%!7ePcnXY1B9UUl5Jia7!+TaEP7pf?3>U5_x@n%I{_d#95NJZs7?*<{(MItS5fiz= zOBvCme;IwH0H-(-jDJqFtQ-YUTFr64P~BuyJR#{zBBvDr;*}pOQRx#==1iAD6Q-P- zs9(8qsqArMqCBlEH+|X=poX)kob9Yq~_gCx$+%6Gn>4Q*0aNLr=>&o!b= z?P%sX)q1Y$o>zsfSS@v!^ zjeq}2jtZ3sjo-B(1Y#54L3 zX$t{;YKBEmv}5`LcmmS}<_0WK(GP`}OV9;IC&pLm7j$^jeh`5Lk;Zw7l@Jp}e}4yL zfAWSEScG%ov3LSVg#)pA2iR!~sD)do7!6o|^{^@~!42eth|i^MJvezk zI8y8PN=#TMgy<7TxM)ikQ%yHhd4GsSjfgh>Kn?{}g{nt@L&hu!$c3%w|B8d*g`@_C zrY45E7jZ#Q0_C6^Hc=+M_!}+I8W~6t`j!xMU=XGkOz;76a2O7G0x3&0K<{S|f$&8N z(}6Ov4_!bo|A%_Ngb$Hsf^1O~^Ux2tf^rq&d4BjNH$jaqVGydK4--*EPk*6Y74Zh6 z(qeuBDP}cpG=Xhaw;{xsaw(@U{V0e}QHbB5c^xxNOmR{WG!%LE5)4%nY-2vuh;r13 zTT8?pr|6MaNN`#BiX)kT*8&FTfI_0xaI}~uW0-0NfC0Lw8{}XBHEEL!fRn*tB@8iI zrh!H3fpS4fitxb=RDc6t(0`2eqH!Q`ARgu%V|EcjIdyU*EM4#oFy{YeK9_M%u_jwl zg1LlKIs-kX#qBX50!a}N8wzcbe;9dp&ja>AG$O5xr!pWpCyW9{rQ=+7n-&g zNe#MR1iGRIdZ5sG6b!nXuSpS95}{Nuq2pkoR5%pRHY)D{qJKqdq(_RRH6o(0Q)DLU zq$lbmotdIYWs6JYqV5@^GO8Oi`VBTJpEyc(Zy}*J;G^})AvZyC^Rl5y%BF4VrUJO6 zLG`3_N?$1YpAL9?SNdcCs--i^oeLVD4w|D3M-xS91Qfb9S!aCuQjc%ysE-P%R2ZjC zN~e{|S$3+Te1FQKE~KXssHuI5E?nxRg8HdCIunM9s6hG+2U-6W8WO3m3ahbNS(BQd zmTIf!gsD_opre(i$%&<<3aVo!s(}iok5s5saH#l@s8}}?P>^`bkpjyqtJ6xY)k-Y1 zN}{)_t%sDWDw$uM8l1ois{4^|#5!8Q8WgmatkUXl9DgE;3A23Zu%^~Zuk~uLIx+%? z@S|LJnXR|2|4KsLI)+y2t9u%(emb6jikx41uEshO>YA!lh;!)G5A15M7mKkOi?8~s zicDIo01L9WBd}Hatp)3;2b-FITBGLrpoIFcTClD_%Bl!~1@&Mb^O~_atFuYEvHQw; zAq%u2G=H+YO0e?zqT+(Gp{lZ7%CdvHPBa0r$_k`?=XV>&|7$qAvstUP9@?`VE2lvV zwo5a#S<0&|YO>*)v`U+>E4#3y>aZ&jwHAA6LjfTXVz=@MVOy)Wd;6wcJ4pDMtzj#; z(K5E^TCzs_t7$t`!`imR>ar`r4I2=%0hqTl0e_)4C19GdmwQIY#8yB2wfFb$0q3gRyQn;qesb>qL;@YR= z`Wmg?O=OTY!JvDVA6e>NzToH7T1tVYsumi`9?8uTT$2|24X_2hO9~;YDJj;A6#^8#}Osva z$DSO>3vIr=yb=!`%oDBD5na*8Y{!Rmk}5C(0C4{S0AK(Uz|-oW81LW!43Gi+3>ogM z0uGP?meB_p-~bJv)r-*q3;+Xbof!X|0VePQ0(}`>?EpRf#k8!#&b-8FE6B>r%PTa> ziTnd}vDAsJ*y3otFMz$TJbzT%umDY903qN24zL3T000>f2Vf8f>!1!`00!G2+F;Pt z88F(UJsAJ+2w>0-+Ykrmpw;gD&gT#ZCSU*#0M{a|4)*-c?kwAIJ=zX%0VW^?>#z-v zunm3C4x$~}rp*8*5EyZ=0Nb$JgE0pt;MGCm+06|Gt&JF95ZdQ}Eq{Rl-40NM*fQF( zP2O=3+oRnFqW#)^unq0d-n1Ru<>b=?E5SjX|InX&!Gc}LMt#VJjo6Eg;0f-X6)*yh z?bHmMNEvX|WgQ1EfB_c(1gZT3KyU^P@B*?8-Keb&kB|Xp&;cGUPU@fn9nj$!;LaJ4 z0}Oxx9$pyktkEXk0Dl=!1He5PV2}YAzyKNm1TWy(8*bt%(Ai+n)+SKmC;s7v@eU0@ z0t}GW)qM^ded4Hn7|Z9T0A8Ns zX@1>^wBIBP)QOwR0UpY4Ti_#b*a}YQi%k&>?%;I%wL+BvUVjn?TD=V~a0V~%58EKs zI0*n4K;$9r*$prOI4J-*VA3zp0WyG-Fp2->A;16;zyKHE0R0@$4M5p7*#s)U-PR<)1UMPpFI^ZJAOozf*+9Sz8BhWjzyJoo1U!8hFK`0@ zQ0>Lt*$xl{6Mt~*3?Kj<;Lb1L00MxM7XSmCodE(c0U>bJFR%a?UXv4W2DiRQd(F(X z{Js9Ys|p>>PCVGAx)Oab1%iIyh0gF1edrDT*py6EaUcT*kONL$1MAS)FE9ZYfB`0u z**owK(5(U_-tidV0MniWHGKv$0022)0uum}U0wnVP=5ksZ5S_50s?^Yzg_~5P8jOY z0GT}j4p8zJZrKCSU>;-vK)g|3Wp;0X6T@FAxVLZ~-~s05AXm6HwMCNf-@q z0Y&cs6CeXfegnIn12+)kU@!ClAOj!&=??G?Q6K05^}$N*>)r{sJUm01ZI$ zkI>aHumHYp0BHW}4q(nOUIH)h0=O;vow@7|&;c(X1sQ<$oJ|<(pyce11?R8;9S{aD z@D5U-^%>sQ0szu+KLJut7};$ASdRsbz5{8#0Drg*19V{5OD+Xqz|lG`=Cuz7I{*6W zfY!E7^)R^rcrO4AAO%-00~62!74H84Fv;EkaZcbsf&~p8M3_+F!EFs2f&s%V+(dj8 zE&jup5hK2R`#6#VNv>SEZzWAyyr@y-N|r5MdPIrOWXX}`LYBk#k7G`jF;TXgGU7)# zpO;JA1si`|Jysa;VujI(Wy9?YN5|npwr$q>W5GMzN5+)otC}E&O1{nY{fO$vf#S3*c4m+sPhhXO#89D&2oI%~dIAA(lz|gvN zhBJ>R7--;{K@Kq69?iMUd7HrDCJ>+7W<0|qb$x#_T$r$$V1o+)ayZDq8O#j^Fy8-x zsbS(m19j?NG&sGu#EU2bO4Kk1=F9~djveH<@LoDx{{0m?d?=!_d}@g!kM;>kB$8(O zhCr7dgzzPw7_8~0oOUYEs6c|Up$i?l0x?7pMRwGeHI@ z@d7{vh#YbaHY~t+!2vIeyubh;Tr(gxh@{9N2-OJcLpd;{z`%gZe9OSe8b(WV0ssII z00SxyGXac8w!7er8XC~xO96t=fIR_rcyxc84j3?C&B_$Tu~h#698N%rVk)qs|Br53 za3%*Mq?J~fP@-@o3w81+!=g4Ep~DYXB(_*%k3}|FWtU|Zr542^E5;euGPTz{zdZC>x|Jt$x114~wfd<|cv$ubT zUc=zb1`fTUfei3_Q{NnFfT)Js?i?sj#I`j+g)6azu7>^28FW$@WWbkEM`9K~`&J`oUW*%GD;2aN?Dx zm5u^d*k-rpx@)h$20Lu6o_*1$7|(x7i&~%8PRLULNX0^B228->Qxo`FpacICGDybY=3Z?$fz;uyU@Q)XcN>9ser<;Z&UtMwE;6|73{M#lpn*8v zIe4#+lVhNRIIzgTfE-?kBfK~bYQTXgq!7n}I2Sj;H!w^vAY~FHt07Is&a;26wRKb| zvH>i_X`x@9*~XqYpj9Pm>8o8u5Z0t;ZMuAoo~|hBT`}y*C_Q+1-~$iEroVps@5euX z5Xp|#tZ8e^UH}L30=!(O11lR3nh3K42f)Bd8ED6AGJv=Vutz5CG5sRBeCbU;u!@%?^bD2aw5ZeO;!KnEV-I}fRa1-AN$6-k^Px{BGpW$jF4U{`73F>Lo1cIF6uC%7Hqwz@ z;~$Kql{Nsr5qp*cf}sr1CMLA84=&W?zN8n24p;^Z=4e0(+60{r49YdP*<=YW1BMK! zQZl2-00sbH05DEq0!wtrI?U)m1KdqbpqfAl1aJn|0H6f01i;;bNRSs)5CA}+i!yIG zfd&+0I4{V-E)ivd1(bgYi1I2WHdEOq_sC#&(8GYoAfhq>Y%)=idJ+gku=*RY2-M4vdwbmdCX+M@X6ui z>fxf_I#w5AQh7NfR@WcjU}p8EEM_YI;+Hoad(HLQa1}Na|CZmgc8RItP!& zg`NhyAf*KnjZI%5kemTQVL9!ozZwvQsV23l160AFcDhxif`KlV5eUzCbknJdrlZy3 zr_j1bw4Q+PXn8D&KMTsVg91`l31#2ajIs{+ITWH6MQmafyI4hHG$v>JA4lK1Hqmq@ z4j&W9J2blx&0>EwE|(I!N+r!`1tr-_i!KCZN^1ua`%|ErMMPS#X$og-bp zXEgCKNUwXf)r9;iHIWR`YIPiJVIRs^<~G;4&n=c?Q36>?O4hd5_0MckTaemv_q4Hv zEoMg(+U|~bwX_8uH=`h>6#Ff4QhJYWJB zSSr%B2z58g-t4)R!4HOTgahc_xx%-OcI~aK2x?yl^)*uW=7af%6y z;EE_%Z4!oYjAcCI$x`^YyyC4ueY;@}ODHA?4KX1FOJe07R>em~a*`#=Vtlx`k~D^L zl%+i7x7dG}#{j)6eJ$MM4&#?5Af}p#|7jF86j{k>zaGkmAV_Xe)eL^0wPs$A7<*M1xhemXC@c|ZSNz#ASm2;#eJ?R>6Pp&t{a)$M& z=RLE;!(S$Dm;pWJq72%^iAHs*RXw&vyQqIf`DJDLOa@`~a~JBd^-o&xUqV*sReP*V@|G#x_Cd?9W}#cgLLm_4&LkY%m)) z&_zMEvY8!icDI||(|+`VvpsKm&wAT?>^9QA?dx!7B-q0?H>r)1?guQp+3rSo!qp6K zSVMoh-VcZPo9|uceB)JV;O6jwRI-l-c_eAy=m*GmwNP{?|C`XmQh3T$eq@Hr$l(!( zdCXxvaem8J-+AUYhsFF4S1Ik|p{@wYeL`@DqI~5?M>=#{jy8GA-04rZEzN^o*DUXQ z>fxT;0>04^p7&!L|40l@O5zVL^n(j8XhDA*^idCeY}(j3M+veYaPp+r-R_Ge3Zu*R zSZY5R>VF5kM{oV!D+koua4+_r8L)T^$OIq%T08?VQje1Czzr*7fE?U#8Vs1j9Q?qE ztN7s$f0)A`JiGuS4Jb(nA`pQPGSb2Aqt!`;ijp7;kE#G{%JKHuvxj#vyH+=qX1@C#mg zK<&c^9c+M_2!VfC2PXUmCxk*SAU)G7Jpx3DE6hSJ|765QG!ZWZ!vqt*9h{JHuh8>829LNA}$bjr?5Iy9>2>3&e8@&eM2QDCoeyE9%8#*;$y+w4y zUF1crfW%jGIozwnVT8I%REdA`3$>bv6;1>$wD5}t*oOtEj&HyNe8_+ZAb^t4!+zk# z35WnaKt^&fhl&tK@v{h55wu(k!Cqv?c4UfQw7p;~M+|B^eVj|3C$kqDMQ#iUWE6k8n9zZ~d;q0nP1j^j z5roYan?%}_&PlV)$6QA@l+0P=%{J`6mH{_IfyL^lu>Q4%%LAgwzTZO;`o(gzq&+txpTJ%wNmU4HeHFJ+}`H z(Gg`zA=T2ABU0Hs(l33mB$ZH>pimigQs2bT`~=Va?9YEH{V_xsfeI*uaqy!pwbN+p zQWd01Fy&KAYN3XZ&*8&ICautmLsKYKQyl+gQz{j>qWA_ll~X#s(@AZ&JOxR_?9)uW zq(2Q*>?Bk(HB>>R(J0N)Hf_`ifz)}BR7z!4XR}lV-BV4K)qUbr7Zp{EC{wUJ)J`MS zMa@SKebaw9U4d~JhgLP#RMUZRFi;dQI>XdcOr6ze<-J-}QZoHiUA@)r>{Sl^RUSoE zVI|gM71u*c)@5zh*nC!LRaaVVp-x>=lq^(cL{uBqPi`$vTuIe%9oKz5vvNJqMo7?D zTi1b|)^@d3PlZ=dl~-O(R4LWbZgo?9jZ=%{*NSLGGJi$Tc!X7GCD@K_8)_ZXmB`iJ z%+~(f)+vS9Qw`P%pjeA_*%QN9)=W{4|D{>C_|t80S8GjJY<0u_!vke(zXxgWh+Q@~ja>W4@s9KH1 z2Oa2xjOeV+m#(oE9)AS`jNsb1WlytU+{awQC-Q8W> z##M^PZCS~MUd5tZ%T3VC-CT@_-R#xg?d9I?|MlMQ1>f*3-P!$z+C5n4#NBYv-NfzP z;|<=x9o~#6Uco(HdPv^H#e;CjU$bCZL~zP2Ae zh2R;c;TpE#8&+Tm-dfu|oBYLK_B~wpeP0j$2N3Rt`W@jCX5OT5-W6`)Czd^Bt=s~Z z$^nVtf571^)_>wH=Hf2aVXfui81dl@4&n_SVh=WABu3oCRbu{i+;jL}0EXf@wx1Wq z+$-+lJl5kq=Hu=C;wlMavlwF__FXd$ULyZaV-a3s64u`(Mv8BMW0sX;I;Lc>v10?a z-UROBP3GiI_T)c?h(IojLFU~uE?f>q&4<;#^!9+X7Byw zU~c3eF6BZl=0iqfRaRtHX5(dkWtnj1Xm;nVnP#~?U~Asydba0#M%`{c-`gGKZ~$jw z23}(xUVmgZ+(mZfeTJHLe&>ZwmUyn%1lrv0mC-M(e)@>ayPK+P3Z0{jT!x=3%Dl(H3aGC1~Uo>C|>yljZ=|MsBOHY%6~0 z+jj2f9^KqlhuseC-X`t1X6(~;Y)Ah-if=IPZRj>{^OkPvo@$QvZJh>g zo)&Jp-fE^*2OOY*@WyYa7;lO&howI6|9`e^>DGY(uW7?x@5Jul(mvwG{%P*c&-%Xa z{Fd;f*zXzfZve;ez!q=v)=G? zz2$HI@No|D_a5>1Ze@I^MyH^O8nAB_C-S&sagDX`@{aK(Z|WI;ifTM?5LayMHh*mr zXJaCKiXb2IA}{g^cX1_W@-U}pCwB^*h;kgCauLsND<@$r2XbK(@(Aa0758#FcyTeu z^Li%prZDpxuj(|{@ipghHkRe)|Aq4{pYs%-Jqu`Q15Wa5&htpW=RIfIlJN8P&T$$I zZu>RpXYTGpm-9rI@I^-foIvs~hktZQSM_YBbjP)HoR;zgr}72YZW8u%qtNnD7j^t5 zbyIhARA2RA$L3Zy^l!NI>sIqBA9P!Xid^6I3Gek5w{tKT_G;f_VrSx4N95ic^m&8cwC2f>;7#`hwqVR_AEE~hmZJ_pX`;FZFPV7p@-m@ z7k7`3_nN=YO;6%`r`H$2fqxC~`Q#>bD3JC$C;F`KUZcmaV^{j_Wcp4o`Er1Ish|3Z zH+K}U`hLfHt#|v_<$4=MdYX4{oA>snANz+l`?II)s+aaEdHcZk-nj3xxo2;Aw|kMt zd!0Y|z2|$q_WOPZe8H#u>?Qn)G<*aPd3s;`H*fsM@B6f0`--3Z%6~Wg*1i1nnfb&2 z`u+=ha4-4K2YtvF{lABZ)5m?>)_4wY3X|~qx?lR6@BH51c?xj+**EIQC;i*c{pL5_ z)c>Q*=XM2OWqXf(y+{7M|5kpMr-RaW{_h7}==Xht|8s<&cZFYehHqXd!2az2>JJG3 zMjw6d_kQrVf6bC^JR;!zN|%0+r+$E-Cs5#$g6j@``-X2J!-ftS?)&!d1%(X{m+vDp z9271L_bq@06i_gR%c*l;I67c{z6+NS2M-s2R;jAXs#Ply9pOSI{C03%!6gF)c1x@F zAKSKW-@=V6*X=#EY0nZgh)`k3h!ZQq3@mss;lhRwBTlS%abTG=ZQ|6Klc!IhS1)7E zta&r%&YnLj-7324SCC=Hmc?r~?cCO`Ti5@!id?=FDd!bzLevFSuYN6m{=e92XV>0~`Xr7)h5Cf4f;^po}xpSfhw`rS!9J8{=^}BVuAQ5o`~_87$se+ z;ingie2GL33suC3qnBTT8K#&6>ZssD&4trXICDtRmmB>$9Dm0Dd5)nZn{wJ|No6i~CYn8AQ7UMsqME9ztFpRksjqIhUZPBr<>Wvk zLMkPS-Bh`RZCHk+C6}HOTdc9iiU}%@Iw^!lKhLfat+dlpTdlR%VwwxTsJ$*-CGFr~nPq%RdU6J4~?y~%vE(n~XRbAP-!kN>>0YdsGHG0-0g&9v5A za~)FBU4z}S(+aO8wOi|=jrOkfoII9ES%)3B+*<3PLxQ2soj1nrJx$MuX{UV;y%~j- zP&tS9Lk>CoFs_f|53%KumJ~>!x8;|&?A6_vb6#xZ4mqw5^xsVXEa~LGwbA6di=V�IuLY`1=FU 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 Z%oU<-WeM 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

    @$4}!%By}tzm=1n4M?u&7O=nm)34Qd3xCJ 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ð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
    0(Y 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 G2$`TD&9;3@Ek*>i3eu4+!^{ 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

  1. w4Xv4+nPvf^4w}yR03B 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 z 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�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 Z=ki^v?;4e;#F%83@jJ)WKHfFJaDNfh5v*i>k; zl>T&BLgCJIgi0_Up=HNP!n}{LB@KQf2&0{S6epSv^={ zY=_a+b1FYpZ(WY2MZI#K8$sHiY!XuZBU~+!+!(C7+IH_RA!w-PPlmpdz~A@03PRQ? z)XKf0+jqFG9W4CH3A;GMUPwz3=@hGVhMn~y>wzQU^+T#o-uQKdX<$fk;~D z!ozcww)Ez}@xJ(`m-P4CujgE1pB!vI@19~l>{nLV1Yi5;r(GVpTHRd!Pr24kTJ$ws zzCx~i=t1x4Naoc0R6mnO=n2NP_Q8Pjm@*Z=K6Z4vUni2+oK*y; zf6NNmd=D;<7Eu{$Ld}tZaD6<4dyEAd_Dt`OX1ic_+e3c3YcmxxXM2C%pYsL=C=rB` ziW7UxCE1rNMCC-zRP#MsZjOnfeh9!Qx2M_KHJ_XykkszY7=8DqK+XtLVLhnn_R3%p zSfSo^(*;m=2e9<+bypdSoJahh+rBF}upzl{`hr}co+Ta_CCU$K)%r7#vj#p4ne4sc7b3Ad~}-W?R%HVz%0U? zMVnu-yQ%ex!|hJjJHo082_BaEf*V+w4G;SlfoGf^A$%;qowX=SWp}bUS=)ZB68ebr zRI0h;#w+CWC#s1Iy799m4L3B&8Ukg* z6FHLg;Cv1EXDXdj$UDEA(GS9c2bepP036o^ihjUdX8bMi_|C~gY74@g4DR%{5m_2) zdGkCiT39yetEMe$@V;&U|2I19u+8~hm#?jI>sGBzgC0|50XcqCf2+h1Vv_P>w$|$v z_Z^BJckjV7T`!9zAd)quWySUL;+ajO)yj)z zL{MnzaB(^D$}m^2_MIXC;ePOQKGkPW$iOiSxtn zukQLZ6TlFdl&*%h;_DHGAyx~T{wsdYXhD$w?YDKYs0O@L1Be0)V^=)*p#!b;he*L6 z7KI$MQ-P;-N%NS?`ykWiI(HgO!iEZqFIn#mKA{w-pbKBf)_$Fw+0aboa8kDHqe$+A zh_=;n3+ui3{pB=3MKnJ-sz_TP=YpVIWlsPBj^QB+vNVSEH9{eZPEvrHKw$#C>Sa;2 zn03|mXr(p_02o>??B4V*1?VALaZ4sjrZ&^-N7M1Cw&-d_tQ-OT~ZyI#(;c4>^D(@PQB$f6;iD!_s$c4mj?X)+5Np*DQgK)PS{=W|wcl+)_lO zWq>O_WTB``rOqgUaUKcyvftN8SThZfK@p9y{%)3fEoR0Z72mqKAqqovXN4QrKq@DO zLeAoW3(ZD;W32>KgEj!bjWL=DY-NA~j$c;=xb)O-XEkWV)#1jBr{cg|Uce%rHUdw8 zs0lFWK<8wwZm?6Ed~qE=z67IunXyPbZxWa=Cil~=Jt?B1XD`r37C^YSZnQp9Do71> z%D*UE0V82QzrV%Wu^*@iAoAIrJI~Xct*pn!0#O1qsrhvDgqs#{n3}Q>Ujsn0y5H6v zz_Q5zJ`DId=9Ixcix<(fTrsq)!FENdaY79sd1Kc$K31Q9H z2RqUXhO^rk0H=9hr(;t7j={7<-E{DRf1O&bwh!@ig+HcxbRj9ooe8) zY@U2zGQBLv9SUN{U(0qXqo{+F=Kc37g7;_4y?0phMvXBv?VaCn84Q3Ot+c{x;$#9k zuNDxn0c@^-nKMVHwfZ)zqK5Y1l z&`-*z3D;rwSq0>8NNDv6$6aSlR|ez!U-s*b8~FcS?(y5X?#R+>A9O|D;D*A=4gTA` zANnXezlkzrLt&LG&J@705la9a??0KND(3+!~we*{HxAL?P`)XNk<&P3nxydkDbQh6VM}ig%Cl|Y1zid>G zIgzHPfyg(3R?o2*T&6SU#VWF+h++acYm6SqY)Zr9xYWRyt5Fol*A zUIUCm5K9}_3W2;=LNOSX)6-<-D6(*@w{YsRa2~gC85lGkzxK$v8BYdrTbi}=eq@&l zASek&Tb1q-9vT<#Bk4<=cA8h%U>pSwPe#2p|OsN@W{lAM!k)zUaa_n}AmIjqcsL zn{)*vizZ@N?iL8#^eMAJJ2*QLU7PBGt0||@(t86REnUQ}rBgId{2;){>=%F@_dzD&u|B3^kRDE$n zh1Waq*BCfAzW1~9y#|%8F<+nzr5uqu>YIP>H3bgFlsDYB{t8uO2Us^IT)0E<(W!kC zBIyNGe`4L`QTxvu=t9?8YSxB}s9UmI`ltclj*WKRAAh!F?M}(2MfUV;*7mAUPT~W4 zpWGk6-N5knKmOH~HT1M5{bY&ue4r#P;I)+h*!cZ9txw&D*XaWn>8TZxByi;?|5@h; zEA=IRv^weO4-k%k3WMPl`G>0nzK57+*FWN3ls!DK!CO3NJ}q) zhikd?HNKDR-8hvoIt+&4JR2z4Y09-V`Jx&3*YHu>X!Xcbq7()<;76E(L_OkZFcXT> z8ZS$T!s=0354&E^f_I zZqpCOe#S`6*{nW&`oP-OmM+9!c2XR;o-+3k_VGm9^u7lz=q8*105m_Dvn^1WImii- zJoU#d(bnDeo(J+zFhqS*naF=?#;fxCnM4@wlXm*2Kg93Pye6I%uKXb+_Io2KKHblZ zRqe_m9~~1Cm52(=pKXx1-AqWZ-IJi(ZL`H?24Qcz=L6>K5;y0m(1j??u$V!+6RHaZ zoAV}4nu$9Bp=Rd^Y2Eh!HPWx1FYlrhQ0zli?fw8;n=Y1`1Qz< zigao`<A0N1k4$IX3hB4b!x_%ZIg_Ie&STxq;}g!u6RXaX8RdhXE5|(6 zOJ?=)L?h|Hm`2& z?Q4s*vj1-*eK+IzUg>jYBYo58uTbjEsm>6_S$%lJ&6^&1gHl@3Wj2Miq^(U2dH1!@IGZi{?3hC+t5|mPyKj|08Ap>#c`?s+hg? z#f7$^@qwO^^|scY(aE)_$hE<-4f^u$VZxumA$nI=|2VaIht|Im6+Q8}_+WEq`ExB3 zfF0^+8XX#$?`oS~Tw10M98l`_@`{=K;Z{z=eoF2{McoGF<3?fe`s8HaaQ}8;+EMM7 zgSzi4B_)j9(iz&&_~h8e&klNw|I*aLOkMMSTgzH@_Ce+6zdZx9-`g1rzn6wP2;=R& zyG{N7QgSwGt0$%x_db67FRnc?^LuD`j7Hm8*<@_3uP!YA*UetsSgI`E%gkCH8k$W` zS;)!!uT|dK+S|MQH#&$Js+;-Tuu}VFucl_66tLd(eJL?$H}m60N&VpT?}_2Lwbjju zi9dbqeLb_Y3)^eU$q8daog;*a*^T6+t&Hr$(wwE~&Hb48qxG4dLHfeqYtn3SY6v%{4>J@l;rBCun}`!T^UD!WTIQB}=V;xeZ=Lk2 ziN&GLt$s#F@*W9KU=+?Tc5ZBKEK}u(%X?#c-5b-S3i={(jJ`v4AGpsd>y|=t6;*w z%u4)TUK$f}Wn!{NOhC4<;;6Kk3CNC2&oEo|TZF9xChN)si02k(j`AwDveKB4>sD3{ zleA@mv`pld3A|1)uRJ=~s;oOItvJdn{@)z?-hW^HKg^by9oukficd+0z8@v7rwD zN7U9r2vwkaLa$ZWK_30rThH&wHi?tD-%(L;GYPV?IowNxq;QCmaSZ)=uwKZu=5P_S z%HrWqc726>f|BX)Bn8d`0E|baS}>z=W^_tZ>-Xbef;8o0jBb71?)rS+_8U5s8Y(qj zd%>g!2LLE?^e;{R{Q8v;cgpD>K+F_%;vw)FFAgladH9D;2t*m>PqO?4;F^8m{N$h$ zg37(RuepPzrbAD=1nUE*R4C*A*EG4nLcbEEen%(|&hr8ga*ZLPFPtQU9Zbi7jo<`S z6DiWn0{Zz{tAgM0yavL;kCWez<1--^KQq;P;%)wSymuI4tBQ z_u5|5aQ@eGiAQ9t%%96`xcSOyyzLh~VR3&@679tqKf>;Juc7sfor(|YTkXd`U+?t^ z8{38GLfN9{bP5iaNaOaBCW-oQ4<43+{DW1-%+ zXE#_-xouhnRo8uCQ(1hW3%WK|{$a5jc|4KQn&vXtl*0ZDIp+echYr_Mx^Ly7>!mNh zu<}n|>nD8Rxx2voS1_p1YP0apim`f!USEluO5TI}^}wYHw6#~if2Wfc|rqO@ zCa>-JmMA-h6Qy>oAb5S=$lRJ@Yg-9$i+pSKisgjJJbqQn)9k+Q%$8{X8Mu0{3@XOz zHaa=dm^0Fw_L{PF3Us|#bG7loC6j43_0W%QwfF!Yb9w`7+eg{wRXGBcb23@cXZ=IhbsuvkTYftY zaOKhD2t@qFfgn}-{)l2rh^!ig16dF#X5PeD?JMNUza)}YIKJZYxsAmWtT{*t78c%y z@nHM~(YjB$-KpTyr&>|Lm?#CG-53S{&Hm6=g>{({55aBmQ|DmY-iS;bHRIM5k7{b6oPwX_IR8e!L_x5@dUWepe zp!h3VqY;|P%o(ldXoa>a>Ke-A5wP|bniT)jubci}M`k{St%63-+R$2N2cOoZ62S5T zaAA!rEaoTohaL`YT(rVK)TobG`}Q*Geba`WN6LkG*&&44Mx{5$X^&drYI zs^xkRXEHVbcW-38E$U0z)c8}cFJuUcOig`3iF97ZwQSoJd;ZA0H2(uq6etA63fStwN{bAi* z)%grLho8xW@_l{DBL#5tkF%N4^Qi0zgQi)xX9+-3ys=fSX0hniJXmMeF7+D0=XildC`r0gwOv z`z3Jo2*yfo<~F754stfYZcufFCdh%b=!Om1e%BaiErQ)nm-7L>p24aUscCJ)#!vb? z|MK3GAGVcFpXC;~1(xdJWR{Ih|+4gj8#`ZX2K=W-mgDeRAS?-%Ba(Dw15f`xs> zgol1L9K7##l9nUFS+E~>KAXK>e_0XG@4<fffQ+W!HEEf7)^;bh8W!%ghR_iPOl}9MXc?pw0u-PFF(d$wF7yHk(R9W_?DMnZoWNa!8)QS= z8Wk*n3wki`eu@I(Ap!1?K~vjzW_7XWzGGoCSW77sqy>BmMR;f#a-#LAIRnNDc-H+U z*ufG=aI$-|HDgg@jBFZ!j^aS?o`pmRJRds#07sz#Pe_&nv$w^b-u4&J-8Q&knD-!- z3cf)L&GK?(mi@B_p`sV=zxHxGCWQei!XyU5!VQ4}0C=|7+tx(*DI(Ba7vT0Ge3%qm zJRiQUq6xPk;Px)MTbFZI8cWq=Oxw$hIb>LN~1=wP@%R2Yjr4y48Dze z_-0n;_AY7^&k{~ew3dcq&f~1zE?e$5U-Phczeoq!v7$n2e3Y?O}1f_V+?!HTtc2Z?dI;3!NK7v+U<{HDit9q9judbbNo@Z(=unrZ4sQ7>%4+K(6ATPbu&edqm%G z#_DbcL-75YecC`6P?5$7ewwkWn=yvwn%sTA*o*) zoHV(Mi>m;n1L{CPG(by41fO@7R7#diO_p2-d6T&ZN6uWOW*)VlSqWqbrGulfJ%Q*~yL*xCwUGfkG zdB%!!6Nex$;5ZT?&psUdBpk6!dB?q&%V;MnW05kt5qojD=kUP$G9Ol1^VaDgJ5^RN zHlG)tZ$iq)Qu0-g=^#_Kyw@Wc93wyj0K_X?XO5Lcj*-tIR1m9?M)gEwX>eZr^XeJE zIzOe5YKZ8ka6Ti#Z7~1|Jc5o#e7DcZkV!`@LP%sn<}sRlK+>5DgNsuOmfjWB6uw)> zWu3sm4Tt~@-G`DCW-GR2(7R;F3Q-)6e5MOr1i%O=P*r&G&tbBfE~J62xM>k-K!&ww zq|I2Brc@(Ub%AFwB?Lpn&>m`71~n)Y<$?tcpjpoYpbnVQe;sKEZv>W9`lVfaLK;P= zx|}i10IXtRo;U=a_Tk?i`7s-C+XFNhj@_kSJH(euj)ot`V+U(MXF8Be7*0|OrIVFq z_#inw)J8~uMb9&sX2IqpL zP%I+Y9Q%`1t<^{`Ja*1LcRP*~hRw4|rLc|w2k9U%2DpZ)UcptpBi!TKlSX;SqOM)U z&fr0|bkHEW*1)W${T0H50TwE(*}93~K;=;0l22hc&(m3g$%wdp&V0kGsWB`4sJbKj1 zuqMH#fw*_EFr-}got%B%LpW2t;xIyJBNc7 zq@qM*xMVcBun|;HE{KZ^@}wdKNMsfBwDYyd`V>O#Mc>9TX>Co}%2g8Q3bq)}_^w@p zRMQ3SSs`A^et*Wn{YsdNITzlGT=n4K`_g3y7Xz%3s%@|Nj`z5>Wd*~jCDYc*4(+S? z7L?fJv&@xrfb#Q=H^7tA+1dvI&_}qoU5fUjqPE$)FlLtROCd}Z19UNK2dA}z{=J`; zCY05(GVeg$|KaMsqmpprhwlTT;9$5l%~4j4G&3_R2jvZQTn%%i zMyYA$pt3SE#l00bZZ!8KS8g7@zu$eI^E}T#{=*T^;c$d=U9ZpkGojd^&(Xa65k8Fi zNfXi3pfg+M^_M%~CsDw@qWb(p?(c{11hhVr<0BXpu~X$5_u$HJmTizAEtjm8b%FMs{y2x8`}PT`t!<@t83i0gl{l(( zi2}QECoXp13I_M5WQ;K%_{fGPcfVeSGu(5MDbUjP96dGAbyE4-7~kV8gcb$iAyK)v z(m9IiIFVgDCyY4HphH+fYgj|sCeS5kI{D76Rs~?HB*r^8W!V+SH4f1^bHi|dBI3&G zN5m3H2M?dcewj{l!tH1f!@mv z{@f=nCBRMd-%3^vo~<1~ObsTC!F4cI@-VhRWbUiGO+l;b9wl#O6%pq2{^$F|1jUl? z(L>~-0omFi(9}>U7h*|fX!%#pVmrt+k(z#_{_|$e#2bVGmXxwu0NaNTp}@wtyLBRM zb!W4`&d@=F>}{DJ5&iq+7qh7&FGs90zoN-GW%32^CGd;K&EM5?D^~liiU4&|@~S;x zWP4a$VmmA2yhhXSk-A6h?W_6rm2d-6A0>3)$N1Y@PkR5Nfu@w+nv-MvE8`O{TW-oD zHBu0oG&0(xTovC4+GaVBf~Vn*#to*veu6BD}WQY#kXQh2N@dsH`!$+`klpQ6MwPH(qKP-EpbjP%`a9Z99Ozj=NJ(u zj_j6myLw6h3>ZJt$vo zeY29ew>q`f{oONXjslH@&HAi1zDuC+yXPQ?Z|Za2fR=`Eb17e24@-G}uR}S;W+l3; zJ(|=H)%W*UE@1lh#g>=Z*@hGW#s}+bij8_&)8eeVkE0;L*drqMa{nxxo>;%AX(;BbS3;cdPHDs zQ%7sV@TeTOslGMvjHp0D=p#05O18#x-)i7NO(WaTN_anN`{Avz^MviJ?5_&=?_+BV z4v3u#;(x8W)t!@fR2cajZ9AS9{$gu*yw?YOz5d-Q`#Vwm&w#OWcI}@>@uKmycT`%{ zgxr$L)X*A*xz}WtSqZp^?O(aQmxgz>7^D8(~DO1|9r|gJ|X&2u9!UxE*PiDUt-{gHGETMV+fzJOsq<%leV$;5Hf8g)K()*W^DJ$>;8ct(Yc_{J8bhg*zvErhT^Fz0~X8sdq736UL{f|Es} zV+-{>xv#tpW%E}|a-m=P&D$j^w>FFv>sP#0iatD>?@%DLEU@|dFQ8zT6;piv3#o6K zs%H4> zmzMs+P6tnRY+RmqD#bE43%{bcul=0okd+Xczx#hf>S=bW#Xv~{xUyo3&3k&**E(qV z+dl_fa?xdZP-sED{-|7l^pssVr%J$>q?!Z@5wsy!1KotlOP>z@i3O&+ zPGM5C6@~~=B4OzdUfs5`K|Q-9yEB`%oD%4q`6znNIqTNxb=e#3f&b!z=~IMANgWki zM}(9CeoDc&QGY_;%OTK>QS`|a=2HB1FzB%k4lz1h0$c}iht*qIffdNs%+;yM!Z z=wu~j=aIKc>WEv_=HMIa(u17?&-!Z5b1R=`hb_b56M-=vO`ZG?p1+udpKuEROdfc5 zTtX~)buskZizVDPU3~4=fm$z{ZeO^P2ySVSjFHnTyKd8d`Nxs}==Gt{Apx9X z6m7BT0AC9;t#l@Zh^0^R+xb4V3WYw}4rDE%_j`YCn(D zRGtBKQLQN9013ot59t;fbE$gz7km4Kx;#}LivI(P50@+r+wrIhT*6o`=QZYFaTVJ9 zIqV&aH7)<}Yz24vgTxO;PDN<<_&%KK4M+?fB|tdwMKW*7quZBicKL}&tdYSG5Ie--r#I0J#UHPHsGn*AD{1?a6OhF>Ma_tE$ z>#$%n3dFd(NPattBf2~MGvp_8SbcqX<~+6GtR}B7>iMMO%1>J&l#{s}^<~L<_U#kE z4o|D^4`Ji$_$$};{0JN|(jMq>t1tY~@*>~Z>r$PA?J@>;o|1g2>=^psM0f{FM1V+r zxQNR13BjMEX9~T4%p<-?5>7_ODzpel;O%Yi+^y^M%&0hUz-6#`MS*Dqi8fB98z_lL z)GvLy3hO<onRM{_(1?%?#E!DXVbY!q$;+@ z%e9*?uyHmY%O1~K+=VWHKs?XczCB6DtkB6IYHI9eXkNnExr<1%!$O`?B#=FzUMi0a z7kQDshMagb;rymVK9D!#Bk<{Ef;NzO_6pJFmf zx_QBqDDSa=0+=9I(>gClMt0(B@4td*FnyqA>CaATztzP!74Y2=;rl1hsFPpGE}AU1 zy=Tuq>{g6RmXjcZ#8UVl@sEdJh}2H|;3#7>JMxv zL<~SG{Lx5d?ZT-PeM^W)Sh2qk(O5BDG9YM>cA}1tgajO~?u-52X)YU(a(6FFc>MBR zTZjMGv$A6}j;llzL=oHI6!8qHy?cW_woL(qCUA@d2wsIcNmuV&9zA$X9c-x+Dbhie zF(z?4;u>Qq%vG1C#>*#&An#6>zy!~mtCYvA5G z13)5rAry5Ih&2TWOpZ|#erg=pAJeiy)d8G5#1jmCbB2wPC;$?R=#3e7D!7GXgsy+y zd>HVGPJ~w65CD@vzU^U9bJFLbJ3?xJIqnbD1=X?m3n6>i%oFgG@H8jQq;9X&j#Fax zTLi_Ur2=u((7l)SEhNwl$BSz=7YJZzO6tn!eUd51g2HibAx;9}1XT!p1|>&~KTQS;qFEl3ff{C_e8yV*c3J}N zT7n^3d^5blue3z*;U^{Dd8=yXUxMf?)N&ryE(^i8sbnANI3H4Yz%D^h2>2KSdAtBP z9d~0^y7u%(EiVZOKUTm8l>$$I@d0lrcEH7Y;$F~!@&VvisxRhn*4hjeckL@7+NufK znH6lJyDTD#z(8tzLPhKgsJ3QR64!Zcc|7D47N|-CUp3azwbQu@jtFFKW}vWzP_#R- zFEpzf1}X4xWDG(%MjV6Z#IWm$>Y7{VT;6376~gnz;>8zYK2e{UH0ankCYp?~i>re8 zvEhCaJTfb~6}UonQKB|4mEcvuQA7%VfrMPh(skBJv^^geAl-nZ>E0`DN-Jb{7XpG& zF`-1Zhhue)c1_Nr%^!r|(o?Y}V+{e)5lTY%KpI$4mFIDme!6vx-vWSxN(kNs8jzEJ z8|XPDByLOShpTZ&iq4_ox<-4EwWP{Hs^`v357P9wj}l zh&J4f@FTLgwHSP&A@Pw&=6GSDDqau3as}MRX;Yty1&K+El85-~;3KC%5c2*{?X(qZk!MLA`vjtEkX6s<^hlc*SvG*|2FyEqVg%N4?p1p4F6I<~rIMS-VMB1P!YrR5xJ z$Y#B4bh~s)f@(N|MBr%v2xptQAF^Dgb)1xdxb(Cv2(@zKPFnW6C;O{1tGM7jcgr+P zJ!d+Bof1uP?`(o2ERJxN3cM0)^pu~Q=a-PmJpQELoJVf3Sj=XVma&7=6g6&t81bY z5Xpi8zU?qqE!P*I0(DIK^ADR_bh}$m>Pz=DKh`;}IcEP2IwC|Kdvw`W^i7E2H@O)>3mWK1DM2a2XmpE%#32RsKjWI?M{Lm3e_BT}zBQ$Z$`-ybGl?6R7 zih<*n8Dn?VVbA`dis!>CVSi>5AIx~i=r2V6>9`ZO^5C&6NKBQ`{f$F_t^K*NzN&(w zwuYlu>Yrh6h&%>h)HoFwS&yXOLAF>ea5*aPz;5U{nyxvnTRIM(m|pdZ5po^BoZWI8 zZVbeH3I$MaH9DS~n&`o0JK2^x-K}=A>zW0z%|7LsebEAV)c7z+Z5EXRV18039RBgg zJ88Y1wF`50O>%xT;pFh)>^-p|j;ph3&h_>DATTM{vD$Gw!Kp0O*+;|0_rsi!xzH*xk+l>erIvgasWUFzr}-D;ID(q zVA4FJ6lzZ>b$wRtny}*%KF1lM;TqsQk9J(R90^2{P9MEoXd%xhI6Qjoxfn9xnvJwe z7Wj}IJJE$)oWlc|Jn+)OVon&4IcG~$0sJoy%rkY%cX0dQ=~m#mgot%BR>iBPEM_?8 zXOkmx8gPqOiXmk?OJC)6KZ`y7GI;MY3Mfxn`c#^ijWP4b&(D#XG0u?656h2J9#=WU zRQ~^bpmWSSQA0LVWQ+Y{jb3=QqP92^=#GzwDsgYu81+LD^ywp9{g|d`@#e1Boen_Q zZ}&dEp^8EGEq`lU~d zYIs^W)B|I?jM+S8M&guQBVUQ$pDA54u=1Sq_q=4zxgdteeD|bJ%*|PQ!h1Yrrq^EV z0_~O8=$`AJEIbXU+FB~>VmG{=GA~mUore6pjt7l*U$4)7@Y>x=!Aa_Y<)m4zr$c;J zz1VQ;f5RI01hBx~KGGpfyd_3l6)NS4g%{jfacG04(f_@}nsh+rTVhx+kVwor-0LqT z0E?L=+~C@yH`uLKa(M%LLHy}! zF#U~_cf2Q#9nayOichft*mAsO*Rf(T^v#Bi^95pzsV@B2qm2s)AMra63*<($|IO66t$Y#X^3+1=B`lQe3qR&%OxF2O*6tT7AQ12(PrLw-N zt-sY_w#9dc`Q62rEzQ@kc~jiW+qhdKP2Hwr*7x+ktz#V9_6?T}=B@s#tA5W?R+L@* zw91~{#BHmc^Ru}nEU9NNM~w6@OmW}wwu5-xDf3lg_+c2U2}skMs?(;ocIXcNW@&aV zKQb>~zO4;iKKkxI)8s!fu~Q{{TRZ@qG~oQ?sh9UZTc0$sM~aZIj{p2?cC_aGz9s!@ z&-fQ4I2U{ew-Zw48`hmgY@~y}{lk}e7LP?ZUiM|&yRiG}>aI|VP1L>JKhB%(Kel4i z0^*tb!yy3)-2rkj+d4bDu|2H_91Z--h25kF!KVtAqIa%bpOePKw}#)VjFvJhRn!=|T)vFwN3NZ`5M5DMa``zf&ZLTK+0 zr2keZZs1<%pjYS+E|i)aI{Y?tq%3q)KeX>kD5FR4NDv>;+5G0PFtORddHO=wAI-3t zTVb>J!sfif=5b*Q7s8tHH=pf>jmLke<5|;ei`nd26y1n`^ojb(G}d4cpx+kv=_%aza~)^!qJ)0K2&P25zQlR zUhMk!R8zuDc>*Po+C;p15tx z4i?+~@LpZomZOsH6j-Iko1ZaGGaUNjvAiQcR^dJ0Tk>l#pBx?pi~qk3^4)MWr8!& zTT4SeSJwY)sQ>BffwUcK93M8~ddn^_H1R+VA?6!$@u@`k(%(DG#ZcFFB_dTXF5C|1 zw=EnGKOW#i{(rzO?tjJZ;KXd_(Ad(8g!SC_6V(liQH15m{<&cPUInSqj=|lbzPXt{ zt3SyT4tC2kf5rz#CMHL>e}0*%Yuaw8UHklb%-&+k-H|@nx4XJNwX`+cIW~$m*y-$8 z=c;19E19pi zW~L9e|4sbaW+LLnrJ31b`k;xNjRJ^l)*sE}UslQ?4 zbMYZ5Z)1OFacyS5t6^YP6&%y!?zC0yPjAgl(D$p$kM|D-C#ZwW zx^7$5;9$qx?AF|u;<@#$<%#M2riQt$Dki<%uPa}h+ZqcB7zv>6khAE6TWt!yy;%1O zi}Nd4GnoN+Dq4{o;5!I6Xp$AB)aB9EVmq>0`cH{YV08v9_(lRm>EBl-*2w*eT+=v| z+Dwogu?63cLaw-BI^GAgS)lr54JNXRn^0=BmVo`N;{CRjX<1QPiz2n{Kl3}|7P1?F zd98?_h&86~(iTcPzAK&IAKV&LY}wK5}mszo0nmgS2Qht2QEZXAAk1HGYD~p-Y+Wpchrn}v*t778X{qN;Wk9%BM&ZM+V zT+0N!%sB1;R&bd-_djL(U+{Ki=gWUQmx*_oVcY$>2Bz@cuPonTKF{}ZCiC4dW&UJF zbeY(f`BcSBp1bpQ|V`B35fOSsEGeJ*zM2n=D}E#{@(YjBfQZ)wd>yY z?bA>h=6}Gh`_0GUY@|XGC;|i*#X>X9W;kQsI&UtGxBvJL>^`%t2R4C{*kQ#&t$`9o zuQ_zfpNKoqh zlbK0ThO^n&U9v_-m}+2<1b%*+?#wF-t3`3Gr3Op`0JY_aWMd_ffN*o$M{^mjr{-T; zViuH9Ch<0?CIPEQgOBF3-|R&Sz#;v_S++}9Kx9t94??r*1_lHjcT zQ@Yd5_I74})d!Wbj7E>3%{P7Sr&OESP0zj9%o^#Jy!J-sc|gTx_Fv2gq^weM(BN%o zcZiEYuMDHkPw8tm-M2t(@lkgmtuJFA%&w`uaLb#iojbG6>2kPHLe7?F^W2};7T~CR z!a;a1^{!BzVb+cFQHz8~N3~qFl6@}k`YKm^OWHvHRBzA=U$L`C5W_&C`D?v~e8wTf z_#Bnu5>`&+?TI!|E9%cQfAtYHPY+6^OYv8@4}Rw13^}&jQC63 zogR0$F#OSP;` z_pjeRL7se~;>Owhi(R5(pS+_G-~qKP3%ctZ?~$w=75{#7G0(AjpG}-rqXE$^UVf*& z?N{Qhe({LT3q+zYAbqQk41CcQ05@1B9Uw|cy%F|~7S2(I`Ax^ih~@lEa1Btcr@KbS z>N7{vgDV=;7l6UJ==*|W|A5>(dRKh`0N&z1<(Vb86?2aRgrw9d?i;c0sF;0?3<2NL zLwxMr0`iP^aRk_nc`j>iJS&FZZKKmkuYYvRDm?w!CZj>%)WF~4dBuV}h%)f{O_+&+ z0vY+L>JYK$L+YL|bJ`~?_U;gnl_#KnRY+v#%=I&H%_VlwCTxuVqic5?%p+Dyv@jYE79!u*!wL1+_%qw8CzrKc_Jo71 zwIK9g06^?RF(PZs-HgiKKw|kP9shfUGS}S7djo(tX8>y@&CU8=;2^bY=aLnT0I4E_ zh0)&kf4@t7ARe6G>N)v^bHv>XO8|?dYgzE|^?K-9O0oTEwMU=4}2 zy4MGyO>@96nxQpK`+mh*5+H5>bI0ro6Yh2gr1hnMc?@brZbQG@^bojX{&mmXXPjIX zD8CQ7pojsSNdDRJ8RjEv0N|KL?%g#?y2E&PD2e5VuzRLNyLQ~4Gq`mvZ4#4&yNXA3 zTsya?8z!b%G-)A%5`TP^NP+~*9W7%fy)VC@0HFX-=SSGOiQp&APeZ)R>iFF0TYE8beUZCltu0s>^qFnYh!P@qm5N9ssn`GET&;bZE z5FXr-AR|hl6E}DLN~5g1{)437q6OO!)+_$mT`Zqq{x5)Qtw6iY z^(|tiiJ%=2r5Jz%$uQ%6c$;g^5%6#7=0edHEd>3TC|A|T#{alZ(7|WvNaKKTR@Nvg zuZ<7uoeO9K(%Z!X;8a_sE~nr9IGh?bW%G0%YqY=WN9hJy8Vd% zQlNfF1M4e3BU7EsC>|9HPb&-KhJ2t>NMJ2BA>sq%6b;yD9nMXNZF=afMueFIfJd~1 z2_cv|9XM%~VDSAmko6Yjq4$EseK9O(av>qGfGxx&&RylsTtL#=tE3KaFcu0pfre@A zCRu)=a;mu>hM;?#5Z^_5yH2Z zB#uoX4&1iSe-89hn?bqEpv@m3Uyk76ND|102oYvjJxKd&F3T(P@#XhHRx=8)IL#{L z+w-PNaPzCFd+1cFo3MUGwsj)-IvKt~gJUvaY4-x81y0Mn#sq>Md;K;C91fJsn?pRnjfL|RXfGQaHWxb)~ikdg$8G7S(yOhag$i+rGldjz{Jle&jb zb;g55$?)i(u-G_68ZuZ}02had`Tc8&zY zWMr59%pM!gX1ZLOaLzR2YR-&J&Rk&5SVlJHC+rLj&^inoI3xV-L|Zy6 zGuz=O)QJe*#HaStVUqxG54%+TW|oCb>O(x31D(G6^PO^L`fgxupv0R%Qm(^dX0%Ou z^dj7XY0ho)FgCf$BkwT7xg13B0_we`%-cU$wezysdx~r!c#u+2j)7sWUS{^ycm%KF z2YD>eIp~8R1qZ@D2S3Auj_LWAM)J9f^42K1N;H5lAb(FHza>KO_RaU>DXeD5yeF~+ z$joeC8J4&>5HAA@gwqR?-EP@in#-|%l%;@_DTw0~Sab&Did!Mlu%JvBC`tsc$E60J z$nMpKJ;1VZWAcbWg%}xFFEL{^!v@lPr*g@X6OBV~GUs_yz)Dz*MW+m8uT`QI2f4NBnbCLjX3P_IraVWl6 zFB2k10d*O|%tq3>UuG_1A*1Nxwf)l8$~*^~taB-)oD|FT475}wiR%ElzLjII%Yys2 zh!|1?Vwd3SCozYzPBB$rC!y7`{x zGf7nhaV;4BP!WMt1lF;aYmKJkM1oo8ksv*h5+yS=`Amc&2J(-+K-Q>$X}U7mzh2^e z%S`!MA0W=2s0hDaL3o2e{QVL7CTkH3Z&@0Mh7B$(%nET7j=VWxd8d&R-+~f=EAy z3=1r1h?7XLmINa20Ab5nQS_-Y`cqZOn~HHHD4Fu>2n+i5_*Z=(%g^>7{SiQ32JOSh zuXNZ6AU7sG=$H9=WCf4p+tuZ2Zte=HebYm7#R~na-L>jx!mP&_K-Yd%&nC+e{`3Bu zbXX;91qoFq0cI(d%Q%tW>mpycYYYB9e!sbF`hW%y#KLyzWvnZRAtM$Br@E9I%Q2lz zJRw8u8qi&(a%tIg<$7(AZ2cuJ?u}=u>&jq58sMo!UXv|(NDj7$L|D>`DIDAeB5Hq7 zuyGWN5)vp=^~I>@@e`{u!U4~fj)vB&pe0%@YgRTJ9j@z+EBn{>{U(>1(HQLP8;IE$ zQ3(xNApMXEYE*dM*xCwtKmq!^$u>LufEflQ6Ty1tYhBc?=k9&~LxE^AeR*9*9W@Yi z6O(42U!Wht9d({pmV;aVTFpGE)I225EGwHAjZhlIb_G?{Uj_K^IQ55n)6L>e zO|$%h3}T`pctx#4yrWqZ)71}9Ps9RON4mt-fH5#l#BEa%lQRnGC>L*IGTOPE7$rTZ} zd5-$m=X(_1HEQBP2*VCyF(Ci(Ku5$tH***BYN~?->jN_60n>ty^VlYU&tTKtOvvuz zKRgrFr1tyOj!JzJL6Ri%MLKd1^PXzQXQa*s5@j|R`=vwMn|-K_!b5lM^G1=-ie+kw z{IGj4Uux*^yYr;X(9Z0{)L7WaXI$F=K?1_@6rOy9c;1=z(Sz?($;XoHVF>4F{iU}b zhhfao%yL+f9jqTKh_K#+ac8&Qc%EsT02IUz>lc9n7!oZq>chVy#*C}R9EQiD_s9Gf zNqzR?288i(;`mtN=Ly)vc1WA6T`Ke3#@2rHJ#2i%{{31gA6|Cgtr?mZ`PN%i8F+pMP*d+jFjuk7RcE*Uj#d|W!$v)KEw zkprJ@r@pjwlf?Xhbuarjo4vzX~QZ3;|xhA;e5=m0J)53{e- z!FwAOR)5q(P7{0fK2e|8E~P2V-F~#H(`l4W331%BNgeakHx(yZeZk%T$KuYL zb|vV)$ZYYF@H=kT_wGPEI*w$H7xgcg<=s5``LL~DoL$WjYTlmaH8v0qf~?IjZSEb? z{l=s-cL$5LvQ$iRRz4`r-K|i1G?+ICnIDd{<#afC=i9k&7i|iq&)8A1w+qnu$GL9& za$3J}0cUP~up8cR>c}`V;pE=8=|Xv@8?4YG>@$N4IU1?@+DU&*)p_&fA>+z@=8G1# z=QcM!`p=728R_`8;!A(Ob1DJ* z?q!P>Bs-$$%=xzcr^CTHqAR46+g4Gub z-s-vT9nNRYekRh+RZQx+j(&mE%l;07@Ra^&aoLaO^&uB>9yuE+{Q4i8%eUDsoSA~7 zu`2V2Z|JLx`fi$#=87J4$(q_4K-IFrGB?$tDDI^J`+4RfUR6K6!x^qL!nqTAB7R$D z2B%Yfdv*9tax)4BwryoF zWdrOKG?wnaEoH;+Z~b7>V%yp~KB@&bfWxGoVh_fq`i~d{@8a*=`wdjlcKWrwGdh*R zf5)!MTz;9V@$!7RD0XT1G>5uCzQ4nx)vF*5USq)g9rfDnfA{dgB5A{)JI*Xq&pwYF zh=i!cp5h2xOik~V<{|yn3yXjSJWRT-5kPb7R;s{Q^5(cqflVo=<6X}B+nBTA%qfBo zJr1^aowIzppff2qb+1gpJhtXokq#=h=7=1LIz5?+sc1-|-|HYI&J~;piz(FF9Z;-OBr{4wlTndU|Vz6JtToUpK<9bErW#3tlo)P1#6!ri<2C?x}f00}9{=hBhfkLsfrC|VrvDN)XJQqqqlAk{MkFBqG2 zJNv|Qp(7y!bhNpa<*8R!DkNFYfh9P6vu4U=1N9|&Zb9a8f0$e}upRRJ3p&A=d?}~4 z&1zZ}rjFF&$iaYYdU?{?9p|t`zOkJ07$9Ea26U1^Nx+!O!T3_}3md5=GJhX(MxM97 z)EQ{nn&KUNEkH}i6wu*5y%ZDZKGq2T64n0h_S*ySvui)O!KVy}kh}5o<(15wGEa}* zzm9X7C--q^i;uGQCyZuffRa(C@vt|n-v-`SN)Xh-e6-m`{=rCD~;Hfb7^H$rq(<1-JbQ zQzD6%eaW)WYYSwvj{^w^#mgq(){n>}UCZ)~z9MT})WEeQfJWK08>@H#sEosW@aqT5 zvN^luQ3Z>_QZr!blW(bz6E1hY-0%}~PF-?1+1|l`2jxnf#gpOCXL11@cwolTz$cDv zYswAfFRX+*j#K_NhP8jdGRRNtYI4JrCabs4S(`NnwFt^&-fu6KYFWA{BSURg6-F~3 zwRjeA<$@KcAHNbUE>(P#5lPKOTb}UryJI~TPLAh1t0>CIAO0QI)!bQ?ggIZZGcs*nTEKJ1Swp`--EZE0=Q6pL7p#EpewMoN<7CF&Iy}0hYbhNI>EdOW>FW^6k*M(-l93p zvDlVrR?(^Fe1N-gCoiKpELPZ?!GLFS2}y#<45KEai8rkZ4G(0v>R2MSKj+Q?5ZqD# zuP@3TB8NQBZz|_@%|L<`7(n3dJz8%1ewW6`FXG|Xra7!lkOxx?>qSX;3ZSJohXI`z zU<-TV#h)di@*q82@VM|Q;Q2S1l-(OLre~f#w41H(-PNRXMxCA6`C~Qs6ktxr;a?2x z%uL$_c8h@BUAWh|c&zI>LefS?&q~0>tu?-&XUL^Ar7ju-w^P!eJUV_#hB(k8&V@`J zD4a!i*NP&o4Ae!vl%%q?*Iwcvw=BIMr1&JDPIA*iZa>%xq{JL=#!9NspC(1HVmT#O z3EIo{llxE54m&ToW3>;zBww4-;*v)*AYuEP2S;E{l^RGGZUYO0bKMt9rh+usza(pH z)ow%IYi$2e3SLP*qXGNKf!qMHoIPYNNRd>(9g7RwD!6yF>{7Gej>Ca=KWVcbV%Wz& zY9VVZ?lGX1VLM0bsjCm6HDtUG7XMeS=7Xyys~w8XxaOZW@B|ttgG@;!X&!!xKkBPF zKG1}3#qJjV?hoLKa7~tM2@k`>sJWv4v$@7(6g@`7mB2~`U8E5>#*$ci$cPn`*h(y5 zjFbC3RHzW7QGo;DRDn}QbyDu}YUCIx2||DFb(t}EbL{U3>145v8wtBw;S2Bxas)RG zu&aIJ%z5o)SB?-Go^>~d5tvdZBgH-rz0m^Dk}uYd-zAsOI4_Jr&Y(aiDxwb+wY4G> zJye0hXhOdctPm@o;#{@sQq zSDgzDH*VVLMiX@|NI|bl6QC5G5Sq@dD&6-0-4h1C%~#lDXW;7PbvU%H)%hkla4lwq z^X+aNJ2VottA4kk@r(|alp4@~A?7?X!pBwnHXnNpwDwL`Jxp28+Zd`I34gl_#1Ucs z62Eb%S4~F}>boza*%ts_6uqCsXKye`-Yd-ss?9aTXzqm=HH`k#$mT~n31KtUP6Z>E5aWWSx61-Q+)=wis&0yJQ5chV{Y;6 zd%0nKg3f~~at@lA%t+dZ=x7;h@izwPqQg5P>%Hut3M(Dw4?8MWSTxWe2nzU=VpO2m zIYcvIJgsO_M8=d`wBK{r9eHK45}^}8GLYDfmPG@FsnOi0)h9(c*c{_|u>^HhFqc7$ zLq}pAU-J`-u9at<;UohtoFWT98bS-{ST=5><-yF{33Nvt%#88oR!8^Nvum+kx)hVv zD$|WOH~mE$Uk7N*7B?IzHvvMD2Ji%NRjsGe=w&HNh8ls^a1&Bk+fm+f*x$`2uLoU? z^Gr$lS4G*?Az!SDhNp)gs5K(_d${czdGe!uQ9#+0ZjMH@Kq@X8`YPNz)(mOVbYivH zF%o`h7YN62$hvBRzEQ>#@a`#Wa6CSc9Fb}e4W!$} zy%b^@D(0BU(|#atx=E_q)UTJW|ykvJRopRv?c- zC>fOlThBC@!#b?c$Z+|Z zC#x-=9rbaP{-^?u5CIat-T4F*w&A!<@41r&A1z!}ZdAn`0H^x?d9>`J%In`)|Ew;&b z(uG=r_=W1Fvs;geAm(J3Bo^S=G7_>-XW=_kn%Z!3)r|PfR2Uk`jwZafqzrA{sYo0> zKNImX>ej~r0|{LnmFc@B+jq$WH=v=d;y4sAsKQ9Rkt$^kxM&a)njN>W98s;Vx8-if z2)0uq0!N5rm8|XT62QRp7!Eb)byoYH5^ZR{b%^Ttgz-4d9Vn9$!vIIwhgrnpvhCX* z+A2{@T=Pcjbg3S$gdj5V)RcK8oij_iV~RCt`HX|zd+S4V&+IsxFdYO*fr#MLVtg@F z%#pn(s04nSK$sJgJ^X$Z~E?1-l>S-*Vvk;y=L*@RZ_qgak**9Tbm=IM$mK`84<*aaZ4UWv7wQDE#@xCZqzPZPs zn1V@21si`Mq)_SsGUvY3G2595?z5iLnzD7g_y+=dC=*98BkR}nw6gB$i3bV}V`6&` z6rJBf8i%t=KrDd9)B%Igbi63GD!XCY!Tnj6HG*k#bxa*kdzzM*;6`|I9=3h_Q{6Jm z+@-3n(&;>lfdU*K$#&g4r`}5jSMqIbt1JYHU4pCUgPQbIv7^r| zU6!@<3H_9ZO>lo94qH)ewDH2%ESKmHjdlac(Sr?)cla82I^+Zy5H@Fvo5-e0wRvI} zV&IRSD|GUp!V?9ENu}}s4_WsePW2!7|Nkt)W+d&$78P&MOcoba!=Xh8ZVc}I}`YtOvRQ< z!uk}6VIVV?kG3u=M@x4(T#AQ9S>__RFoS-LE|q)N{9B^As9=$&%l7Nblug|N(s*U= zijKw#SJu^Ujf9y{a6zH#4?eB>wv`6+yqnN)MGWJn!cZgb#I^15t=EQH>>_R}uV%Ft zqXG%7tsZVYjc|WTm_&?QXJPKmvTzS1n3S>7W4xxcw)$(YwNFd*X6~$-0{EQ%M1{FK zh@L zqUl{xlNXqMKDIF=ZstX8A2IW7g-QL1$228GmK2>`izVz?jE}0FkKzv>jT?G7r(!h4 zab6ts?SjWXIu;ok$~#E(Q!b006!?zb-^`0eWIscnTmDN#z72zo3_}aN(d`}MzdH%n zT$|v&%Cb+@ho5R|`1Pa$u;Uf)yM0!+C7@dD8u`2!Ahef3fpRQ2{Ql2!z`oKW|Te zf1H0nl7GNo=U0y@PjTFCMPZGr2EL2_IJ!R`5fCOG5Pl&bLOUSxcEEGHfGE!ZhUuou zXZgYT+k-FgW!gBNei~Op4oKVxNTLTMBLY(p2jLz2I7@@LPx}eA`>93h3F3hQSxJGf z@&aEoA7scnzT9|_uAKhTIB*85n;AAN#*Moj)Dv$oo;?00ntN}}+O{$1)32b?Ux$+E zhac=FPi!cq;=z>{g1@x?DpqEBNQZ5 zd3kl0LfM-h+A3?RuzZP#K?S`Mvj>yi59hG{6vyGl!e|)627z(V^by z*?-g1D?=UYhlkV6pN=WBTkAU~J-`1E>ra~77}oKyt#z%fbBENq-PX0S%xG;cO-v6B zQ)c%L4`|a<%S*F+Ta1rYMy_?Oe|D#qalP3S3VD7AH#|N#I6gp`+oG*AAYoV6#{BBq z-p?9JLM~_6#kPey=Y~&kc0ZmRILT<~HVb zcgBVe8THVvk(0KDlkSFtg`LB?AB-OA*1!Gfp^?MI)#Z&1sPsvGvE z=jI!#*6T=H&8>%Do3<8a#>Xh@)m8J9vBQnkz3QfwiMdts{4`~3Vsv(NerbL9_vk!j zdV=v2Y8V(8Vq{vE+ZtAy{)|q{E>BPI;nsK781Qjp^`xhLgSg3++u+8Jd~ z(utk{L~)9#T*C_h+jb)(cjT z3R=j$J5MK;q~^&HgXJ>#C_{iA4h)^N zkr*a)etp&X@Q_h%-PvkvIP4`c$mmIL3xk6)@FxQV|Hns{SN9sL4x1TYJ^P;;-TRM^ z?#<6KVzDP(EhoJs21T7;KHA#bnfR~e%6JUM)hQ=kq`k(56Nb8-US&wpJqG=4tjbg@ z730TI>!OiTT2JLFBwNDyPAO43D&Dmxp>$uEW+_UxrpmCs%~7d*&tRhuy=`jOrH$gx z-tMAwekr;gITy|*D)dyk|J@uUv3~!{hruH86s{|0%!=<6V!pWe#`;dxe766Q@lfw8 zYUB$EYIVvoU9LKw!^h)I_m_`XoddR~je;?GxXB-&AFPSy3JH}zW4O=SesY^Ks!Mhl zH7d5aU>AX7oW(p!P|*1quY18yUb)gaW#|sOy#IbB@kx1qDy)liVf9JQ;L=1-VEN?J z@JE;GL#?Uz`eHZ-azg3?hlZI{>EmA(gl!Se?8@zR-m2GaQ0vp^%TrHHXDc5F`C zt$NMpYSB)~y^b}*_%gdZz9kOTvKWD2d-_o7vP!B>n}EjjqSR%L z#Qd2gl|~0?7Uss7YjHKc^U>lWa0`m|2NT>SOuAkA<>?H_+^&$*xn(er{VuWz&Hse! z!~AQvO6QsEal!}_*ufA8K`uTW=(IC>CY78CG2tGv=JRrvBN+8=xAI@Z)1W*U>h|O8 zm*$63Ia$+S=Xi$}q%P{K*Pg5`6RQjr=AVvg}gEHY~~~A2Wq#@gqyf7ZNiJ zW@{EFkQV|6~9*Xk^S~^OH+So+6;vUgpC8t^iog zX`EO2B{NqU?}kR7-~nvNly))Dcgjfc#a~CJJ%=?a`bYq&|5Bf2+EF104yHx1-26#0 z95nvsXrUUI@Z~4tRO)71GmFzX|Juc?U^FO@G#Gn1{~3J-_(A2jg`chyZsWa}D4!ev zMrrI_3wZB4rr0KYt-~Z&%jm@Y0W~7+>xI#Qg6-??7h}ViYvtOn-eEK5K!cE#DG5#ciZMC)KLu1!^14=B-b$%MK%SeR z8+`A5oWfe*UCFqQf?Qjv#Uj$lJ2aTynNr=DkvA$Otra(@P0W`KADwCEg`SOE6E4?? zmv>&uWWr9_*BQ>E>K)(^X=-MZX`8~gmzjE4NtmZ@;YEMd^H27Pkl_8qfvq$Vm+42$ z7pP#$*UlcVgnaL59u8H+&-V@TME4cPg;V|4=~0ilByw?+Sxyhv-(_AdkV4oX@ml)r=uQAnfx`Ef zl4xYV9-GXCt2!UdTb`2cw(Y!AQj37RDMGxJzb@s|A1#0+wB&^k>AjBup8Yq&|E}=N zS!a|1Duf`4$x}1SQ<_GrI1*odL0%U`j*LIFe;Xz=L;z03Waj@6;1LZlx~5Wti4l#D z5RSPYbA_*)+;-kvW{j*S3Zf-uZc@NJlHDW0_F&XV&o_NvQ$-3QyaD(|I{}u&dEY#*0P^C9R1t4&vb!#J)dc}@^6Jz{u*m>pUvU?Ut;_B=x|OF zl^O*W){P05x=aXX`(}YEKfdXHJ2?y*tRjwMsfc;iZNur0BY?&C%1@Ulgbz2G|2!cy zL+_BNu9vB8%ERG_!F^y5WnTypK=gOcnUvtU3O=84PT$rr`ERp7D;eb-P?2vB5AX*I zqtGJLScrE3qgs5j#o6}hxxAwT_%AX{ow&(yI*Fey0wd}?bsZyz$sI@;dTjZ*8axNo z2sV(a!*E=8kn>lCg-AE_b%pMr@vuJrRvh#*cSA~q>fOK1lAYV=oE)J3jl&u;8hnb) zgy{x)wyzj|Ng3${HoR=#mS^mN+)4o&{24j*`aH{ncLaO?mY|xn3BZF!`Q$}Ce~C8Z zy-aZ=2zew_dqUKK1f{x$uh#wf1utU}!bUm-<7&yBdVZDf{yoyOlNxI)C2AM;q`4qw zNB`2U)P-8dTn!+O%>uqvv}$^Iga|TU!L&8R)`to2M~tqYMDvhn_^^eD+BA$VXQPHk z*#5)s%Zn^+zfH!x(%vz1s8sw6{+B4%Az1O0-d1(vVhGa1^6JEPVWlz%7{-LrpwMgf zaY0uSHxtkPgIWdP)iu^=!AR=t!1v2|-Dd9yS_JbHRz+#TA&gU6f>n9azgMw$d-sq+ zo_%sdJ%a{+s~*ClfBRs-ZrTyXkv|1q5WiCCv9vT1B$e=H{ZHq3gal~B_iOvQ62-e*y^G}+@FV5|& zXt%Xrnp@*ys;n5+6B>Wcnm>}z{VBSEK5nO-`bSs1;tW-fbHd~}1c?TRyS~6_)HK1T zg|)>+JFaq;pc98bj#v0)U|A%B-xm3+5+FTSyzgNliKu65r|`mFKnm4qgfD=MWsdf8 z69tBen*>s@5Mg^TRLS!%26Bap|J@qKArZ!t<-Se?pH2>otq$|w;}X-yv8rHC1%%&R z2of-lU~cj@HV3Z~pPk=_<5rV>v%mW3utc6$ygxe+kc#nGCqPW_;efWVt8zhC@PVc^ zcp+jCQ-6q0K5!Zhc%kfRjD=Z{BU0Ou)=yxAzn{1Mbq&NYO{1cMpus(gpetzj1QqK_ zj+$wY#Ae+GO*xvNo-PgpF3>SdzTYB4RQNa2pHcb%h00hm28f%Iy&tv6X`BI`ph6Z4 zp`<=sOsjA2lw-_uka!;i-VP38;m%ii@jl?iNxIiZxuBTeaF~L3B^hS~1dHN>^Y(xe z$)NgowuMb$)fUme=3!k55n4L&Z3506#qra`_>`&m8-Ro#G6_Ru?%{p6k(&4q{-t7C2hxe>;@$H-iS(WN}^Dc zz|6^@zyPL^&^>bOb2&-I=G-H;B;{_ zMMBV3>Rzhsha_vdPGJAHRQN)wf*`jFAa&6^O$PTW$#c;bP?$y`rhymIwA^X>xq|%>~P! zplqL^7n@;SkwL*^ES^ui$$K1;|^g3D>x-SLBq{&I)$Ik+&G1Z zdWCb3iA`eu6X|@wlW>qFDflYw=Kb^!jxS{qy9?>Df#L~ESOf;b8u&UU>-DOFXO3LF z_10^!MbekRnBu@!-(o##S(Buivv;yUKVCUjAK1zg!P|VyVa~`nLGF;H%-5&0;riLJ z`?kXX@ZuhGGyPA*o11S|_PIkwGWu0=Jvwl2=;**n!Q7b-{x1S^wNi4|J97QLg|SRA zz1($EB7ol?MEz#vX0@=MC8m<~Uym(uZ9a;ucnn4)Cuf-xE~H?+vk2Mkgta9C{lJy$ zR=(kr{2ISp!4d*)4=7TXcfJYs3*ghj|L&sNyUSMZluE4k@Q!RcZ=pgt!7@zCXaMf* zft#^lhT_!Qb?m!abp?j65vs2plO0}Z3l-=dx?Z=+y%1IaEPrn}`rh`%JGIwHji7w3 zTUqEc1)2w`x0kq#q0c*I46s5)-fBhOqn^qBFaPQUuI(oSRY9&L_ag%%`mYy7S`}km zif%?1?d2Cu()W`>4~yph6!!lujI#QG^KmJ9t`ckgw#WKPcY!Qye~Bs?zoh@lyf+C-5IY7v|+awGVp*$Kva13gsWB{w z@FCeN*iB6KD^HOK!XwFWMa&f+6hQ1>1xmP5QoT~zx)P+oEEmiIu!s1kR-E0^XPzpv z*hM&)d{LqYe^Ckk0&e12Au=kxCZ~pw!WXbmM|=Ho1!y2q|11}yL#iijBBa)j<8zdzgM&2@O5vz-=bv>I|%mKC1eGMX8 z4Sn>F7vvNT?t@gGZR40;jTsp}Wx)~wx6WQ4Kwq0O;IF%j#BaeC@z=zwu0>Nh3~7yy zJU_M#e$2T3z<*)pM#5`(u0|68cmS~;rn96-++FksFM)ffPO;M%H^`yo6jM~>X-6u^ z5Y6I0pu3GkccEd++uvqI_|F1K`KdopeP*oy=fN%Up?1Q{l` zg31|x@X3lI!P0$wywbf$(SA{rHeD}tcs~m}5u}Hy?{t)U2w?J4U<#s_e~*7Etbj8Z zQ1lXwNP$1KhlC@$>moJ$2!KcSOpOJDR!xI%Ho+43%4m-Eahe({e&}ZDkdZ`ve==lJ z0r*;dXxyHe6%BgOEvTCC`WN1ji83$O=teL3c; z9+zgv!|l-!=JK(Baed9+00-395e148u#;IwIG{<8OMyuXz&uVz-;`U$Q5vs8BhW0{ zfG$m*Q;yreoVxj{B#>w{$lD%b&Hn4Tv^@M0%M~M*pcUoc?}pZlOhPzWtj3@KLZ@Eb zX#fCp*B)etha8uxt{C+KJw%)&WZYmdAF9rUwX?1Sz+I~R9!2+C3O^b`t;^9X2Wm8& zyWv@Ro{b1G$1{QYZ{moif>K6Pr*qrNb(n4NfNq}O9cKYjb3Ho`W*)xdS1p_2H~C`b z&1X<=qSZGgd5Mw4hW0*ax32^k3G@AM{S)XQth~(x?_;{oKD-2)F~mSGpCE|+f=))` zP?B=iHq4p|Zn-+Qc$Mw?#7)rVyrBWvdwpUKD|{0PlcqB^3z-2-du!7(;eZ$A(DMK& z4^|f6t0AMgh)y{-NdrAduH7eAcSW9m0RU(zfFGg8X~E>ziRb2sf_j+m@r|SJw9dOy z!PfS(DA6W)-SPLDNRdmTj4Dmf_#Z5Y=@pYS)gQh8r3^wncLNVgAYH@V+DcL1@67Jh~MS{!6dTK+L3 zV~T+pMDSmGKZ3T6QXlv<8Vm}1u~WMa0X}!LN93ygYd8h^gMn~im{gMgO=p&*K3DmUBP zWkjXDEk=ATgf(#h_Jsti>-IO)IoZooW{(ldtBoDP?h>;n`1c;b3M=vBQ@Hmn~V9I+UrG zI;*Jl3Ix~TFcaplQneYu{8B&v#TotCwre~VJOk%g7q~j(xQ&Ux=g8LrzuM^KUexF_ zHL=qy5ZtHJ9Z4c0Tixlial|}cwtzyg9R1&nDC5A-y7;-$_HR z$1Mtl2E8S{_@X9d_Ij6mA*loe!{&^Ctd%FLylt1q8O2{P_ZTx;DrP?9w)h;pDp&&5 zeXDPAA3A<~@v@phNhdoja^HEPj1q_k$h%VYp1&K~y(NT_}gxAN2S{p&LUH=>hjD}kU#EfTfY(qh-V$6l^v8=!cH!X)N%!xgMp&cS(Z zL~yC6;=WAgjvtSR(|t2o@K18pY8JxOU*_k3D(nwebMYwJlf`2zhL>`n(|z`lQpA(~ z@^$hl>!G277y?{)D5HZF8%4eRWV{NtzbyV{c4?bEw7vTj#GXvdO#steM&_ zaRvfH$X(EAj#vEEt8?K&{LFGM?^Q%LJjz}dN3L5tiFO*i;X}K6EucnrVECNT?F98y zf@bvtAB&2L>&Ge6pfl??rS~Ht*L1@%SATI0S9t!g3HJVA>|% zO#;isnxdl+w?4@8&T)C3gT1C%j{<2E2QV?%h8yXfAZhAwO|U{L&=Rg;!6R>zW{wnV+h!ye@mk1GfSTK^zFlf$;bt~j!$ElMCHk!f!^8^E!X9kdTv8n^CtjP%a;7&# zl>pa-Ii{fEvoqDh?=OjT-Aa~sd3fWZ!uQ@Q66~v%_={VaZK*JBp6}@*tec>5F0ExlC1^57%_qGM>CqFOvv!eZZZN5OPAh zcz_%lC`{foNscltkUHgj(};np3r%tFQSU*#8Rd{OA%&NFwxdrep-nyo>KCccon~&| zzDt0b73-dIF-ZtAEs)tQQe#B&jH%fv1-;_DR5R7s*GM=PC9)GSaC?Js-WfHhOrSzx zeV4S$3U?pcrJtd5`G7n`rarm6|5!sl)Yq?T(cxG4ZL@M{p?#k%mb?37{wOY{DFI05JF<@sWM}~xN{GB_^K(WXuG(7HnAdqQ%;$9 z7<_87S-5IZ4@+5ZDPFP8EPjXcA3L?7TgP54%$FK6_vpga-tMxUVTbQ)=Qe`3UkI!k zmO|aoXG2HE!k{Yg-)OD3pJjiWJUPs40Prbzr$rm|FJ}H=JMqLn44&*ZDur**PCfrN zW(h-f)f4W-MyakkY=v94EcRfxn+F|uv@Ke(ug}NYF>2iHH8q!px#E0qfm|Xhmh~EC z71B7$2b=(1vg2w-h2~Ym8BXEaQ?~mzcCt9`OWruBzfoA3{<-0y?B^_^jX6;CN5hPK zF>m@eaLeILd z6MpRYt8S@3MDk6-;@v5Br+}ZLC)k)9Hq+ci0j=lGdolc}<(->7ZOCU{$HBq3TG7CWkhycX zgXV}cn|Jdy<~8YoePfty-qnyrBivzk(#eBjr_hzN8`^)`ZTBLgk5_T-xZuY6Q;h2R z|8MPfF)Dm^dTeEE{@>5u|F&Z1cmA!e>}<~-^v`b9wrm|9F80r^yiQ;JHM~*%nbJ#| zC664e?(R~@w%dMB2VmE?cY9@}cZUYnTiWMF=Kkoa^~#9sQf5b2HfAOk4;dHy_2;k) z*RobXSRytpxAyK2wyeyIjE~G7&Ms^>w(gFSH%bc`g{x6ZlL5uE+($wI`FvcBgxo>SQ<9Lt0uk@1UGhgD4W+(&73On5-M!1V%Fs3%P{-|EwU!$ybbsui+ z4o@u&XsZs6{Ta729X8e<9-TehJKWma+gn*0pWPWYHy!)^XMJvAzKyi~vth5fYrXO3 z$@CoKe)@7&r_Uj1kwZ)zz-wCtX9!ZB^^d4Trd4((p9p zaNy4&vE{I5r1!k^Nq1A%X%R*U>*R2U!4(+PVQ*`7cxPyKbbry&hN`7P&Wi7{!t4)x z+L`W{_lu;KE$+y`@S{Y_6uO3h%IUT!?J?rsF04G*~6@ydE;xV z1?AMf%SY24d&MoQU$b5+;dh1?=Phl9lsY;X6|L#=y=L0Z=ss?i+_9YXY5!ULs-N5H z=srnOfNZQXq@}<0pL1Z0*Up}d4lzgrLqRa0!v9hUhK2Z#P&AVm9^`O<^k4I;m&C|n zG4R950Oh~F)+p&@lyWls-@-2gMKDkW!#Oat0|QtvI0VB^oG^?9Lt1o^PA&`&F<8w1 z#TD_G2ZD)Nu7G_v2VK9_jE|I1Kmd3GqWp}$911NpvO|3{} z`22TA27>sN_y5{i7Hkyrg4pL02Id6>1;<~!%m!&LO4i&a4P@qkPbEDj@ zJxQK!IWJr8zSDD&HTyKa{RJdE|zhxp=A;n_*B9jsmM!PluglACHC142aV)$xH~P zSSm#L{8He;wk)@l+{AzpRCus`5xuW^GK)_ z-AwV?n|Xtbjn-JW`73DjOYU)2huX&v^xjb8**5@~99rUSLbwoP?AA!`Y8vf!7~ADH zqLhUzr=~H{T&DQ~J;h1_xB6dzc;1SNq0!hJ$#B1TVuYZ%62uSa$5qP{=tw{GNSOX>cc+cmsB|Vx0K~>i771H z6xU~(rDO(O7l=`ByJh|=s47zLO|fojiD?M(T8S7QZ!^aR5~1SR1c-R$y{yh$OB3$7i z4fr3Xa=L;Xq(8u5@)r>$tRNHv)wHp1`b}<%mD^;LlUlDx~p*3&05uMiYrDiIp$AyDem?0CrhM(Fneh$l@v$0ZjHZ`E7U~bRlP?9DBnJ*Ol}VN*{AuSQZjSYYD5{9UC#q{K-AT**DJ-J{W&unt z2?>U8?qAfhk7rc)rW#U|s>@j2>^b65ut!)B5G6lpJm#6FTJwaXO(+6dKy3$3R9DeS ze^^-n;^xOy>Ka0bcTtED{wvX%ENCXr0>Gbw+^=;-4HhtUAVhW%pw-sp?iqogaNrc5 zIJO%-=h+t^uE13YVL29;EY-hi7k|_L@!dE&ewW#<0}XbQr@cUsiKq@D|L6-um|y+W zU#O~X2OIE|n@S5G{r15J_8gF^O?|1@U#E`#PLsSlyubA2O1u2mo#>Kb03DTP*I>2V zFW+v5Ii2t0pAfm{DLCY_Ue9`Cyx(A6@2=b+u-eoq=J%xX2#N&&eq6cA&$10#=++k8+;!eoCfNRTGyzSS2;|*Qzc-DEN;Wu2f>+{|9>L>-g2He=iYcHP)DwLhG3)(!$pTEXk`+&B2OG`(l32QaT_O+SpsOYR^0-}mrJ z_KipHl<5bZkM-%m=`%+lJMn*j8>P%O;+WVwzYhBNaZvr_m2LVsQ6B|{3K36|xDFh06iJ7=Z^=OL+=#f+#S=kUi=MQh{AKl*a!eXV#G&F5$*v>0I))s*b^(qWPm9) zEIM6_Fbt^K3p-Qu_*1o4t6#wDKbq?(fbv(1vo+zt&mnXgWHjmt9Usu=gOK9|^YVeY z8Ijzq$iZZg022Co4-6ClpA?ysx#3d)CRH?C9F4FcKeyd~o>}cBj})?uGDd>si6Dr> z^Qm(9(_+mF6)-(}z#;~bIq4zpMYv5EL=$t^( zA%=0<2~x@e|CgL}NPe+JPCCTnKr3?5)EUG{ae_D%tVIB`orZ990^uK$#qF8>Fv+8f zhz9^Bkf5geCUPn{dPYB`L@qHWCQ-Z`s@VtjM8k&gF!_vYu za`1+?1aSa>L(p&OfUI;&4Ut3S6+CnLt86Y5RMq|+Jvl|T?ydgox96-1b~{sT@gPN9 zSFE4?I~5lV^`Pu2Digl~f#(2tnFv}#7w84W-n1&bP*EV*nR=hfB#uIuSb@ErpPSWb zSiZ=i;+fZDIUl$7pr zR5>c5)aBJe08CUE?sKNRO1A=R!nB32*kpkeys8|cm+*38;HM0-7UY0R!Cx9?D(QeP z7p)U7f6Ve`snRzA@|WYj1dV*r{#Vf)@g8lT5Lt^52Na!uRb|jssnJxfNv(=>hMoRc z`ZMA^`8C2KyZSRo?%KIPlbripKIDbp% z)HrwW>c}2;83Q!=$m?STtG&5U!0|6X+nKeKMCG$%LI9yIiRfqV6Rj=YDsN-s|go%)`^T5<*bo%HkjtZN4K zY-318<2QE5!at2E6bp{#`m%QGMIBr!_}%h=m413|HJwNh@MR7y+q7& zCgQ?~dLM`!6b+0$K!&{p_mQ7$RW(;!5fH3lX5XO4TJ8UlKkdU;gdwa_<)gGAVT<}j zHi!Q-N4C&dGv84&sx!fA<*VmeK7{K}mP3si%f>Av5v*AB5GT>3`T?Zd@LkO?MMI-B zZ-v*8Bh}cZiFB8VPHp-X^HTo^>E+5p%qFtSYeurR0ngUhn6z<+wDqU8(d*ha>UcdU zE!a;Q_)exdYHM!?Oq>9y6z1bZe*SkFas?3mlpYitvfAFm(h>ft+|i`t54Izgq!CPM zk7VtP;NW|SbL)H&ulYl@D^BobYCOLU^6R_c+ELxEGLFm#fnEM7UH%O}3&y%W=X4i} zG~f5iw!y-x4O41@YPAA2*8)gS+isog#U|A*7y=>^>0^ zlWI>ThsLBr?@f6I80}fi>FsFXpUHWrB9vvD44;t4B~e%)=SC7?ioFg4>ZxaI!6v}X zBC-2@Olt~Ass&h)3N*$fN%Zx>kNX%me7Q9Hc|<|GmXPA>0Pg-@jk=6?J0{>q;!}>8 zc`O7%yyvD2%J|xULQ$XH8BomPLdWn-(O*KC9>Fc~3$QSh0w7Oo`t8z_Fx?+vkiCM<6{I0N!3_@ATiWTrvMgPj5=+EqtWLU zVaVdT|K)=F4}Ayp<;F!a%r2VUCTU)UJ{n7!_q^@&P`dGs%n44?aqw^$D24}U@r6m+ z+I!Qc_mMNPqE|1Afx$QlfSg>=TlZ(&$v`c}{;cNA_7&vub*O%>HwNlyWPDq;R|k*| z+3YhF!vf!2pHtGOFew2MxpSNLPcN?PsQM!CNQAaMDCz#>O}IUKGVp49=uN_y;LiL- z8koKO-W>m!f1<559RLn4Gu;?kC^EY0Y3p#Y9E>DbES(z*#a#iSXb_F!p!@3!ygTy) zX5Nn#g4N-U-dGT1YAFG}%mY~j>wq3(mNTC%qWPfK<;$_VOG$}3$lrG#ngJ+lut%6+ zbOz`V0GN}Al{oe)%SA7>Sl@q)5TuO=Jzjls10;wtbNs#fs|?)_cK~8Mz=Rp{UpoX1 zLNWHFnd1B>Ptei35C{8(^V{I=Z_KGetsgW6fYJx{gd?JI`}-U#{k>|BIf)Dlls%LEc!bGG#PFe}MeqaY2#_qS9jCM%Yg#RHk2;791hV0Ohk1a|e z#(*(B&lS-OW_}vP07v5*njac^aPBuER1^5ke39MGYkmQygtBJgx7M1An7NF$K0z{J zAu}|9G|@k*m)7+Nx|$BWO>mB%2=x+2`)nW;k$}hMP%Ed^(9aMcVSPn;f9=ma?$~Eq zA^}m+YBxx5kp1@e**BZh`1u^eo_F{cTIK!ul({0nfoiiKu`)3pRe!h zJUeioIK2K0m}j>e;t5R_htN^OMV~{`e}zPC7;Rre%Dum1^azpXzsBA1@UeoU0uoX| zXL6|XJn+Vi#+RBw6o4&G51-uznSAwRa`-#M4>2Ks2S`)x7Q`R00uBz1Mjrg#g6$lE zfyjA?Ow->;HmK(y&w0oH8N1~?rL<$-|KK`@FA0SN%(UO|Une;ano}pWy-%CvW)iZL zC2_$~Px*Dx5pk@t#_z3m9ZcgGGufO}AapQ!-ljylXlV6bmGkd1#_irU>l&}|i>K@# zqD?;r?%ry#QVh!hC_o~3RsG)Ew8ZjWcuXO0KJ0M5>GJSk=6Y7+oxdIvBD_5;l7bom zDtBHlX%2mmVhr4l?z)mI9(Cu?Nn6iTNw0CL8)ZVgU{2w8H?!fdtajaIJJT;XO;7^Y z(yn(Dbdbi>eiwsU*L=?3Zci)?pv#XcP()4!JZx*rUZ(l%K@LlDoK}4cOpB>iqA(t?M0J`FjBt z{VD0l`H!^g?BAP^Q79$IM_q)$kQXDOWtb?0dWgK!5sYt$E(oA)GXBTG=zd0U>UU6M zWwk1|q9sCyycrQK$9PeNpBz4-7ss5L*)GtikByXCy|#^1W?uf!!0n)s(l&`(gm(fZ z8!gfs`2Zu=yt9R&Utmcc)3Z~X6K@Cp{K<~VqQB9K6j1P-`u^ec>xploQ>ob zP4cb5{O-H{KLfYokC@He%0J+R;Iuv`3tRv6h5rU_84<0xD|=+S;BhmN(Aiov2cJu8 z+bMI0>OCvB(3k1vZVmecvA~yey!X7juVh+!wN^v`6up!EMl*0FJ$|-9D@LBySDH7c zUn8=3{V6_Rz8Xuf!4wq0yF5&C0Bg*)U=qw2xP35N0%LxmlGP`hhg09%f0(SxS36>0 z5+KFqEU0zU@P)PC!CafXUQ@L4jjxP>Tg|;2%-}P{sN|PY_wU(e#VH*=dFS~2Et^!9 zzLU7J&wmZAlmlGF;{-9cwQ2DvsYgzWpHujP-70-cl)}X>7Y4b1rKdB;oVLAF>sGh& z)wZ$)SNp9Ir59R(19du6%%L5$HdrZppr+&S7z zW?n-X42_~}$1*pwJB#K9KLbF^H8?H-)Vjic9EBN+i7x_04%@5gte9}_9N14h3jR!5 z!A~50kB;LNBVS>Q!bE;__^HjK@O;TR*{gFa3@Kvyk+TgGmBJd$+3Wyl{ZQ_8LIbiz zVj{2_*eG3TNt@<;0Mj)z^T~k2BoZHvCFZl+ASL@>1YDPAdk)i6$-k0CZmFJ|aX;@R zPJWts{c@p+tWt{uTT{(fZ!8|_m?L~N6mUbM85ilmraUbW>_Xx8v!40huVTCU&(&$KI^n zuq!bR-t1EEd2bIC>%F>@$$jlnfg}}-t>SVDK(}8R{i|(#0?w>=d<+N{Ohj}@MKp`N z(!i1v)q zGX*rkdDaA!R{@YuzG2>?$4?Aqitq?5E~0?`Is!sPCtxut?=qh{-?oswrBdTnC_H#W z(=t`#^QpligL5|gE?8K8FORpU${F>vQKQ1gSA6cr;LD;$&q|0g?l-K7nO6sy*D0<7 z3}b|@uO;hr#5%m>xbAwNy(2@C5A|Ip!7G^yxE`2b18rtyENZ(SdHAGsTQ8P8H-w@}Rp(3+FL8Wh z{$^e3_2%DwT9k5a|0&Ob@{*`CNL&>`f@M}{=;nu)tk)a1-+P932T$ge->Mprf5J(l zf>FN1^}DCAVd-&pkc~()PFlOx+tHh@hZ4kA*o&}pAyW{ieVODEJSRta(%U;}!r|B4 z;WDdQQD@R+_#Z2VT{)V59r+H#T&|~6y9q==$frcj6yrlfP=c2nz7Fw3v*Dzf3q=3W z`#)(v_71ar4|VGRSJ*e;wOUe4gmMII<=%=Lm89Shs>{*Fn2V z^tBqo>8dN^&w8zWDk1-wS0K{tTEVvpDJo6 z(Rk}-O+zQE!R+~`MVjulugJKR{{FeEDwct_vHIw~2tDujr;nU1+pUJbByQ(#YPbwf zU;)W+0Q((XX9KC!;h!>l<+|e!ZP?Azf4jd2ii$ zH@th#+g*{NHz?cb9(05D!DqSS3L*M0G9v{W;u|?F8ofi8}DKwnila$?&{Th<` zBk-&(IAGUPXAvAf!u`EnjfyT61jJ`}LDsaPmg$ce?v2gO+kB+57%mIZrQXsf|y*%r|doyrpDC zah&qKmEA#TFI|mvnx3WW;R61O&G^o1n4Z_1%hDw>rwA5z{%t>R-fP$xUZh7v^hT;5 zW&H9lm;U)4Q}W{^QtiJCokEtW-oUZCw>w5Ef3Ba>ye_^m4y?`3zuu9zzW;|3hwZ(+ z6eX4Y&z6Dro@j_*qx{XF+<$X&x3A@KTz6HAzTs2IATBk~dq!v>dvuE*`dchIV^f|i zmGc3k2t}7P#Df&Ni>7)N^Z^+JqiLV!lA{*BOQX|H>)*1x`h(P8f$>$4U}Gg?+)uh% z1s3kRkI;o|C+!PhSwad$GNukDp^h8rj?34IjDVQbqvP9kD}QPSRXKiMO^1-OtVkEv zy_1gnj+L#VI$VU3q2%11xU`fOam}KK#!3<_f{*<>g=0FUl$)Q_b_%WFuMaBa*F33S zRiZjlIsz-3-%+mQ>SB1HtXwJeR9Rjnl|$?>Qpvwdty$`6wlZ0HmqwRzj$hOBHRWd% z)a<3i4sc=*6j8=fk~||q^C=BlN}H=&NRZV+SjAFC#Y$7f+E~TLQN`B3$BU}RCPc-) zQpKTF#c`--EJ?*iP{QR##g#(U?W8sXF5w(k_(F;HgR!coqpFv`s&|~KPp+zOrK+E? z>Wi8>cby`SR#n7}Y7m85FhQSxY7Ng^@1=l(_?7e?qgtfDT2vgO&u8eN0pnA}uvGSg z*ytD`bnoZLZz|7=2*qYVQ<#b#lA7yS*}hG`a}L2==y5j^}o- zwt@Kn_RYZf5g-k~ES#+F&acg5XR&){Cs!*gK$q0szjmqL^Yi1|iyKFii;LSkSHH#= zSFrzx@Z|i};`q_V+VSN09^e+(-oBkh?5@m>@6E0+F76)huN{qaO=7ps_Durhvqwsm`SakaRJogK%{&QGq4V+SxRi`cW<>$8D>Tp7?c zZ1)aLF0Ns*0BIgQy4sxuknzFp_U!t~!u;Oi*46AdU>?{$1R%x<;tG3mvVDOa8`=f} z{eWg+dj$&|VrhP5c5MYX-`>el&#%3?`P-wlv&s2?@&my3aI^-rKW(4gEbguC^$hJ! z4jr7KZ#FUWYZt&M06H#cXVnIu+})gdvSBKRxlof#Wb!> z4(+XNt|3-1yJx$AKn&Zrbh3#71_aKg8&8%nS1Xv6wTs=G-KCYd&8wv&3<|q)an#p{ z0YnJEX)sIUy9c)z%-PV%$>d4j+UEG$#Tj5}*j~H(N67!V1%NS&tG)T##i28RoC6pC z>Sk|beD5E5-`(E+S5O7G2(FG0yL-Uy+4-X}V9D2xfC~le7#IiW{y#jww|h0a21pG6 zJ;CiPK>GhV60VMJZWrgVi@;+2L;Gh(z`BlKodFxifl+|HfgwO=a0F2NmEGIPwKKqj z0Bi&XIsl`=*~u9|@PSS&;H``SZ)N;wWc=;b8F2Jnz@PvK70yP6u7C>*3|Ih*_mBOb z09poMb^s{gy2Sz$2Pap6HUfAhaOhj$R+zs!I>7?PUceFdZq9(a6}a26z~=^D{BOkI z3iy-7423^j)QHk=g`JTQ`e#-o)hk`G4C3~HKVh{yhEDbw0jYLze+vKWFWmh{oCE1p zZw7MJYj}s!@0(8o{sh~e9AWpB6ZP8CU&(ORPfF1*_}Y;wMbAF!yKU*b{{G#5L9oK? zck=7bm;kcTa-B-!Cg1QU^-eD%!K3|Y4$sVH-+Mpb>NY~`4Q9OmJIl$y(ugwa_dkHV$}@bDt{Ez{=wDc(se3U~1}9_wH93la)nNqjTe6_va9t3a06% z>9}gl-Dn>%kk;^Sw6#C~<a5XnJzh9dcsKGrb8!|q_0-VdSq1d_hM z=)h5MCM4lb++FVXco&}WG2YcAMX|31Xt|Q{B91#L5#;C%O9>g9vZBOe6VkVj)wzRX z91A!Npx%Ubz1-T+iKob{UY435SU1X9ep<=f@b59puc^Sj~>UP$6o z)mW4?BLW0pmDZWM4~so6MG97Q(ao*C-*I#A6cZWutx#y)F4wNTjp9(mpFgnMt*>}6 z^<0A0H6;i#!W%6VI`+Pn`|U>)>fz6+?}e(;{Sz!gVc*+21+1ICNWc2&zf}VQAM{A? zx3f(SJ_nJ%EBw`l|8(cRL1cOny1RqUQM7|)E(0O>os{3LI>zoyx>^BUyqm_-8fMnn zV(cj_-Y{6r5enI-I1~Q4xfu3t08K-Xfd5z$4H@zpseD*HV(2= z3m#dn8`q!-St(jhrhQ(;tP)cexDAinSz~KL;o>p$kXr&*ff?`L4jbTG4DNtIfjoK5 z0x^$&c&Y^YHvjQ_g>-J~IY|D7b!wtPpzhIIGFJ@bai8d(R09zMW|(e@LzGF(w~0|w z?Y@K+?OT)L1CjLnskX1+yRBU3S$xu$ly4t<6m|C0)4vs<{?E<{#8DFCh*> zpBS5!Qxp&cfJW^%JBFoS9pH8IP$9}JLcre-lsQ$j1-DUV7XyXiAkr6Qn!vQ0G3tUxg9xlGVwoVKt2ZC!}wqRC6+H!=cUiNfPb|^dY zYlxNkfOg+(M|Gx&qds#^ti3Z9n(UVDkpnG=F?fSDu^5GGVv|22A@GyNO) zX}p@211$@mBg@bI&3FN_w{-FwYm~68977UGk!gW!CC{7Ig|Y5g8c0&6 zuX;PsEHXj%3M4|we-K1dwevi77Ik<*Sh@2bYjNM;c@800x*4n;n>(JrTc&zC&8=$^jh9Lc6sGML7!DT~<*=f5DefbZdY@<~9ZU+JZW3>+PAxG`G}Q#*C}euR ztIq^O$ULNK-!2NcWGz!Tnaxx`0tE{f2>q!eJHtfYixT_To?v%EOZuMIPFzAXLw?7tLd*3=dQvJl}qfYpUi#_hfxk zSe4Fc9*?=lE3_v@e#for0soM_ zl_0hEhZ$O~<^D?W)FLdfc1~$-*dM7k+m|u7DP@`$p?i#If><~Q)_f}O;Et47D|B`b zTJ8O$%U5p{{5x_)dhsjDLsmv~uJNwH{GZZZ+Xj(QM9K6jQM7w(q#z}JRCWU)F513x zuFN$rqCWS${vtDUmeNsqX_is@P+l3jQm7b2%vaJdINJ0+y+nNd{(Y=Oy%?Tdpa0s! z2C0#m=t+0P$hEtj|hf0a1&hktPB|-_@ zGwK$Ms^cL#!RPZ6M3iF+d#`tL`|2MbK1L}()~Kh>JJ2m#S;I;0bhwMkmnhs(7Q$!a zx7@E>`m2))_P{pcI>s3nf1mJv3irOws}iTG^}+ks(E|iS+d7(rDD6>CgEbDbkc>cT zHv%jIMR}2-Q~T8E+Uvu*jUTSWXOlaKAk+H~5$IaNl&%p*u^IID{0-HG7rVCwnRoD3 zM)0X!_C*HbqTEgNwO#Zn z!{3E;T2pvrhLG~p#x+Jp^XVj#L|M^?DCyzP!9i)$p$W8LUM-5FhUoO_7u{Wv1SkY# zmd{~B)&5IV%*)4mncXqp8UsGiM^#H|)?7p@yoqfn4J+<5YRQZ-Z;atBpr}%d%Z>8r z@Q4#{&{;!482RERGhrJ#6muXDrteMWI-Vu`^-^g_Zd9<#X4Dqa@2|IWhjIdTI`;jh z{&rtN2YrHalHEQ2#FL9eYPS~yS`fr}Nn%8)l`_cTlmscqi9C#o6DP5n@J4n##P{<~ zfR$SDGb9z2Mm?@?4mW&QXMYRUf9uC7$nW9y|>LuQc(AI^s$aj(+_w`9;D|b zsZRaDCz(($-Df6QS3uKOKh>!$MuRppn?K2XE7j5`!^k@QomAM$X670wD^M!M-b{`TE&L==NaLL{%z)&Kf)K)8kD?)jO{pQ09@G+rboPY|+i7J@IjmQO z3H+aq=%c9&y@Y%<1(?hqXBT2slUZUyrmD~I{G2Cu@`&F#wOBQ@_N1+`H21E#8@CsikgRR;qszYfTxVbJA* z`|C@*H8E6MPf&=rCjz@<47~^6&VcT@LDWTg)eSH4CS?;3n zW8c&03Q2Ay*RG@S$O>aAL8wvIFk+!{8up#5fG;aW*gY7mv5P=zJ4hXakL zUqeB4?ekdWd}_$qokr|~#%;q!ZMQ}*4GP62GCoX$PbdB;iU2t%oxCHEYD5DMZ7e8+ z&f7oDLr_C{T?z4*t3GK+eRgOT2yI@1gQpHam4lMs$Xjq6EyKQbbs97!vCZHE&`V59 zEZ28ESaT;cO}9h+Hb}nhh?3t-g+p4PZR|%^Q1by!{KxZ^CxoLvRKd^O27fI0LH@)x zE(^6KUBRk488?vlzo}~zQXo(*wh}Otd+_%IgvO79PI?^-=tb;fzq>$p7x;z=y5#p2 zkL4#gj{d2fkt@Ax|+S3I97TDV+q>ol|JYHx5~N+)up+U0?-- zqH0{1C?}jZ4hn~Z!3Bg>7&x(}gkA^eu_*5{n)V9}rI!nPOr;7ArY+S{`H&0@9N%Sk zg+Ls;9W<+*ZtjcV_2MglOAkN^*XnUQ9YeT6f(JvrjyJswNl)BIWlP(Rch#>etc)C@_QzuqfPr>K5sKf&ARDefidg7!J)ra$zS4OG&RG1brGY9L>cTNu z5>$(JoZR3c9u!m6b|jqGI=FF%lg=FqbnCVI%MC7r-X=$ys9k}msBj)xie<~Rb%{dI2vh|E*CaNx5ex$0Z_ zpcsOkpvrmhxJbw7AcZ8t8;^X+71}@6q2I+bdO+6pNm|08Tll{LjpT-P4swcKTVFi^9U9Yf-!R6@g_HRfB*NL*4E_rvo*m{ zG+rsZtI?`U3(`keNZX16MNy3OfbZf3;qSXbSTIjhM5u^6x=9dlaJ3fCsH?0Ofw&ch z;QDH&gnFPTo@&z!_|btnE|J|4)d=js^QCCoH=3g!g)Sd}pdf*dmTJP7nPpdq0LOgS zk6~*eRk#+E@#tQm2R@T41dM}K2e;FA%FZ0sNH3xBd}Mn>*2su36Odf>-;k#h!}N3* zkgARvpBacB0h=~DSk$5Zb92MH(22K~+m}7W(t;v)SfVtMowhq1PhnkZ>BM{5*)$f{ zOTPqOFk-90ThkAV8)($HBf60f~&SL_wy5^lw}Z{*JuD@lcLyfojm+O=X3e z2F+7@4io6WO~!+I4oWGQ$7En}-P}QO1mr(0a2?|TCn059P|>yC9*Sh^)w(s6D5cDS z?jO(Gzl-|6aiS2c7N}9xQZ*y0%XD{`)I}HNSHAbR@k3C@h}+|+LyAAg_|>mc~YYW0^wTNoF_r&CN zxC^YQqkOu4oZ?(fYH81id!XZR0$V^f7Jt5CMj(3sq>KjyTf(!8IHS!x{T+Mmgt*Yk zH{^g5Ok*xWC<_PT&Y7QHRv=y&nIoabDiH~9KdJivb@8UOxjNJ*`OCrsVT0p!>}5&6 zY$``2x0yM%I2Tmi*WreNCxRfbrf^cXYnl9`Egi~Z5D1rN<)7${T{>5S0oC6L*6&U{ zz4yp)jaP1FpZ))sU|m5+LF9DzKeIe{aFGPo&2d@&RY4SF!)2cg0SVgbx&kfT?o+<1 z#{|oOU=x`@$^|u{5Qd`>w3={TR*ItHc~PuCy7DxRlKF{$rWU7&(@k7Fx55AMCrFL4 zNZS&U-#cM&vsB5I`mop9m_*x^-Qzf8Zvd3irPm{e`rdp^(+qh?`J%P|_x77giGcU1 zv(H#WJe86V2|ROSlfgjT1m3Q@FVLR-h*NjiaO&QRd^)bB8tV~b1GM#jP`ViIh?-1o z+JUcX=X;iY?yMT)5*IFJLn&>voQ;QvM}rC9HMCr4^XMe?naWR2)ja5P z*_cxC_gTHYm>|c~3GuBl4}7O6!HLPVE_{x31C;g~-seTEiBHWc#=kOgizrPN4?Fs_ zv%H57Qhs|k?D0;>mEuhI+nZUJ`Ot~Z05dvI=i=X$nBfRCI=!?jrCulH#M$I#HOLk< z{Ei4?%Sb=yF6|uA|DDdM)W-;;>6v|paOV&$axndg)p2YV;bk_t`^dC34-)29@~-G} z;g?9ZcA=C%&D50M8!x_&=SYDZFXxns%7VjPyC`r;7TwY=8E$2Vxuto1d~b7>*?bv3 z9U!v74-9`wC>f|`=)ZXx7g(HFmCKR^5ep)hI8g0a|EfW z_sa0($<)K@n+T=))f~KZsZaTV^V_jMZ!hu~J`m;GWV=ujT$Cl{vs~>|vC|vx^&$|r z*XK9{h)634_}<*^dclRwg6UNF6-bZ1RM%Ah3OHekmKOF_ps>*jWnMGG5zAgEz#?E_ zpDlW+*ho@CE2{z)99~ix_YpEkAe17+Q_a=wGwYZ~wIV~4h(+oZXk#Bbb3W`er;5M$ z99|7(ZYlc+qgCwUQqhj#=1jPg6(ytmhLH0|X|GIyKKjI*PG2Dc(&st3g%X; z1ow-&{js;gjyg7}y&1ttZ(U^uMw;nQqxIL7mouyMModdzzR4iCO zA`+QBnPyn1rtOsG3v+Kf(C{juj-q+azoKSH;+~*Wq75D79 zVhh2X=;6?~AeJ+H?#B%V!!B3^0p|+0E!VK!3lG!RAD3B5B>o5tdqaN-9;2R$@A|y7 z!XB&YEtkj(kZAe)zRsi0R#U)5WAw>t)0zlaluHD(jqmn#25Z5AnX#u$H2M9JjX%&65(e*kRLKE zr6eNwJTXQm5lZu=`7(lu{c2pAx9%>9TRWB7x=y9ss|uRsa=myaU4?`XcS&Y?9)APt z))IZst^j=34ZcXH@zt-Xu@(9O27^XW>MCDZhqrT*8tBPKKHjI@c(VpCaGeoi`Ci{i zjF_+Wy;ROnY@c^cfJaP&9VTyT%yNZ!o-*RO`=?bEEmZm~T{L&s_a z<7&`wGI#Rp65FFHg=IM<$NBx=ftruk^YLxE9u!%cZiRj(yEb|)bL-BoqpBtpX+f+P z7?q5BeVp`&(F*bhvuXF@E20nj^yENB-9IB9tOYXGHQ<$qqsiOULQJL%dYArw$bOH) zviO@**y?vOV_hTvi(SI=Q+|FYkNK{&1{GzAez%Z~TP%IEu6f9LF|Wj5C1Za}mJNp9 z>Tb3dEqC)i5*qX=@xD)r_qXEa($9J+HgcD4J=2O`6=5*&`pfsEUpm&pw!rn_eea^y zYIX15_{_-n-}c1gvq=WS4mQWg;aw}#=cZv`d?x454a3a3!7o4E44;b|TX^rtuV7w} z!a|$0AkhCSC*a0o1V!T4;YTicTdh3gKVHJFFRtty9WUr;9=0|wo}FB;pNu_`IYUe? z55OglfL{V`wv)d8jkHAUdk^gH+V%L_-h0O}Uao&h@`2V>Dft<={F1TuPEPWesqqy6 zTvyk2mUq`y*H*IQ0J6DgVY5BEJh!seE5vrPw=wJMv99`ZSVDNOwhBADxHvn1_O0@; z{PT*J&y2?NtJ&S1yyBD5g-JN#;Z+~{XmoVOOn(J%+#j8uZee>K@B=V*9l)qJC$~U- zz|IMPdH*=up6s0-eX9jz{43!;qk^0hk3`RoF8(ggF940gBHUwgGFU^M+dY8PZqGbZ zxZOV4C@H=@Isuvy{@$ESa&c}0ICpk;*3k;c;P1_h1K@miWgfBZ>46az9^v5_d%z6@ z?DxhNj;>Dj{_YO&3U80C-7c=LEdArUz;Ujy^GA#GBfP?A(-?rupRG&-_|M2S7XG!HlM7_(_|gFY&R0$@uxA%b(=zE#f+nBz zU0lqsAUIeK##?ifgVrn<4))MJ$#K~6lM{Zm0SdLHwzz?Z9`z4}N7^t;*wix%c)@fK zX1w)wWqR{semfA=huxe{Z#+Ua?zQbM8O!vIubtEmoph9rtI+gtlU&uJdIZ&W^ICgY zxG@$%*g)i%1jVMa*>>)`-SW7r;<%IT>G^HM#ga38KAC^SS!+Id4YP+nGjyFVFJ4=^ z*j>7~1+K^J{Px~1K+b_Nhojkf0DkWQn0<2oUta(KwgGAn)Di%^9mv-MwE{p#z}Y{t ze|z>1!v71}&#s*<&I3gK7U2E>BL}!Ru*$%21<+Uk)D2wSAg+LYi}QPv|8n$4lS2S7 z|2K!RI1Zq40Gng?Zh(OREU@t(e!l@g{~i$02O1Bs0JR573wEy-=K}#G~@`eA)+At zmnd^(@(3bLGDj`EujZW@|1XfAB4{#D`}r5sb59!Yf(~>vzl9mY#Y}C*RFzq0468c%*UEo;2tn zbK;q$!Ax<7#i1tgQ7?qzCy$!o<$)w3$TJoskuFKP3E09TwgeUt;ov}FfpI(ailAvb~(Fw9c zX~YtXjT|q3wgG{BjYTw!fY9&EoCU9)+V&mt4-m*N?H^ph#KK|3^;8Jnrb!(6$)mp-&~0meegz!ROJS#04g=1;=H2?f+-V`OH!{Q zmFeu()YhWlN@Dm{S|Pr8Y==)DD|0M|n5x>8t*0A!f>rUn`o+TOXbN0IiFjeb3PiMK z{p&fdJ!MPMN_`A4G$E5Db%*R)m{|ywIXXzy^gW&ZX5n(TP8Yd_uq&4QF-KAe%;_R* z^K+(+V9v{ZEzVwYM$sgEihDE)AnA1b1_hS8!T1>%cb))*Pp{MTao)vHiQIWV?pL65 zC^HCB3U8`bLHrBkvz97O^~FUj{w}<9ELF}r#6)ku{zUt^RF?J$<`L0q5%YiikB=@# zlZjUIcp*J%hy4)bY)$d`S}9z1dn~;?wOHV3nYtd+>kMb`7v?kpcp3lrr}s*qc%Ise z@|KSmOFTq;*0hdzo+GGTWJnwRx365ct~}u%h}|55%X^v+3? zQT&c!yWpfN^3hlCj}=d5w|_M-iGBM^@=o2_a4L9w6$SYk3EyrX?|hP8P5ow9o+DPT zb)dE!JY4cNmSp-H5tvxAPt`v1*k_@oQ-@Y zI`0jl;t%b8Grqgp-rh^?l=YEe`x?t+Mi(6n_f$LxIf9@v3~YD8`~)uCY?dD~Tc?d5_Ez(~WxQ0Rc0hNh~zYd8aP= zwZ5UkrpPU9K+6MjbvyDlhMm;z;7aAmBc&$@IF>3dh(YXydv?(fmZ^df$FltuKg$ok zAxy4ZuJrf4?$4VEQKe!w5 zED|Q~7`d)~7o>leO_m92enNNmw(+}eaQQEFJ=B=Sf5+xh!a*-0uOt6oIQP6*T#pwnI;n%i18m(T}6|e1u ztiRxEBHQazmE-NOx3EOcv4@jXwX-@arCcx4@16J(9t5+Y{HA}3oXKS^>+}k8V!BHk zejE0YQ_-8Wc;Ecy`F}=yfj+`Q zimhZ183P{ai+w*Z{@WopzP7^>#2>3i;_{~>f9&C%#*uG5g07ZI#Bhb$w|Kpib%p-- zszIv*8=`)1NtY85ZKSdxN9^gf?VIIS;J({$5l!G{X5gd8LFZ53-7%wlV-`6786hVD zH~tI_qKAsq5p=+V=q^l`CGf#WukQ6X1SdgMjX;Dfm|oxIw84aJGss{a;c4;Vl^EKc zTQZ2!D~L5H#N;XbE+N&M0@FR(P&x0nZK9yUbqAn#{yZg=vO2U26DofZdPzvR3=i|O z(YXi>0~dxp&kXMtg#ZuFUNPwFyp!jvhu|+$UW$T3>3j_tLhoS71-u-==3%Ge5wYud zZAe%9#t0sM%S~PbH--rAgVz>(y1KGUP<*Xm-_me04hp*s!%Up@8^u#OKvMgY19a?~ zku)Mg$6NRgUkVA{K*i9tL%&_bpf+PRQUt;6&^0*W42q(;G@eNy<(2K}V3llPt*MW;_;_f`ZT?mM`KLB`FkKp;aW*&KB_#7jowq z@_CX(5F-*e6M+G8Lmx5&f{>0U;@%;lmq-|6(m@oGY({?Sf^uz%VikkDGn2ID4OxUG z-<3+f>jPo)NycVEOhEDH7qHwTxf$R|ttbV*LCOMuq9iUlMWQL?6`XJlll_89R$Pz^bL%M}j`o=+; zjTG=f(})ZpouWi=##HC;ax)|lma_DNK0Fpt0(B&T6=OPVG@~LagQb9S(hTCsh_rKs zSfb?J4KgD86J}uPex#Wj2N|hNF}w(5Rw8L)bW@9vmmVy{dpX{>BoY#z0QfRzaK{>k&IW?EbhweE&b_wz@ zd|k6_O1xaO6xHY@c(^Q~k1-d&Ft?_U_P07=H!kbr3O^xsD+5=M%@LdpMo^_s9ptSE zBwUF?dyu(xq;mBA&=tn~W&X^~vOMV>Hog=`dz&cINg( zLu5(QsqKrX&Ex3`6RAg&M>z7d2J%e~z^{CY-ptDB$K>pY5^TWmD>sWAn~Tqz3N)X5 ze63!hgn|lZe{mqA^2wH^_o2MX`ZyI7V~vBCoOu_%A^SqhS$2mC5xby8Bn2Z#h|ZZo zCzBbLPS=!F2ZLtHz$#A)O6IG<1D<;8poU#gh$ zj~OfS2Pzh7N_It|wlO)KFiP|2;w0ZYwNcsfsIo#INRmLsw0Hah8ZXE`x3hrH)1GE# zGiJ?|(ga!Avjst5(L`^bRnFIx%*}osAp2%&NV94miv_@a*|%LmstSAAfy)?9B!uWH zJISD=?CQ?tR?J%|qAS>^9v{dRjKFi?3(im$Zzl$9getrwX!0#F6C>&@_|{WKc_m6g zE1g<)7e(NZ%NC1jo~5~~@x9URJ3r2$h@(Z$r8#R6Mu0GW_Ssd6=6n{ix|G_J1rgYh zlfKTBy{?&NqERxcU5l=jyq44O%Y5!v{F0nT+o3i$yViL-W>^aN=0VJ^X{#8RSz!4r z7)TUT&4zoOr+U4OQJr~GJq}gBHdF7CQ&TTczi3!*yF=?;(J<5BK)NIA_XK9yLf9`# z_l7aQ6M-U>M>cjdH7#y8A~hOLs`duz*aRCArJ4dXO3O54 zKg~jln6qaNa;-7nbOmcG$Qx(W>)|aGG0e@iezlDiE$VJn$T}#$S zCj5@<8v2|&0~&egmbzJR)hdpos=lJGv$;hPQT^lRVC$ko=`2&5sz%#1bIZNpHp_~( z_3KtQ_1cw|tWMBRltY`=T+1%1b?W-(1v%B#b+&|bqh)(@qA8-0~eX2gm419P-m44G%wb?e)M6n9P?>}ggl=(7#2|T)Oik+jW zl1zDc-Ihq!aFJEgK0h?h_+>_jrd#Iw>z$upZ=h=+sx{Q`-0sj~ZZ?q{rJOkoLB~AI zQJ6TPHd1ww0wu3*EQ{?lqc|EG#MTg=IsTFY>1$f+X!B?X)n%vy8fYZgFAJ=ufB}8P zkjWBko|8v-M~}n)CyZ}0N*6H7@EnpEMQj%-pWO?oCA7%4*14e>J8*qjCP{Ec5c#zI z^$j=doW^R8gJKA$`&%O5H$w8`?+$Vf8! zsrMpN5~BET|3+SLOqoBRo$&gF(_0$D-OT<{-sO3X{%mF?X^Xnps00D~k_~vIlrVNNBBzr&teI3pI^H&M61HZ2b{p@0q_S;|Mi&tIzRMxR+GjEp9)HKfX5{oa8?jp(g5L~gudun z#4RmOi2ON$OoGk-q%0_3u|l7SLPYibk7Yrp0e{rOCLg~uDxeL_`7xVJ=y=(nXYZs8 z`vwIEgCo?IS!n1RPO1qd7*0WI z>P4n%D~tND&1lvl9{CATOjvduO6#XA|)R`G-9(=yu2aJ9&#$|ZU6Z#{T3&P%8XP+a4TeBzV(4kZR^Po>lYvUpd&@tu zlrpY1f1rWOBb(BudKGO`Pg3_vzYx8Hf7pK!a5w@!zNdS7`~IBG*!+#vP!QNg%i%fk z{uu|J0f^86wDci-MQYq&l+~XdgO?G%N#;!1wS;%)<)MZ3;gs{iitK!CUStoSdDG*g zK>b5z1a41}DEyC6{R$-&9u)^jOcK1MMR?%q`I)E3rVS+@3g0Ktm8J2m8w4QqF81fmuaXsI8vs05{15>4F zD%mLtw}q!p&cO{YVR$V2j<U8pT*-1vtNE09K|wwH$NT7;}`7e7V%e@VO-C%jZe+mn#RAOlm!t=N1gMKxUm%wX~At1Pv;beuZDpl+pkyBi(oJaYCv+-i=*s? zPM(5b%NSCbnsJWYXQ;R4oX&nKC9Nr!_~Si6^eB#FHZ4vMAji0c7EpA7E}0? zn748S)q&SG^gxb$=F}kv{^Q^Rr+3MtG?X>r#0IcKm!zqKX8p zsLwxbh8vv}J7+rAu@dvwUI)wFiB(batw-za+4nVt&93}FP_K0NZpfJ2Bbywwlt5;@3 z7VoZ0O0V^sW6Q`bQ{7aU!UtipPb%FzZb}ip z2OLDCL05;*au}GG!Nhw0WluktI+mzE7<_oFi5${O;q)dzkYU*=!$xgJq^eUBUdS94 z+lArX*r!n`e+Ju3d%?PKW=-)44!$N1n4{0p=<|ZDxh7Mm3SdD2rPFce_tT*!5^F$-Z?G+!L>03$jNc^^# zQn!c|NmfVnOoajeyy!aCOnA1Mu!p4Pl7&68H3q`?=f?lb4u>Z;Oavs=?sC4>`>)r~ zpkc!6ZJ_+lB&S*@YrRPbxx|H;`{G1oC`)}ogQ;hEcf;Elq58&h6P(HBN0nYi)#+zc zbUte#LO*y(Qu7z^EmWxoB&T96(|v4^4+1woBCL|VGpzFbbRR=pJS1&5BaNKZEVEN| zeYc_goMa<0D;>ycLcu6E859IdiPbb#rVT(+zA{zD7o5 z7H0U+UOTsD@NPujn>_PdvzBB~+%b*+!i;UD*1NH2`+a+T7*gi?g`y+2jq$Ksd@6TT z1(CF6lk3PqFT3FI&44$DFIS3>;OoZX#rm*i#)77rJiCp@{K5oZ&b{PmUrxV7UO&&3 z*q^X5_1}E~mtm)*cS-RB@3%TEi#@*e-8~N-Cl1bH|G`x7yj135@awNz|C68Ojr98& zQ=EB+kaORQlbr_nhiWr=Z2_bCLGppyX}=K8=UirZ;F=$Mhx=|j`ozQ_5~?dkAdEjW za7DxaB(XjI9ggD|mV3K@V~AWkJogBE&9J$aH+5LKR?xFI=Bsjd!EEfXKag zDvBS+x<=CeDC*tQWRXstwAF%}a(WfXp6d7!(N)G#{_pqVEXf@;KM}8AsFEc+`Hhft zknZz;w=NxJTxblXb1&_}Q-L8W30aZaSTGI#xT4_H>z)bn@7h>)w6+NyQ8-jU(zxL9_o& zyaS2TCmKlEi}>b;HK)TRSnm#o?-DxEamS^vC+Pp6s&(AqTm-ska~)gtHz?k12P9d? zxa6z^EBe*vR}crIUk@i$(jFmFc;hoV+3F^%n%`8p)Ug>1&uR&BuR<55El!V`^}2Xt z{8p}Px6pRKalYHg&(WWSKZQI(^_Z?!8+Y!Q3tbzKlO7Q_TWxS^Z?cNRu)<3`^1&Uy5o(C5u$MYgbx4|L$GD_TRfGy^1*|+*!}x z@# z6MK#_+FO)}{6)KTpSF%%!^AJKy79*{|Ji9p8jct7ekgk$V6RhRINs&UOh1!j7w6oZHCgcC zD}==! z#_P|t2}y;WBBc>t<9kaLEh4Ic$)RMgU|ubps?L{L*YmEL=gkWN`*rPe6L}vWb6gtW z2}(l$;J_PMZ8;13p{D6etzFvJc3zDxcN%@wQt|QFEdURF5#BnABBKAS+Ea&6}BSm_7rn)p$ku@q<;NfKhBR7 z-BjYc8jN3jP|PQbd`phUo73iQ%ObV?>ORlJ*T4^{@;@AmHhl3e4NjXv7FI2OZUheQ zb^Xl>UA5nroYTAVeAW}N=aJvI(4XK%y8Utg!!O^&edvXJv;RTBeg9vo2^aK&frsSh z*Q=cO75iTXB9_v;uGhKb9}d6HJE&tkcKkuA_Wydl2=jF6gz**;G)8wRG#swXmfTLsWt{Ch7-7%2f6ffcLr+TH&hE&2UmO2Ecd;3G``>ca&;Nc!BK{+P zeB~#JYhedbz;{>W@rBV>QgDJeiC70|qFQ!hfAr@VbY~9yqzq0TCqQu{4KZe6pKgIZ z6riAJhcUI^X+@JEd1)Nccy}ZD;1U^!)`WD3A%#eAJN-Oggea86Sd<tMaq)T+N4Yjd^7T?&@#UPqj|Ec*wieg}b}9zWxnmjUmaPT4SL>oOJ%2(NG=} z=Ds-tiq+TFw@*&bb~i)(S3fu&t*k9uzddUFz8Mv^Xm15%k+C+$lYj`~|6}Sc!=ifQ zc5O-;X6P1>5KxqoMk#4&X%P^S5~NdS=>X=^VOyzyU@W5Rh(}ckzFo{qFsR z1CCkip0(D@7tZs(uHV`2lBxbbz(cO0HvHUyfHN?M9mpcDYATM2@SyCik9T(uYb&mn zmzQ2^0FHIl%;;=p1_%@X_H_T7lYJL0-b4Wr^Sg=fkiWaDfcGpbKxZVczSfwM6`y}D z1{nAyHR=80Y`{bxU7Z0^c24}s>F5X$MBWF6zTb^(-v!d)Q{qqW;>@eR@5<1Dbn?{9 zPGa;K(25Q?)^#MHyr+ep?yMpJmwE+6nV0Ue<3Nr4>JI7%7<@n0yOWtc^aR2Ql<%Ld z-{qR&q$&poaJY#33A_Rj(^GsZ3)a>n_nG^Zq)|YFJRkEed}Ks`biKQ?SAYi)-YwQD zBYXm5-4lpZ)S0yfvO5|9gH0)ccS~Bw%(Rb^n~+P=6Bmf1lHi@dnu|bpz+z7zd#_3= z7L<74Nc3(?#nB8JvL0xL_K&_wj$aCd9`UFw%%OMv-Iq+D2qW9M$7~nyh4oLe``rhd z?&0VP*ycj-jJ!4wVxRb=eYSA1fJ9C>L1*{`c9Wr-_E3bi_M9~QWFNV|iAaC>v- zuYoxD((YXf{0P|MaI&+$3+$mdTHOT{HXy};Mgzcx16vu6fHeO)1a%iV-?;&{8vIY* z9EkPk1WUu#Vc>vp^#9O%(pWb@qTgC(?@qVLvf($I@mG!Y3qQ zeDZ(m?9~l8Yi+pjf}4=9g6}ckKd1#dp2Oz8|DQVh4uuGo=3E#p77^I#f>66FC=7%x zeS-JDb@mSUYNP>>XlrqcT}tiu^;krcpAZWIK6QWQYu*j#$QT4eX?t-97k-pCLRZ); z9KBtFe;jVWlODbO;t~qN;!--#dH%U8nu#Rc;n!H(Pp?)^3u+8I``0V?2M=;;F2>s1 zuFnrtADq#4N}oQYnb@jTT|is{tmWRkqaVaDjfFjc6Mgte|(4*61uO&Vy+=N|t)1 zJ9{p{A^1`@w1?s`4;z$}xE?u*BhUm$8Y7!hF6ce%_+B!u-Dyp^QE#_Sswd2X(eb7~ zwl}key6||ha2WBx-PAN9SUqH98dy}>P<*};hu#WR(ih75$N~^+4HQ=)wff>0zz&)U}BnuGNG7yqZFg%H>byT z(yH`)g-Gj5nOhF#Mp>4iMU#{9BzJv=K<3wFoP&`&8!Zj`g{#YW1fxFN+Kr|3X)Y)- z@uc7?JWNfiY|0F#&&pT{e`cN;zB%) z<)rmx4O?tBsvg4sygAQ|Y55{tCBq|YNT9w@_1wDj@x2n05AZqXre~#KA|+y7STw}W zXzu&EiY$&}r}3z-0Z=U&Y8yZiZDE#QQzEmgzL9I>Uk1*5_m9u$D>AqXvw4cQ4*%%% zmpx{6b)&IkuTn(Z0e6j=dsCv!u0J;CIf&QW3hgAM!>d7c-Gnv11RBU= zd?R``m74derb`#??(Jlie?K>rPgNfwyVLn=Ld8bbj&btK&t$QQ@pX-Al<0%b`u089 z^P*_IF8T!K1Z;~BEp1hLdkInwJ{#`7S;MC%6eRy1@8=MNmzCcqR^*Hu;HwLX`QlZh z0F>EJ`WaKiEwInS|9bu%l;uvM{+{;rd-?!kx$C~cFyHSZoVJ@eh`$)7i;b-=J7^aw z`SxtY)}Rh2U}vd|+hPowS|_ep5$I#!F}TlJ>hMS^MpnvXWF5^XKw23`fOE=N*rpuF zI=apND+q^LTS)+6X5z(cGEM}sF8%Vz1d4-|KV3t6ED{LD!;f2Hmv|2=`+5Dwt@mm^ z=axT+J@L=I9O`V^!Y=YuvRxaJMdr@%GlfnGecZg)_n5`Q>Ka*o+On{jXvJf( zxm_a!oVpuXn4GS-OeRn2m5Fb=Of6y8tISR~gvnUZ)C=#}X1GfeXT{baet9&w(@6ey zy45wmbT)!Anu`b`^G|xLEt6+9P5mT}f9(`o3#hby1t)ye@p%-~xQSV98k!_Q`Du8r z;;=i!&Wjxpli;lpzil3ybqLI1^+Z1CaDL)=3yS`GgT}q}fvaq+xlbbsF9^ zyLYL3Irw$o3)JfT3d^lMf99{!y;kJku`|_To?#{*4^++B zlB;jliK;L2T-#R=3T0UePknz9T--14fNyHWUF|jKvrUN0xtPAalw_HJVKJ^aY1*;2 zFJm~)e{QuQKZE=O2!9pz{>|xqmvt@v2y(fpf-Uk`at!UJ#f01n#a#4_2biR%$x2O-d3q?T3RGML^wcOgaZ2V2 z7`t2&>In}ZYYJGY30s{AbAX_sUbbNb;$L=!!_4Tz?cvZ>D0wtI93OKKjw^t5G7+|V z01ZzM4GM?+!Tkak0EKx+yitMrEr8%q((6x=7oP&kN+L%mNQ;|5#{wjEpP(@MNLg{v z;6bQ>c#vxe85|nqVHCxu0>wEbujT=lr$?9ZfD4;KzVSqJdqWQ(0wm2U!LQ*_zqX<} z;h_`ZfxQ=?VQt)JHKf3x^G&1JCE2JI`WSrim|2yOpW(sNK`}tJ^lmuxI6e-Y9?fVO z`&~Q=%Qh|mPKJ?BvuK> zSi~N9Q*4Tpa;riTShhpxh{6anWa{D*+0rBQN}_lVL$9%t-e6Q>dg7lyjYwkQNdh-h zif$+ImLy55CVSgLH|Uc21d~j=|=z}=zVi@S7wHTlx zs^Am2^odG}fhyEkB5BT+;>{w2-ZE)iCE5Bi6~{7!i5C*L_bJFh0(uRLei{($Qkv$& z8&^i3iV#o5GD;2ImOcqjR8dWUPmr4W#54L(d@znx^G;#BNSll&MQGzb&d7jMWnd4c zGa6;2WhAiGX0Vr%eU*S3G{@wrW~OJvd%4i=v1ND?L5~l}Z;UeeBPh(b!F1`srWMe# zQ5LpsBt%I&bHR-^Cp|NX2>KTqOL>^iUYkMJ1e(E$9>Wl2@6{wx+Xl67Ct;_5t(8b@ zHl|!Hg&=uzU=pC;49|Nf(zdsgniet#Bq$F{$;LX#{?>dGSIxN5PF)lxg=58kyG%Zw zAnk#{!t631uaQ23rEf5hHG;{ABGZ<7VB{uQ5DLj$HpV!mfLuo6OdylHpCNP8nTt;x zNn{(j`zfH;E*C2@*i8jQRg?P>o!+-7jhWA#Ta0mS|kWNk8)zPRbU(ku2ze zBo)=$#hEP>Ih)YB?xd9&7rl-w?#?g9;fepeQ$&rqq6ttd_G~Gzjfk-?E5x_`#_e1D zp^S3jqQsgQI#@$G##TBUR3hvfK@eVQ<4gTjviKWgW}aHv(7Q5YzUWeuoN{~WO1_eL zUTCgl8Ns5ofe{#?UHZefw8^9-i2;g)4fsEBsnw8#7C1%BV-L z$|fZ%yCh3ZTxcVG%EHsjb~`IKhG>3CmSE9Wtt?3g*jF^9M~Iivjg{r#hLr^Kp?f_2@f}6jZ=8*Ho}>+@x;sDo>p0 zJHKDp)2woCsahU~Iz=WK3BUS4m8?l9x!R*z4fQ(IVAUK|LxXR%zC**%Rh=iL#_4Jz36H+)ddD49_<2#B1oAwnFwV)5`>80{7$UnPnov0JKjNjsei{+hXHjk4CNp;ipC_4!Yksq3~YjB=YyKDncl<`o+LZVh(B_ zJePtrowIvg5CgAvH9a1Ky_oTQqWhefb!jk%1Ci1LTlH^jPC+eftP|fB))dl{-osIyPN5H< zY}TxwF>G{+*$pw$D||A#=0Cc4<03mCZ~oX$+0bJjG0I0hK5<|#r95urIkrWuV9xyU zs>011F+P1h&hM_}>o}kiW@7%@PpDvmlHG&6?K5~!{yg}dq8P*&x6QR9#Du|Pl1N5p zOxazcbL2Q0n+xA*fO(ShA1MAYcqH5N5ysHt(WnzYivk0S8!gww=?}L}80nI-k$9@Y zt21yiVub1Z&CbNkt2bDNW}463XUMVfa6;WR_GWglX8&@|K6M{Ua3r_lCzFkLy)Q#% zTuF{59oPD8q{0I6T(^MZtj##I$&3GLl7yN)lK4x?{ZqG&p<`}kO0diSnLk*gqY25>3FW7jE5ExIl z$`^dK!MKz0#FMR)dY1nKSN=2M!(XntN6J&V)G@FmdT#;pr?($Bz~JF4?5cV1+?6>^ zuHn37;D55*&_7>o`{SGd6>`i=*mQlRo}n&Anbc` zuzAaQ@80Z%$=#JL#aUdJVH+|}a<6-*GApZIauG^em9(Td{Cx`*p5z}q#z#K?s_%=6 zky9wtd8Ca6>0TM*mrrA za$b7|RecjF18cN~8_ez-k!Rq_fsJg(H~1;QH{6(L9xrO%s^wsWM$}TNT@&^g-2P@I zaA3`t78D@!dq@9wVuioSs;+MAudQUA;3DHFFAE&VzY&JdWcRjyL&)B@7XNu0o(xW_IB9_C1uk5tWdx|KHd~e_0 zeeLQ+tbsjLOmV<1QY6pI7=jD!;>#*~6{fojw}_>8Jh$;|j`>wIA&L zY7bj~zK=5B-~6(V&e>ll-`^eE*AM`4#FGc|f{Aayr2c;iD`bVkLzZMgSm?dos(qXn z2YAl=dt>`EvSb>azP2CcKl*4GgAZ^y(Xo%K)Uvj#y4B`4Lajfuu5TBgU$zY+(b z=bn&r0{D$t#s%o)8~bA9F-AKy$M|ZB6&llYzSJR?#qbX~9`E$6tF`0n0;}BCx7!_7 zvOR4~59qM>MarY6m0mb%K2`{rg{n;^X63QR_dM&i{(`zZ39((EB;up;B9*Em);lQ#t;*lnd zX8VjKYsg(Yw*q*W2u%pWN z+Aqz$nVkB?^M9XjE>FjEoO%}tcQt~l%dkTJ6tm^DKr(Hc|1r8B$Ptd3#C`om%sf$s z!%;W#aAh~@K;f?0zF<2up|}m}DQAtWy9q+OiyW5;km(K;30+}A)Y>nzYO;P0Tmrpr zN)Mt$TszpArY2?YN9pl1@C2Dn^l+5d9}OWAMM}PLWwjFhwCqk6QhE%?^pPdB<&-*n zGjjm)Q;;Q-{FUUN`Z|GUb?=0$_B|u(awYy!yKBqqP3gig(&z5cRiCq6Hnm2D9=YqP zJ=)_Lw9G8k)_Pf8w#!Q1HZ`TItN!dYJD>1MyKv-@-rm#KHHmum!@vr)=>E#QHtO%ok3|JXMiBdQek%6&D;qT2yRC=#EVhLylP0di z_XG!RE;7Q@-!}ex_S4pcgtk8nOZeQ}pG7e(=S$$S%W{7nHl4oZ?`+Yx!BpJNzrHkh zq^&eh2(p>k(fqhr-*Wu;p^}<4)cf09ce%55qPpm%wVxo6!}a}KH}S3oMnm{M)8WUW zb*dZ0CWAgr>WjEdpkIrRZC=FOCEB%t8TQT8{EK(-XY2NgcFbkjk1P9%x;aK&mxQyH zDWj~j#g)0H1YcC;w1MAVg)s4nL(?SbvfcMLB$?047U%r_*001qbL!mYRAO?H4mD~p zwxZ8<3@eM}(SUQL`MVB1YP@kB;lQBxI;F%Qt_R(gKvv*4{5OaVFNii9<3wEOnyZ=~K|Xx_BuPxcSkF^Bq&;yMB@WNnwY_c}#mH zEaF2tap4)UnQWfQvfTty8tL=*$#~PZ^#$Uiq+|R_64C-$bQ3jI3wr2%21TE3Cdg!1 zKb)M(dOu5%l<%(lt|cJaMsX^s+>DrqMpexy_4|`z$1px)ANBmEsl-|c>V36FM6}5i zNm`F|Gii8`4 z=rEP89Erx%9xA;+AEtrf?6i;-bRK0L{Pn*0rKkBxkzw1P_fHLn%BRoz4cm_k|N8ur z8Vj+lw7vfA4EcBctILwi^ZbpI{C9i{yoW|zB+n0^M7w>zMZCMHiav#Caj&7CUqnr3 z#D&P*Sb{lFTI6#Fq1RJuU?7N#Ma!_IhFGR*^zIWb5*)Q=Zl%-u-Y*5&JpAHzGj^ZA z7`}d4s~ZL+ap~xc3sr26B2ykub1O^qYB`l8SMFNI>^=9ov5pWi?jH%rHkFGgDVvB3ORBBhphwSjjzx< zOXveQ1R1~Id9-t}gB&^9zd#|7SG(xjUG)0;#X4el2Z4ZPLf1DhYW86@`^c*$>04gDtdkOVsq&N zHYB@`xPa};qJaxqy|_55fjyUnpbu(})`2eKn|)v;@|{rv1R+qGeDl9$(ZFP5z)k_7 zOdvUVivoPm84%k2PX-+U!B?R1_zbnb4spN!z zD8joMWuS2R40Q!GbKhk^Q9x++E?5gW+Fd^a0-?J=AQY%%J_DQ>a1J0RfkT1bWx$gC zr>u5>_W;fZ4mi7uc&-Bl&wvmE!l$c1J@XA9#DH$^tE*i=djd{t9k_^{ySC$)EB7D22|P!3NKc?l99ZJyu9+H0sIH%^111zmy#fax0ZRZ+4gt8evn#;m0T%~6ML?|r&*RRt z0!9^(r$81M(62zD^brt_1%k47D*%yKpagms0tmvRJ0AyxT6Y2C22@c4CFi%dfb-iu zy1fgp0)lXV9rzRwM?h=$I&cR--1aVIyAMb@;4C0tyAL#m11=A^Ce#sNaDk5xFnWO3 zyWKszz0-MsecayxO2c=704|`WuYhF%8Tnt?_L=PdomV`%d%qJv@&S2ez!3uV>41;~ z^dlf4&w%5Ape^u_f!_g}2$YlqUzAPMIv@*y>)20YALXEdz`p%YaJDw@|o1vLC z6#?yhwGh5fWwYhlNr{d_9z3cQy5)f^ri~K6y5Il&;iysX{XX$= zccU{Tw*ykD3XtI%MSCdK!yhDq)$daLu4!Gks$Abo9SMCP?`y8J8BKjer!#V~wlVN_ z;CrE{g8_Scm6gMfcLX!vmKzJvt1QKhe^*)@f*8poMK?!k-<(#y9tN#67?0+RWijqb z1k8Nbqn%&$g8fByU1RQRwcmIje3de_F+DJYoJ38RzF_hD$C`T$>kRm_D%A=(#>xyc z_svBUMB41NJ=FKNeO(+agrU~cV9)MjkB89P@R$Ro4#n)DIDK6iZwpj=ErN~%1Sd?Y z^qVHam^|s(qJPm85PeY4FEV1M`s!`qfxGe{EQ)xNK0KP4(T?K-3N5x|#eHQvZGiU@ zQWz`?^$2B8H1pi%3d8l_wiLwS6{MxtSBucjviPsT!eLcwhZCg3!6l) zubB`2EpBFA?F}rZdUBVcy}d)f59hzn8RUlHy}AOub?t6K7e#RQW;|~_I5MHwSAEZ0 zh|%C97w8P9k4(t!$6OT_XLAi0mg;;}gV@<`NvE@lS9SCKsS(0=)n=n1e>hgDw@r-B zXyco<;>n~|+-+Fsx7>ZAuuI#x!s7c_04uKfeu-@-3Z5qVr0NRw+1HUjaon>ufj zC-1jMIx&TRS??_hRzIS}Gf2%f@&nie9^LM{D;myIptjf2cg}fRzeU>u%Yihjse|;dX9zFi z8HQ!POn-`JYGBL}`wEmm9PAB)JRVMkX~gJj{DKhdi|5}9;Lv1$|DZj2J=)>oVw0GP zQ{uP3iFtAaNaq+75@tWvyg`_tm+=Vl8bQ7NB|Y}4ysVns`%m?NxsYM~at?1^%k-#U zXS*KtH)$H$ztV|4ho@DgdB?r}-QyovElyr)d~-Mzc~d%ax|H^I_0y0KNV57!^ws;P zJjyT51io=pLuRH5b_<$ zO+vd9b4|_ABIHX+&n-mqT~H`lUx`;LnI{G1`WsXdmpX3}>v`^fwBv>-v80?D z+NqIs>t@6r6)HxQYL)XSClKS6U?xg+SyXlWPuxq=6z%0J89?sxDJ4#*0)0@6e)0pn z6vH-7c@5vh7Y5HN^!@VXpd?zZc z0Q!m->}-D|WS_!WCyDwdFyuYS$7~Da(49Y=1Bdsj+$JrXiIf_yX9wY>EM>z_hg~= zaLM}Z)1T~JPERu<$ZULGUC+*aakpctkpJ+a4n|be7sx_|hCr`>Y^OexXQ|k;G!{T#j4^z0xZH?>jzPKl;&dh#2M=Fm&$-P>&JVBh=1 zC7<1S+RM|I;ConTZMMdQA#fTfW;*nJAr(vWR;;^i`0r=N?B0dVkHZRM+L1vfYPg<% zgYskCPIj14zF#DmA#dDS@BM2(<&+$7yFK_g;WoXz`e+(bOzs{6G2VP~R@M8SXh7XG znoSGz=Vf7)YuSM3Zr{w+B1z&|c~#r88R&ZX%@?PJO}BmZ6Uk-u*y*<8>}gkmR@n>S zAK*W2Y@fo4el?m4^n-54;|;8&EAIQ~q#n)h^$!njJYF6Cvs9hACH;%wi;mfcFOvDy zo&m2qjv$V=ke!CA;y(d?zR?e}PwEEzmSbYIo$m{uSHG0mU12s%7DgQE-48!>h`7o8 z-gM6WpenRCL){Cqac14kx5ih-^E#4yB`qM@n=qmd=qE%77puB zp=x~q{!RIyp9dT)OJ?2u@E2~x@B-E71!x@3KWWQ4lOBDL5Tn@j=p_~@VZqa1B@ZJ@ zqESthn}npsZcl!NgX1ow{=%sa#p8AeMMzxYc9Y_+#3^TBqz4;9uY|)t%SYlY(r`j_ z;t5oxU*yNfEX4DC7sJnxq8emqw@rAVOF@{=Pe>#J_`unw`1?KyR1}GfM8aG?i8L9B zb-0NkND`W<#HSbqLN%-;-5?4fqA)s3nwTjO)+vTac6yzoq{l8omOZR5^pYu(=v92^ z)QIBbh-f_1na!rfbFt_b1qD=%Q+Oc>5B#hc{t*hZ;*fV9a7t5BMew9Plmk3?>cmAd zV_vGGs?>9$G@e{qk91}fIQ_$=5Pe=)XU${IX?o|uG}c^N&z^)i91+$Y{&-{FqONpb z7Yb*g@RN(=Io%B0+VpgWG@4wNjNCAMx#YP#&^$QPQX=!SDuvnsU3NxhqA>*QFi23< zoK|C(LM52hm;^3U1vfWmwGC3t2BdU{%fwE&W%hL^VQ{{j7)tXDZx2J$DR3tXDHXrn4w!Jm;QkSof_ZhdThRNLTW<( zlT3DL-`pnoZ~8=O50Alvmdql$(TUrvKJrDP-cpgn9j5{zr9oA(_ zg1C2_4R$eVz8TLl%OGRk43%me)h+R9#A!P0?3R+zMDFDrgT)w&FyWR0CPtbiIZi?~ zF-pm&y14NlGAp#%IY;;^dT}d#I4VyE%k>1o(8;_p6L1v=xt~?`vrMqOPyRYvm78$J zZ{I4-uB>fFS(?E-@eI)e6NV$-Z$N8xMr4ViWEEzDGci9012L(l!==f}kjxayxpyr| zSY8v0evZRb7W?jrf<-RXqtuouBDQ52%mHmiUKF?A_s=ElVw6JIL14D)?*b&>Nt>g^ zRf0+}T(5?yNhPlprI+iTU)RYp)yqrOD=ybbGLb$}R0_BUZL>31Dv)0c@pu`kD&(&D zA}lX9*f6rbAsjOEYF^ae=+7II;RfrU%H~YLPs1~|UlWz|lJ5#wyk~0km{IKIvLYr7 zI=fUav3{#ZqRV^MaKGfoRzoA-LL*+`J7`p(RfNgHYqKburZ?`I5e^WcMW?M``}inT zYIXlwkLLQ+W~+wg`46vp?=_Zx2>9}$aotmwNz&I1uSG{6;>qs$F@Pkis$8e$(a#4( zUR3CW#NTfo_AA#!S-nbr>t*WQmX+ASWZEUw*rRUIC)FHWoIGp_9#vN!Cuz&!ZX5jb zbM>X2DrUYhreDz;`RQ~=1$o^Rziiw4%qf{94Sn6*vuvvazSrGox?wEh`mY|g5Csf0{R~{J*SGsKa1R^) zW3z)5qXZ{@+_{w29`P71eWnQi6Bt_IuT47m*3r3UuKg*gQQD1fMyts^jW5pn9Xi^B zFh}^IsU754%7psVJ7yPN`_k?e>F@>Hu=OsiGP=u+HaMwa_|@{;pyaka*`M8J`7^Ia z#{EWYhoQOI`l8Rw6!Cxd_VqNUj#!o}n&A&T=lV%+Wc0kE7eU%k=s09D&?eB@iSX~< zdhD9_4CLg{xK27c`51h2JtjjpzEd$uoHhQz(d!11-I>ZfdeTQ8K-$028N~T|p!kCc zFxnm5=5RbmK*%yk9HUP@`jc{H^8Uy1BSj~=w!vMzPQ2R5{qsq_l}Qaj)mZhZrFsp< z(fWMM&nX~HE;UJzSu~FOUe8@)deMJczH&;UZ5o^G_4Bs=6T@kRl^LqfwkXdo`-jTf z!Js2Z8U=UytO;4b_xA((ThoJ^O0Pf9lGV=Ie4eA24cr*<*eQlfi;@|zK#XGM+&|8} zA)9*p3Jl}&b1ESCGOAiRK^#=0dI?^*{G<{7bs@5CA$nyYc4Z-8g}C7aWH9V^WB~Tt zoAWze$X;2@`L_s*Svb~S^k(T){;g=q|C78GVv@VERP}GETVMScYB9(*#3$GzlD%x) zXeAx6-12Xk>RgHa)%#`Sa_476I-as&*1YQL_d8LDiMChWqxSoctY?{57QP~;zdGz+ zzb(Uv^)9lk8sMpKT7YQ90>V>2jPtMV^1t+&|03gPutT=G_vY7Mvd@RFT9Q$tr~Iqu zE06)15xv)lUwE(Fg*-B-*fDm}!)fc&Ei#YPg-&V9?|H}PFKZzK zt~{8z^`IvcR#ltnH!kn1P*G3XL(E-0Jp6p5xBXYqF0q5S3EP?XHw(iyKr$P?_jgSG zm~LD3uLs8N==p6izXZefcfb`pg-<*yHU9)E?=S~!H&^}f|B578`%_H5YstS$EVmo! zw3|Jm1iu|v?!5sw`%@_W=_6KyCtpjn4cEnw9iy%7XN$v zyux|Vbm{WTgB$a~f3bWO%PS5n2a1#Z*Y6LYfd|TC2gENBnm@-b`42(k5X_hb-P=R$ zuZN6~cJr0PM{5UOF@M>r=cr#CX?{K8>o^kqO#2vfB*1zsNwQ!s^!8Yk_4pwL`2RLZ z{>Ev-ZpWg=4uc%*Til>70NQ=BdjVkUCKPgg9UZ@K5x>t?a)#Wz1L3fX{fTvecJH%I z?6X}VF0M|{y9a1sFyP4zdi@9h=di0KbPWo2wTiCUXG0-J0GfWgguY!x#}9SZWWoSO zy^cTt9R29#;s%9+10j%gSUd^|fb0^;6cU*!d$fbT=)8m9XNVEDPH6l-3=K!tpe$|> zy=XY>3^gJv3%%Mw*9^gqP!~047FYY|qoa%49bmbUg-+zc1o8$kQPYXMfFlnOD2q-g zEK~Mk0*1`&oEVaAnnD8L9DQ{FVDJ(2t7rhrUtCRWuA)m&$fh$S5Cj59Er7Pq z?uhCgh~8WRcz|rrZG=Po)tPbQ@0Fu9i09Z8O3xMv%yZ8zOz|(hx8Ub*B0N?|p z9pL)_lLv_ST@~aRkU9dEyK7_wm^uKg?{N4IP{(-3qwkP1Fp?2q*#L6}a6M4mcnjR$ z9n1$xH2+J(Ab>#3&MI&`K-q5qrhb=|xr@R8%Ocj-0qza~?f|v91iT-Rvbm$5%kPX0jfc^tU0`M3B)jwMW?hF{12|U7+b>PqS|Lg*w z6aEWK0i+y|7@MoW)X%%v)t${)1%N$jed%U>2{0Zf5I|7;pBxOcN)4(iXzqbY$ z+z4i%br-L-d>Ki?VIN&mb4SD#BAIzVz3Z_9h95>|y>rX|a$``Ji{wKP{ zxE4B~9g$p89%YM=2FiKLlJeS(fq0hTzGS{x?!Jh( z_V=asbS%dL6r%1+G`U%3h0)|w!pj?gkj$HM-Pemkn;L{DsM~QgGM@kG z75lD-y!WnRa^l;7(#w@YlQ$mQ@(}9wY0iVcN{6GEg6ttdzJ=wf^0(u6DVhCegIG~svwhkYRL#w(zAOi@U6ovzQ%APH+HJDb$n+I;SGtJ_Tmc0Edc zWQMyCFUp?ebf(BcxNq>Cg9rXqetfG&!B)lWj&oeXz+9G`;bHwP5npmfeDRu=z2*5O06urDe~hyORVHr zG9v$X|8>5;)=G&^q*UI+zwOLZQsoKAX9ej^vE9ReyYMM@8O<>ZkYNglXhX@g{HJ1MCZ^7-s%ufw{j}M1v-|@V!9KWJA8gy$_ARQKOtUwH>_51S~ zi7aOyPwX_qk6%2WC#LsGo9!l<)TYW@5J8MSHk;N`kg1<((B{vcHMXogos-vm)8H(r zBXzd46S0&oEA=Jq2c*lfdhf@RPt}A7gz-FP^lT+%D)>ijEA_6|N==?_#=Oh8M$=l@ z@=E4kzr47 zFHmXDx0mSRYQUf6YYki%EmKIJ^~|u2NFUc%V{UKG|6(wkSug*EVyCN-9(=jPh2hY_ zJMs6mpr<4n|8@n42u!p;-)n~9k1K~^<13N7PT(JkdUtK4j0bbhupP?sgn>do1@k&0 z4_B3Y81n=|A>?N4gt+er%s9ben5f9Z&(9Nvs>K_}7;&PE2l2j`# zYxno5?2)QuMPhoB2sc#%ud1lQ1I|(ZB7%Hg6?>tnOdFu2dhFa&)!*`KbMHG z_;i>Fxi`2<`;>uHdA&Q_aR0z2(A}(QeRAa*gW|8OgN{L$$~5Nq3Q=>cj!31 zmE6PJ(W|Z`Hq6Zc8$$$d0DVo=C4z%xj9neVEfUBiW37xi)OiwGAIrhdD{pENp^7IQ znqh@lW=GC*sVJu?v6R?jM?31_ zY>MWy!r7U1VT~o-DoUYZ^M5-J8^z}`$R{ekC_0#I5Y0J9&VD<#MyYHu&Tw!aR~?T0 zVL#8DYiB&H2KPOZJ@qATznZE}vo5!y^HKQ-m!ouh1?OJjjks!{$qziue=nG|806?l z5BW+{Y!xy9pG=*rKT)jwU}!oogK;`;!1F0(I7W^w;(OAQkUhe7$y!!F60PkZbK-MW zM?lcD(F3RawgIN50{udPqcm{0O8Pgm+>I>;t^1$qe!k)HJg>vOEO8BqnBBGaO76Pg z@s+XHIgr=g~$k48GLj8Lv@5jL`z`eeUkE}F>(+3e0!qXR+Vf$F&tl6E-+xuK&-Z^!06?_O`uY2RJbHZ{Lj)o}B zXQgb|^_lnHAhfu3*lWT?@^w%IfxsTa^s)LPv9|5hi9Sjqx#5D#cj3ClYcnO94P}O- zI|e@`$qGdk<*ueOf^QsWez}kpdqGD3n2Uw8`S}o6_377`GhHvF-k!>e3Q}2ueya5; z{iye;bPN#4;u|m0b?BYVM0;N^Bgq@9Wpzke|GlG<8azvow5gn@S6=yO<<)@rNAA5v z$bXc+&}yp3rID5Re~~0}P?Le%8ws zD`8^Hyg@xJ-Yv086A6*tsKnHs!By|)e6!^iY`LOu{`2{hV_oa-=RQ9CR{OOX<%mtO zZ{D>wIL9eu5t~fTMiX6A2SF<~R8Q^Fr&3o_ijMzm>vTMujj;0Yv6C0{unV7S)J&{O zieg@73$+S;>6xFtVq$CPXSD!XJu6!YdD5IH)`1fc=~ocNZftj5(SDZrO27Z*yzCdOhD|9HN-pyMp5fqCB*RY4wce|_}5xNJ2 ztl&E-iAl^Hy1@rrV>rN_VxpjVM~0+N4i})0CC{8yXk1F1$N~t%AyA@W9kG9@Vqytl zi?m{oFBm-tpXmyQbKrh*!Q>M|;G$84VKKJOs;|mkJE%4g4naXeX`af zI1LF(=p!?2eVP)Oxa2*Z2ZSowLDB0_kcvwUVW1AxBf9V?Q@W`4;lwd6ptgk&IXWiZ zr0Aih=#ho!v5V*lNV-sM>LZ+R@ZkZ$LU_z!O$=foX7wTlNgul|9*csld0TiYYAD)bM?61Ae^4J# z8oOt8QxZphsYbM@f=2678z<0afbT20(w8P|C)u*_y08*K61O-K!h+(^OU3j? z=bQYgPR}vux>WbJ*~-K{N0Zw!k2lRCBYwUCcEzJb!6lE)tGF~_3XY6Da@V-wF((~N zW4g+QP=sbp@oGJ0h}S4kv<^vUbI+r=r0C*>@@K{yl;*0==7iyWMs_(_l4X0-rN$}x zn0oEAmt_@_&x`DJU^{Zmvg8tXd9rFqhx=%$-`c;qObC z-*Icd3tXq&n={pW=1?c}NMEA7Zq9^AhNMdB8q@668rYf}gqIu4O%p60fwk{7yc;f<@NKZo`f;z}hmnaM?hfQf zuzUIc$JM)lGyTW!|E18up`sj;bVicO2RS9AB_Syz2}yHIlIA#aOcEu8MC6>5VVJWt zVo7UeW@ct)X3fmZh~LZS^ZgzE|EueAjmzoU^nTyZ$LoIHxBH&Tpyj#}ZzIj@`eIty zwms!O`l#5OsQ56{>919ZO{nA%RLXX1|Ah}pIt}SJ8#2NgvV0m`EsK>4%wOEdH)S?J zWaZyKE6T69_F?<0_XiqFa*8UCE4I%!ew^9)TBXrXU-t7%L(TTWx||P);-aRC9qtyp zHf~(UK?u=J8`d^xtT&59uQ!YE%PYB59JjG=(C~Dxsdlf0IVcJl4E3N|m@ljdXW6Xf z>2YeX2e-SA`97Vje~xUZ#p^)*HajLlf~DyswCqp3V-Xh?CrL4;ZjTA56E!x&KL zh|QIG!Z0`37w_pott$fcA`9Pp@p{^PL?il7{paPev2Goe5pNHEUM0~#2ygAo%r0W* zr89CW3*%d(i2@jE@D3gU?_1Q}vnIh!o;+!WQ(XnPIp3VZ6Q}7gFJEs(GYy8q{c=Kp41R>rm0Ec{PA%iNO}nk;>IIldv!Db*TAc5 z5VQ^pK{`rr7qh&GWNt;z$OX&+80Lu9=48#o>j5ltOSH&v?5UHhgIz-YBJd58T|CI1 z_WY_M=KI{$xpn^{U?>3FfLs^AZ}?ao(a9d=>Z;YXK;~4w_lui)- zXi%Mw20cEVss$1F!mxd9B*d34sl<+2b#0{INcf& z%wk_EzKcROA>}dzFbK&iiV&Yj%0&xNrBr=eoTaQFFqV{+pHGe&2#zHg26gL8FukK_ z&QaaD=>nG^oQ8yuEnp&(2b?^pRvy%N5Au_6DuV?!=Uqwe<^%4rq~IWKRvS+p0yrJ0 zNg;hn1`rDXDiB-)K-s#H5g19=4T~%5*2Z;~1h^3JPX3#E0*DeYWCHfI&Y}MGK>{Z% zpjzN9NXyYY{4e=gk4pgrYQ3ZcxINcDt^{zLDppfz-M|TqlmAA#0BrZaanQ=+D(41O z*uYBXV>YQR^K;Je!-)8?-mi|kHn+=ekvGX2;C?JH`~P=}l>X4#m5kZpc2MM{)Fyoj zjPU<7VN?gD?Tq zk^kK(GXL`-!dm~Z{O5^%O50^LNE2H3Hz!Mm8vReF$UP&Ikm&p0r4J3i#JtgRvy2zr zyCt`+|6kx!cn|rdGb-t@9ocIrPtr<4#vGEqmTKLCUYchtMWU$VCY)JP%$=Pg-B!Y7 z!TikF?OmNpM^2+(NrumzE$G^;$tj^ck5H*Qu^I`u?u(pNZLU!Z#y1gHFhu`&PCD8hV|wklC-vQd5D3Hw#P*gvYK zGWrAhr;+d0;HBorgf=Jbc<+{!5-fCkf2M@m7s^de$(b=z5*sH9RWGPrI!^rh+GXOy z$wvu#o|eDfbjTL(yX9qk(b6si)2U>#P-dH8iSwb^ml#Tx*+hFwMd~e-*_>b^t~z9! z$60n2YTadC8)^St6}-FLRq{Brx%c{KZcLdEG)B+f`})44K?k9C#SM_&_(tMFmHS<9 zNpDx&iAz#2yp|J^$$c_@+aTzjm!om!Dh6 zWfGO!S+DZQS1NAAenMZj4zo`@z!7eja{4;*N5B7rh|uRz-PMhKliz%5FT0Ee4mD|Q zK54`#_&t}g*qmwf>D(2DV`$rAOH;%N+v(3&qX~6S7QTLpx>RxdA;+O`^{pmCRHl&} zEFoxreImdBe|daOQ!oE=Ty?yf!Ok8h_!E(SPW;92A*t^Rox8f2mp`|=?`lGQ(eU&( z(?wnFX)o&}5{(YW*K8-YadJOTqXB&GgYtoypBdxI3*Yozlh9N^o-I1j-*o~?U zlA%+^x(cOU^!@MtS}|%woPIpigcWQ(amV~*z|UtHGtr$A=OJ=VgBMcrKWu&Om2xzo zkmXnYQrFKDbr2PmugNOCGwBM%Ne>$V4s_V|z_0Rf;{X6KQzFlDl<}8B<*m@g$|Le7nVIzXXdUXBy z*E>~Z5tAqW1PZc8orz;jzrZtPurj{m1-#+otoqssXR7=URJX3wgQWT#1WQxA{h~GZ zWzGssb`hx?L*A5`;gl_y^p6j4)(4NiVmS<#B{dhbP^CoE`eu&#!Cx zJG;Cgj5w8Y|I4oxC0L0;+mO^^OXn?i=up$>pQ-YQ&8yQR7J3dVSb@*+78S9x=)nW0 z9}0K7a4*@QscS#stup3wBi$=M)NFWyTP{4KA;XTdV<9Mn@_50;2<)ZXkA4l2hQ3In zaESdsmdVSja}D2?>O}3920#5^prl(`AFnOb4fc=sN((r**JLItq?h7f7`MJzTVd zB=1`=-yu>?JaYM)-`|T7YvNHN1%3y01Gxx?sMGf%=+_=Bm4t6+gmyWE$wPK_J3R2y zjh?rN61$3E;f)pHk-~e?lF-ltdOHsZ9vp#0s}df`K_aJOBKFFM?-K-zLmurrAGzgm z%w~sZHCWW~EaQueN1B-EUvfLoB<`s{7ELOS)rSXMNi?=WNuSFK+YX5_#Oxx7$2n#p zV$`7_E*O7kR?I^x;+DLu4a3g~8igK;@lTB34D&-~%Ff()atnNNSpB^-ptA0JnL zEtgcPn;34BL4Xy;>C!`URGV-10OjE53}8c;#vcJ~-hrJUUS|xfGJv zjgiGWhLP;ag_uk@zUp|azR7gPwyQ-9IuZj!%}V~ zro1mn`Kh;u4GFjjNt(kLO~Ib^-h07b?&YbCsiEH<&*-Jyihju` zd1faHcD_34mF6X$j?>+vQ-;tBd9KmpuX*;R z(^R^4NV0jzD~n67CkoS{TOT>SNkfbg{FT(wJf9j>i~A=yWayWr!5q_fHoSCG2=rHg z2Ru!`w_F)fMmM-;EG0zF&TIcEe6z^&NrNOFWQQL-g-H>@8tYO5BRB z794eXQtq~C?PrO9?}fy2?`PZGc3dq<7b|m6FLSmilXfdB*>hp5sMBSg9WT@`6cC*X z)pvZ@RxWm=+|;5Rt#e`P^}9bGl@;qFU{*IO-lvA3xx<9AGew1Gwx=_5g?jv5`ydti2=B}qkyre4M zY*Jq;nC=$cT_sw3^-rk#9Meo}($&A)eRuFDqu2`1J-23(J|)pTMP@!3#@Y#q-U#Uj z)g()E<=v$c$Dt2&s&?%4p)lR6bgGSFOY=XJTo>CZuCqfar`kdP=7HrMhjLt{!)`hV zKflT@2ZQa=-(R%XHoK_4zPZf2wr8)o-ttxb5l=!}4dbr)xtXgbagq@_NbW$5Nf1); zh<#+Yy}7~di<@gFRB9tEYOmZx`u}qqVep}xuISzW=w9gck1iEXpu#f}U$P~~WggUX zrUcqhfLglZu|0B>{{@QX;5+L&a0mu3F}YDqEtsbQ=C5E2&@yZ(rSnW z=%?j7r$#($ZZ^poNToH^nuvbNXfhiY^|CsGw)XkbvbQlV7|qv5>lRgZ??pFuqn zfF47<8Oq=FIpkA`nUY4J^2$Sb#SXsiyQ7EOIl&#qnH?Uwg*rj;FhaXl?n7zAPE(K0 z&cx2M8UY4M>E~htLgcy@yC3aLY(HGyeiD}lsl0zwx9j|Lm*(cLSCj8w>+7;tMRaT; z`G1ms@2K(h{n<`#+52PZt>@ed?x2J2I)4pq?>JJ_t>Pr*SNZUMZo8jEEs-7XLQc_r9H6n+3A%^P8`)D?45&nfa;pIHJGK zWVJsD|C(mlV<*vZixm3-ZHi9pUBV+;NrW!fWK5MtR(10I)4tskLp_J>AH<1wHCWxR zLH8Pkcb_XrwASrgxY4)Ox$A{jhhN{LrJhI^3G=OLeOLP)S0v{T^t~n3_1)>~$A|at zRO&xz*gr>qv$!1gEnF&NW761BYym6Rzy8~yH0?;jySLM zF!J74Baa}lx1C!?AAd|XllUmLkQ|sS_w%Vn9wa<4;2std`&H>uz`iS;7d8*}s|}h$ z2FH@aKZ})-IiaQBzw9;zLig5cO>`MLVm?E!mVi?&%!%&W`9}9 z;!ID3O{Yp-nhmop!UTs8qK5ld-e!o z8ecc+wyzxO*Oj-6I5(`@tuPmrF&ZX#HSCBUUK<)Fha+aih-Wn(eXJ)|0#_K~FL7l{ zL4==CNkUh-1AJTuo#6QY2dL_dF$G@8Ec&6#idIi-yrI zYlifPbibGb<0e|wLmbb?6++!{jHBE9s#}64YwQq&`^-cd7>xl;6 ziMgKmqg4|JQ?i$yk255wCdOD(^e&r*6HRE=_S8L7(CHe|-g65~?h^vkMg>ONK3 z*=e@X^d-lELThHQ3xZ)8X(;oN=`F?lS~gy-OsjOE_r)M;m1pWxrkD|rnp&95VP<#X zOuIFsGiB!c9o9E2qnVtH1WU9lto;hJgDyXN*fU&7*3jxSuH`MBJS%=;hBh&}9+P71 zUxPB9CbQX*>=~)yKgNG}{%u_?EC(n_*z#wE{Abypfk3|fvue!Qe48UC{Z3hvBi_o9 z7~`nT{-pMQR~YBW-ky7YjM!Y6@IZ;Y5jLm1HdmPZtg@1oV4UXoR`tWjZz_vX8e?2d z;1fGX+@dBsuMK=+h8lQZ14|4)mo52a(mqUI1h|Zpf7g4^OegY>gj==SG=7$(axM1A5L|)UuS+vAW0a`EwAL4 z7jYYrd^Cy-@|g9t5oCX7c6K_us*+n(M9)ZOrX+K_x|sR7LTn$^+l}h!%pb&&UF@mu z&O~EFs=o&)@&%|5FgXyPOb4*>OC>;vAibFj9sqArZx=}XCA&N0!AGhp`FI>~Hv#wu z$RGQC5%+x&9ef8Oj_hO)lArN9+I@)pbiB1JgW1PJS29xJlzawCAHu~VDV{+BhJdOc z1W+6aV$1RlVmd<^p{_gzaE}e(H82Dd4Tg|H^Rxx1kCl|gYs}{~VuVTID~)LSKo@6# zgEvv(eM#mFq_fI>S>8|z#RPv?ZQNEP2N~>wsCNvI@oRm(^EydZ{(r7%Mz6K|&bb!*vrmIgh{?1Ss;-oTnRsG|Y6-I zFzVCG3p=pl+q!HO1IBqViW_AmqGLr=>7^4XhAHMLk|WT7O_D>g6MMaOX3fXMRxL1S zuWY#x?9Q|kw&%B5W#w;_kh0Yh(G{WW2JPz^msD&{XsNXC+P)hnwPSzO9TU-0?%7^b zZ{erqWJGpqQOqPXqc(JIme`Pb-YR6B8h)Cid5WsAHdsqq%YJUtOVR0J)JM1M%Mr=s zxE;8MnEJ$N#|AgfzvU#C7)~v{2qD(IwMG9AGi*HbZk-u!+BOgkT8QT~R88eVZR1Y! z3RX4V8#kZ-ndHQKFW+AZnBmnVP3;6>dIIF4<={)OXR3Oo%<_Wps#1K=2d(F2R#%9F zds~8v_4=nT`FMBcFnJ|sC%q&iw&4)(JM2qU50_uf?8W7V7RFinmD`tu4wih;D!1=v z+J9^`t@K`~uvic?zQ(v-o&CG)&K0K7k6wIr%b7C2=M~Nu%Wbw(?^MC>`rJB3z@mi< z6=APkZ?9QG%fxh^#GI&fe-=vEl=0|u>J_g$l5m^*=KL>b-uiAl{%jaqWnZ(IhN!%E z@$#=QO;CV>5sKnt z)b#PH2hq=*d1{Xv8vWQy_-&)iUb9Mm<^D$>o19sLGWC3#W>E8So7s2=boY__rtJnc zyyC^WU(F>(^vh$9u@fzV{!fvM-^VgTIu1+h{&5E^`|dZ~(?=0INjR|GGa>ev@AJ&@ zHzKlzzR$PXWVN$qo+df;QTH@~(BzcQ$@i=#6h~0q5*9e2FN>nQEcj*uLX#7$Xb1N$ zVIb_eq(2u^_Sa8jp2`-HMVwpureAgYRRnADbk0&A%=%1ryYn%@s9>!>ApUdqncY+R zBMtoqEj4*#q?E(D@E=hiazx|`Lw<4i$97HRdpASI1p^`WX(X~}uCfKBJa=zyKo;)( zIBnge_bcxxZ`m|rLdnLdrzqpISx0V*{e<4&ON-iy+h}jgSNHK?{o_&PzGNS#7-9s6 z@lS5O9qiWjn_nBn_@D1v`I_zx8y3A3y!=GcPf^!k;75EN@^|K}^`boPvVT(2XTura zl20SqtNhyQq?fy2jr^u--nJTu@NzlhMAE1VY;f!Mp6kyUE3lYr3_B?M_*%#qXG8tc z>Xljh?JK|DDlE2-|E2gKP8t$7ECzLVO3KPzRv6#r!0G-q8jvD)_bY!b82)vuCikT{ zX;MRXTko3HTD~E9^&T%!=~BPu*vnbDAMD3h$PmVI$WZ>wXB>4u6&> zrPt;kjV(@IL-4WZT7;7}E1y$ax%86}EA4-l7dE|Pvo9ikKMuuAA$oOv`bvx#35fY` zh$Xr3U&o?2_aaskBE(c9HewK);1OXNQSymVe}=+kA&3FFCkXK^AxEL%%bAgXk41+* zK;$h(HPt_nAUsiI$f+Lp&XmHeGAorFqECM2e;2@+G~p9-TA)3Y|m z=_N)dCJY|BrQH5h_0&~`*HZ7Zq~iWbDuiFnlQ%3w?W}GS3-<}W@#rwG@_6CMAQn$AL@^N<^JaL2{c8`BKO zWw_}AEM-Puwy`Xw7h^6u{hWmZgJ#P1r>RTwj^DS~lpneJ`s>y5e^Rx1&Yu=u?CnZZ zC`&uN8S%1gGELF^WzpT23b8M%kGwq9^)lpx3&$gE-ovrz$gBHn7tFPuI_NFg=zH1d zoOLpKbHfz*>ft}>(r3*r)EpoosXDvUkiXMugcof`UNa!Co9@20dHTBX!)qha*PkX| z^Ac@;AIT74UQ<83l*FYreaMjL%J@0?^2p}Q+R2O(QAEb?yP4aN>1lEHE2=i6lX&l7qUG!`<<8)8{v0hdmfOay!oEb~)yD zhvZ`3Yx=lwdH zFDdp;R54gwJzrAj{wD*jCtDC0eD_i5+da$&@}c)n6$K;q5<~iqnyDzhH;Rr|-ez{h z`~9-+dxqMBe_-#Wv&|0nzIQHosB2%SqhEM7J5MM3y-{z>xovslTMJe7i?)=TLcDjl ze2d?mRFq(G-w;_;ycl;a>4AiI!E9ThgTAMuV!=)QfQ2{tOZXUvdwDE=(Xr5?=5EjO z;$lX^JOAv0^9aR~x#1!=&p<`}C%#EO@NGpGdP_8*ehAB=GqLX+gYz#bmfl-Sx|?Ka zp2#e9*Dnquma@vs(?ZKGrI#IM6y4JIOmr%}h zvoZdZdgUw254`zz8`XE(6WvGDOKvbfj+K|p{>tZVt)e+q9f)ZqFPQoVe`nR?8iRxy444k3lDvd11^}Q#<;OppEXAEHD`>p_SUSeovk67 zCFnf+a-CqL-&CWKR5LseHc8)`hD9E^S#u$$+^FKoM`rou?`7voV{LrCTn($a@(kG+ zT6;dHR(P@UYj3R+vo`lz%x(2LXihBQRo=a4b#oy|Zy2J^-v{Yo5aT*h_wYN?+aM$` zr{2}6{y|uM~_02OV z3%&UE=<=U@4=vE(8PX)T_a#R1ah9BF}KSvr0b3iIb{r6{0!`owmZbXcl%rpxd z!%XY)=wU4kg9Kxp7H??F^l}SlZ>yb731x2!-#d;U_DDUa6((oAQqjtoZw;F=79n{R z-e@zO+WDX1Ms)MK--ZG9uTUGLHYN-Ns381TQ5dK#2qL3$2vEj=fWhH#OgIB3jDUOr zV_?+@#-MRxq8@OX(rUKVVCf`e-L zu9Uh6QLJ#rKtLOdgMkZDS9pm51NnR|iU8f=%d2);L9v23E<|`20%FVMp$HHa4?(r_ zN+}J_aU#LVPADF)6l1Fb6Qnxxsu}PBXA+F)j2Z}V#n|RE*#vt*H3LR*#s!d^OCyD- zRW1rDNOfTf>gA8aE=O_Nq~W6w@3lWS<8C`JPld!0Sb%B z$fvY{!Be;jUY~q0*>eWkR(Kp5hXDp#CR31~AC+$s#TRC+u4aK1Hco(RKE;Hh62+i_ z7c}2BKME?Kz!~`js4WH(zz0tl_)L2^je`k544A+K;N^s~m>A&-3MSw%Y+bo4;B^WR z+QT6Xj&LQ5yOISF46xaRm6cKg#1Jjn7A}Z)$RX+IU;3wMiS93F?`3f?KfjqEr zb;vSTHLc+5Gx`5A$j&FJnA!0lUy6EOsqRd2ZaDqnd!`m>*}3$vs4qwFp-W|t%zNxR zlW4w@BC_=73$s`1yF-v_eXlX^E#F$!f($ZfjrVgV^0-Cm&CaBKd+`;+ajre(w+#4| zBQajXy>Blsd>oBGIL-VWR*!&@nxi(|uN~5zyxpECbMc6?fadl!b@8;nGxq`QyYI1U ze3(Mbz0cXY4_PY>+W3L@{}9jgHwJmfRowiZvZC+C8b*l@-FVZaOBoG_*#7Q#HjguL z<7V&$tWtGgNq^yw2(o?Sqgvbxmoa6XrmJj<&6%}Z$}KBU+=c#%{j5ib=H&{2Am5$) z$JkaVm|g3#x!pREy3#*2Y7rvJAV-yNgi%7bc-m8*(Eky!ohjL{0K$NRjH8F){4pl9}qW5bn zTYRhKjhtBT(RlTWqVMmS_SLfzmn&hd#$hn;;g{tab=gi$Cs3J5KC1QO-Xj$^F?CGV zt%hCZer|J~!Qcm8ALCH#f|#I2YXys`CFZ_bGHIq-CadvE z?YF}Q50O)=zh`BZsth>0x7tu*1{Kz1xj)s`UOsqf@M0IQ`O0xa6BjoT+&Z`Pqpp?n_f`K|xLg}vLhJG0 zw6T@VFHL@)NL7)vAKi37RYg=&>j|pHW#jC(mz?L)=lWss2t!oCj+BA0{l1jVd%qkg ztF%>7qrDKHk;~gu=NE(d?A9HCIWO*=8c+G@_H_-er*yy~8Ijm=%KdgK=B+}9jhXf4 zOWPZsn5y(vC)rfm%Br2d;1PRrpQ}Wn{5MGV>Fl{=m{p--r@%Ctgt7RMSg14w`KC{t zOM&;@Q5u64>Udk-^`kkeJghS*y6zJhuW@(~e-Gjn_bIJ|t9)3xtof3@U1&yf(fsL4 zmnI)@Uv?}P9gRR7>$Q%og2|XqZn|Cu$&nm`$FIYvrjq@7|IwccSo3U)+T=9=OV*9bbCB`+5G#Ch>6Sj=o}_ff*;}Ck*avy&Q_Q%4y>Dc`5f^_ z_tYky*2e9@-IV%$*X)qc_NE>3EfcM(^R?{iQ_Gq{3{4dxQ;Xog#JtV`Ng`l!7I~_oAva3DO$%-EAyWUgyrIKiO ziCJ94t|}4|hpFz4WMf0-lW+w2h7|z)^gv%g*O>*mWJ`1Ai)4D}1F(t=@H^SgiU};Z zgM9$D13Eiss!a{`rMlRIo;_{{n*Jml&{?XT6~Oh>Kwkji0r3ai9#D6BWH>Jg zLcs6n0yG|Af2y|!*~yA*XHWHZ{*U3~5#Z;=$MV6Kt*(%7*f(lx;k9=NyMYSOAi|(4 zI1Y`?0XK4bel82$1-LOl_l(3Kc4-%&(zH-0!A_Rs3L_^aGO~(Dp+PI%UEpRtX-;k`0QGoV2rD+7Yz+~XqG(nS!2f|t;4u)OtdWrg7S;y{fXVZbrDT6| z!VW7|s4v|=SD0J5%4Yzw&oj0nSVIY#ee~Qmes?t>?YuAPi~$Y_2IJ$AefjBq#^D5i z0^>;#2R}fw(*~Yu8Z4ZLUOy*TWl<>L$#;bcFdVF%IU_ZT29F||YY&>6&{LBUcym>{ zE0ibT@JR%cl@`_9kN|}O4aq7GSRo03XN6{H2u>bWNrY8A0dJ+vU=HxBs%haKjHGm` zi7F|;m4&WkA&Xc{0TsmKSV37ZS58(D9R}kOIGoaIPHK3Ie-P~kl*wU$qX{0mlokMV zUMdX=SslQj5q4Sve^*^|gtnhCs{!H9@p61V={T z2nZ;gb%xIdM&EUbvA&GYJO^x7+C*b*phm!<64BILNX7xtL$tO6HsbYKMHrx7 z4xWGm_&;tx3AjCH|I=Lp-0sX%_Qwt(wxu8Y6rZ^BDD?z}av<6$L*p6~M4p!XpBBWc z@3xt?-Pv&Pe1go5?lBD1h`v*wOjiB+e)plvdFV4eVp40eB!roqO)d(~kVxI2>$dq$ zZ|SuPm;T0u8xo3Qn9gXaeQ08x*_dlVN8HR+T)+^(ic8_nMbwA&m_k8=rHraR9 z&5a8)&Tg#E)R?mm2c(RX*9@YX*Zsb~?r-iW*dIGW_UYViBBH!yVcqX*6OoWAtDPTX z5?*_R(aQj|ulv2$#ix%gYYi-){SJpOK zDqvsPWQKF`Fmr`V24>gngMY-=g~ivLavnC0sQ_!xwg#qIl%AR>=&;tl!GF}8xi^~A43-^T<>~2bXwxS zWdBog$Ed<-sQfqb%fiQi-4z0=M`V{_g+IdsOP{EG6>Tv_s zm4)}vRs?-_b;6^{TL&&fd+@KnMAvHEI<-91Zh^0UzTkWJ{PJ*D{0-Hl*XfIP--o{? z-S`NPuJCME9I0Q!@+)fZ&iFNFkJPe*E1KhGeSRpCuue90kKJY$Qhnqmm51tjjQkd| zZpuwr%Qg1D)?6sPoQW&f2_?OK_Biv|DAVb2==f{Iclf)C5r(%MdiweI&{w**=UeLG z3$yHy=b5+X*mA9FukS}C4BcLkg2F}ja3Y>&Qa)+Rw~MoTV`6mOs_X@i>nsx=>QW2S1;NKOEt7oe-3K%Fgq*POi;b3>$j1rd=KS1K-k>Iq@S#u7S-Yq1 zwWJ-)oL4`*JG1TJ5gEiYrK>^2tA(CbhqC{m=x6R}uk{D{o>3V$r0b6?Vd2=Cyv4qI z*pCxGqNI@d;#U}^dxZmu*4p{^RDW3*2!9@%ttmS8SN_k9*9jRJ$0g3p;^YIJ%1*BY z*_oYSzR#=174x;rD^QLaja8^8D>g_F-2jX$uU|w)#M3&#aV1tCQZa36@J^#HKP4QF3ZjJY5 zz5Ra(hPO*mpWo8^vj=YwJG1(zY;@Eg{waHGjjvn2(KsObnJ{7GsGxoKs#h#HDv`XW zSF%qzAkoH|`lcBE6;bOqnlpOpQN-E43!3w9 z!q9Y`dL8UTf7aW1CBpaRr5`bxyj+=P#+h^agEy;qA4<^E)+f*63YEEK*P178w1$4E zsakM**gVs`s!u4pGWL1QImGi^*zm8GN64DySs#SKz^LY8!#6}T+auu=xzl>Fd1~Zw zgMpqH}&XU6dT50xug|DucAkA;## zTX=S_AtoFCZ`%6$Zc(^M3D_-43h&m}UcnGRs0Rq)c zLEwCQS(4Kq}4g?7`G8{Mr@ZP?7e_#5`TsGJ< zaN4=L|NBRt9nSbNaOSD6*{;s}aSe(dc&OLL_qC z1aM9lZ>&Z)Hs{w>Vyz8@9cZu<#O+1%!I67$E;G=X>F&&S_r+RUalt-OpzomRIc9M# z)ya94FXXNYL8&izvmRzrUc@U#Qta%3h!HYLd<1YPP+6=xB>CUF9rcDi8~pCru0e1Y z>_B7n4};Vf;71@^8q(u~zS@bAc2g z*gJFbld*axtZEdUNCCM$SbJ9>pfTtu6Yhz56TW|9Z+4Gj8% zczgjZ)VV`X6=;!_FQwqNOdlYS8Y_XAV#KBc6@fOi=X8@+;Bd}B7Av=ul$1#C?&DOZ z3*fHnx<|7Q-0&%lUChuZhP^YT5=D;n5F~jJL0`6Ul)y7!(D3lOEUClLja3Cn=?J1W zWH8hhZ5)n==uzyoD8|lcRTE)(I$C=NU0YA!51{~+WUNQDP$k2{vBppW6vFQ&0Xaep z4Zv%IkMCf*hXZxTsl(unAwa=!veE%7qN!?g26%Kl8VIpLe<+L1s58_CdJk*A?l2(d zR-)~+_!im}1jU4rn-0`hhq*S@0y5|t#PAOXvW?YPDjc8yk;@XgW%-@3WU1?GzyTRM14bGAOMo%Kd~|Wcdx*P(zsP-^{$$# ztxEg<4qyNJEVC)+xIE(SB?OOu_viTo=F;J2Qpg=O{{1ZxQn$A41Hm#s3n8F=xffY> zEtB{Ds8>My)>leudg*VT+%d!D+W^dQxvp}!2KK95wBe+b+!nDXnC~hS$*e~Kjl6*e zqAX%-)TZsqR;X&X_fFNxs5!Gs(P9U!G3V3H$80=%W<{CY*HD9)`jKx|Qw09U?olvN zF;RJMBbm0%_dPPCz!5n+f_gYZHrivhVb={b`cUDEF{4N`&hD%OlUw$X2MR9(-JyR$ zT2dKI$Hi|K|Cm_{)(EDaF$+LmS~%Ivy)~BT;$7p76E~`7ML>ol;V`9p(lWP~aF)Erw-nHc%OF zm-jeKz(&ibYKd-A|JN~aw05(k66TlrxeJUtrdx%Cfatv(`wemDjQ+(O!R9}<>%g>3 zHvSEI`oi0=E4poqJMPBh8(4AKK_gSy4VyN(LUy=xDBU{T)+KHn6kuYwTsl4VF3J+} zW4FkT10q{yitc=U&&?WdlX2tiW)!90(7$EBTof&$xX<3?>$Yv$u4WRqH{31$P+DAG z?&{bUB)ah&XDz=?R40ABU17$2@`q_f{l+tj;+qiqTETj}f*sGnZjt4>PoUr-`ahq5 zC$dmQ((A%G^}&}J=|xAcs9n5TKA4fhOV$KF0W-y~Z-~5N<+y{^j~jnwb9p7F7u0MM zvh50XEtIO9IB1udWWVq9LYc`Ubzl>?R%W+Qu34*oqdwG5E^wjZ`hq(2TlV$OFBdAW z-10l%G-P?L1_+fs5eJ;7gm$%q3sskPA8=W0{JE36@ad800ax+8S6g@StK*GWt}+#b z*3)&L!y+_1{-_W4U~9i*M9heu`96#~J+MD>yj6aW=m$TFgJj6{j@0U_FevPUgHU zuyQ*nBZgVKdFoj!+I{)ylD+rNnm51EcNK^Jto1o$aI(LX=-YlQbv;64%;yYSc^dwb z#)d?4-nuEl#H5M+5l6uWnW4PJcjM6f?s z?fv-2*a!V{)V~@#GP@S&#+Gr5)&GRN{%mS{^+#C?FKX>#&tWTS$ z=EbKDB+|}r@Xp=V7V(cs<6DmjIwf1aV%?Fnqic^<<*ro)rk8|IY9JDpzTYAbYlem= z>&o51cA_3?@pF?-Wrp;}VI6aReh-Z?!YilB&`LFrOO|;zB9Bi(C*lG|xUbT34r1_6{{6Wg5 zPhZ<#G;`v0!}iF05+FRztj;DPRvft2i`vXl?&ELalOuUct(PPF($)+oFZ>A^oc}uy z%R9(C-zxb2s(JoiLNoC$!guIfFSqjlY1!L67JB7Rv|V78#icG~L^ zYlFDupF=`463_?YH7jCh5CV8V*|n8G@bnsMP;WSc^>M1T6*DH5-+~s>$N9k8X`xNE zwx?(3a=kt9fk9YH!_}9`)JPAKlhtZ564*%jUy#!!xpZe|W?(oC1}Kj+ySWe_d%MSJ+n`(e!7rdDU6%ian4D?{PpxN=UR3~$$zXw?T z9kIB`?`{Y3j$4Pug8O@9EdH83zZ}U0r6_}4gQj{wsR)Gv5H5%})}aT&@D}D|Q}fl{ zu2sH(3f{HU##>r(tE!3C7Xf?%1dLByw}`TnVu2)JSLHI3l8F|&AY_m1kML!_Ok5@6 zfGk_ZlYm@f`iK7uyEMQSxR8n?Tm0*Dwa}xx*fS%2fe6L|W?^kOXso@$A_;Plez=}i7Ozs z5eDHTA({C_6l`0asTIlIwJ$J;#}sf&^GWvRf>5ZyA4+R0?bXvxF^R&M8VXW91RfsX zV6&HmrkX|(EO+4G5W1BHx4dn@6VCF434zGNRx(OUX@<^Sxrk&oGm90RObbwAK(%mC z*MUG+oG%2NMbY*3dQG9YT~S1U@%q}xrrLN@Lx6|yrrKoi0GLKi*U1sk)&ML4-~>SB zf1+(|t1R@BOV%d0N}NpTeTqqhq%tIbKvY^zS+P<(NFaUXdnzj-Tv{H{2B;;)8shfKZdWwr5@N|MXU!^{iP%~g%I3ROOO8&UTjhSClv~3b% zdy%<@nDYgR8&$W$swwqz`}asYWk{$B%&`hPef3sK0T`y(U*Xl(bC-pT@P`Y(u)rbC2I&!?ipmu_x1LzZqEFD6 zd={BJIr}P^I59)Mb%R}5G)km$`O923AE4+}9&gOfoKB{JQH>cHzR094_khz=)*zL} zYD0s+AU3e|`+EQn@!UKM!RIc5O9QJHw;syb+r3^+)%Fcc0`!(HJgB<@4Bg)sc-)Bq zWrLsoBnSk6@*7))-QWKH>f?8#*+G-rde*uf!it_u<_g)K;M1?BhR*nJo<3R1vf zFSzi|vgRAXSuT%Rho%D8dIw5~1(_Iqd_+eVv!joR?W23g;urz}2uTH_9-(x=#i}DR zoWkKzuu*(ly_KR;f~+mQt%z`XfQCfVPV1pTwR&U}A5%oMmBm_GF(Qj7rY3|`7%`HB z<+KTcVU%Diilqm;h(WVR96(d3F52wWAcn08uc)h=!N~86Vp0Vd9D*Xuk79pmBhUzp zUKBA>h1Eu2)ZzNdqbPmacwmTc>&iMEMd2iKQth!teQZt_1IrMR4mh1}!O+@p zBwH;4mW2-w64c>nso~`EC_x8-`z4Cu0>#rA3_=^#1x8_0)+bb=fLeqcz*I6D+k~m% zU@Aob+d3;hh{2&?1q=dFu-efDjN4?8vfACX+R?|ZTR+C;Hg>JzaUf)r43a@xy0|S! zaIFXVA7IP_@uI?xE^swiPoel411NV&CpqpAjQPyoSldLwYD z``>IF_&Wkf_51`!2mh%i&LX2O)Wy+GA}}~+ zreLAV8^?SWF~9zgKL2+L>|uY(6eh{TZlEA`z5#lg%|hls`dno3?-V$a4n8gn4V6s? zwJ@K%cpRfojmih;^Z(?=yI52(2MTx}7OvwQQc{L^u?F8%Z-72)R|2_l!F3~bUMA#& zo~!J4&o5w@S$K}c|3{z8meX0Cd2w-KTW4TDrb5ldd|Q1-|D(^!PQfDL>_O(?Ai2a6 z>yUq^z^d&Zr>*%gs3bRQm=Jd)L;S=4&}X%kNQ?Upf2X7u;Ba{DAz+&@iEVi86ERP9 zi-ZZXQ!=J}*e{{UPmmWQ5g;Gx7fU$Lg>(%03!f$WhdQS#$QOE9Oh3T-!y&wZsO<9v^E`K!-BPxF4`;jo79%mBk~HxX4XOg4_$J_rS8zRW9o_l(qM{kTYj z=Qi&USB2q?Cn4G;Cyw3E2Q@+sl;>w-fK%YSxva1S)9cGaqGEpRQd?q;?8XH-e^Nc& zTTUF~YUe%2@i00a1y$b8srYSvE|EDdy@~%W@`>vbdzNe`EGxJE!`s{W)+$$S zWj2I6Vu$m#@RBzwIY%)e$eRVOJ$c6COCyfBXN6tK>57@-!{^?<0y(qfnV-oUEi0ZC zh&;Tacu`?2=yVL*BXRia&4#hwpToZ+YXja^Xc{%1-WK?)-(acIWnAogtJs`H>N?An z9v24oCeKM6&eo*Mxb0(U28M<0mAs+Rg!3EjYp#usZWBgRALU9PoN`3o4>mEWP-Fsq zG?e*tX4#Y+a;vbZ*5X~Z4NrR=9JGmFbKYDUbHbjfBBvC(<{6RfYQ#V={lD&m1kx_6 ze9dX0BDv)&K9?!-zxU^4OeU+LG|e+YCz`VrTR?iVoEGe-@b7(l2vbg5H>*Ga>HZye zrd}O&TV3O)HY-||;W;2<{tI<(z510T2}34 zS(r4%s6};cGl{`{2dl_byqb;!&EqN6=iEgSE#+c_7Z&lYaFDIcc1~NO?YU2hKHBYN zkB<>}b~WKF#;&;hQ~3+5?*)7Z<#J6Xrb)~e>5xW|TOReED{Pml(Ou3(pw??p8~Ip5 zZom!Z1pS`6Dx?6I-?_M=*3@22K9V>jSMi7?o#|;25Tq;LuI^fW-kx=y^IrRAEt0rq zTYWY8( zyc~*E;l3#)*!fe-wABXE@I>nN>T+Hn!a9CXfJm3wL%tRLxal%aEYQM(`nFd-8Gwab zd!M!iW$QY9RNh=_m!cml7a^RXf^9kDd-dh^>sg)IRYXKJan3Qk zYT|Iswa;TRrD3;j_E1Ox*KnJ)D8kvemPb+nb-Jd3)~a;09vM+Xxvb~bDhgs2clDW{ z$cbo3L!STpQC>vvp∨7QB|FcPMub=RWd1bid|fv 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 ntM2)M=7x_=1y8rTI1UlfV6IlO81Mf2ptzs zdD>arBw*{FzjI75n6QhB1(xi*@Y_yPXw zB0CRZvJMX~Z0W8jpDXHyNReXJG;J?3(CR5@kQnWRZ7*;%-M{R7@4^ROq`HnCq|Za% z_I%+JT}erSK1kt1(KPuLo;xYg&k|$f3k=`heYTE#)_ODXH6~Ejenv-Ea5uSIE%0Vc zh@ql!?3eUTCTXT@KL_-3>NG0$F9Yal_34VO5gll^0&eeFPn==X)oTE)18x$ z2;%jQrsM$1oz{xD@&*E3teom(Q>@&kKNUhQZR?azwN@N0_PM<2keP-F?yz*`>W`kO%OAoZQezAs3H*hYJv_$XfNK`Y zJ!akIUW!2baC@053K3)uN*M}Yl22>sb<(lCT13{5iFFmZz^uid3-Z16U}EsERdC$d ze_a~4_J%Hq(SS#_-rsA8@A)41DU)l;PJ!|x9@+}!L0a4Q+Ng}Ub>GNQ@9nuA>so%H z5X!`k7<*K~J0ke(>(aX!2l>|2a~Cw*7$Yt1Ene|XIZi4pxy?Z~U&U$C+>F*Li||^P z$}u17i?oox;5y{Y1#QOsl~Wg#4In=fnhBkk$J8H#KQ5fX^zD6$S$ysMCP#JRWu{QG z$P(dWN7}hHZC@I!kcGo@i-GmQeVB6Z*7uII=1YwT0T(A1S_{>wgT&cZq0z0N8;i>_ zVm-#2A2vPSs4l;PQ2UqeiU}Hd;-{i+tPwQsdIm7=Wzjt{rHQ>>{!n(M1HJZT<>Hwl z>=oZFK>%qg@Wy`eVO|E6C3?@J6Lx#LXPgUlpl?W zS>Vdm|8kol`0C|5fp4X(ll9hApTSoD`LBp<7Y^OWa{Z+E&}$H%G*Iq%j`*Gn&SKD* z)}l>(?c-3HBZ%N?B?g%s{YTnm^5$sO3V2|yzE`-wHL1T4J-%jh(KLvnxmw;i+mOXV z3(?f1l6p)|NO3>;TCh4oYtH{B<1(*vR%z_l{B-kiS>Q8vgPxsk1AUX~I0ErQ{{(q& z1nJe|IC*mK3R>}90t|xt? z_tPow!k*iljo{D!d}YaW6fv4RrVL7&5c*qCh6x0S-PBiu?1%X7%b4uT%&#b22$oIu zr(i)1rt~_R05E0mM1cCS5KXrLaS8th7wFXU+iq9EFQGL2M6NqTIv$rm?qr{fmD+Vz zX@Mkc9hmVomQKl()}oRDsQg|G4)E0V1rBGw+YO+)aNIQw4lrX2W@ZST)`4hX>F!gl zfxb0}Rt!XgK~9eUfEt`EUkDe*%U z33>(kk?I!qBH3F)_xpXM!gvx`K$hlNaM&rg=?Q`3Ld?81lb!jX30S*L+W zXV6G;M57!oJ097oq1H${xSz!Hx~#=d$JCmRw^EsTHJ5&vL4eu+83N<87oLHu342!)xr ztI7#41R|dGDgeIjo>HR47H{JHAt_0ars!`hi6JvVfkg_z2g$?yDHgj4@h?)s^rHPzQX1`2p2vMj zUQg*{PJI^lWmh+KwlU?6U+Pg|>d)TPer5jf!`dy+9w^GPcerp)G-XWufN)M1v0+o_mZ*}M)x)4R zXvhgJ-HPx7Z36T@G?)Ghj{IQ%o0{^Ox3@bb?5TbOCk5gvS% z{cDPU@N^buXmBqggU6kX%bcy(<=1rdFRU^(n;+qcn6RtbF8JzF9*`x;tD zAe2Ld@=H$ul0BdNon^wiTB9GB zUdvn8%WqZ6Wqa-AmRjJRTEP0ti0e+9 zcx7;?c~LOBz~p_lv0&k2SeRv#Vj^&0o7;m@NxLRln5mNV<4my|D|fC#v20&rjJ{%N zDwK1lxBy+WO)mOUbH0^Qf^aBQF#lQ^THIV*?0TlOuecN}_r0sQgtoWjb4}^^M#+Hr zSL0!J$jMrAH`(n;Wtev=n~fOb&(EAHva~JH^m?Y8cyu{|QVz8HNGcV7OzDIWbQ=4* ztQTkkamtVKL64%j4x%~fEh-s3Dw)$N0c&?1L~9;R+jZ9N0#tY7obts#mPa5ugzS6a z*{Y|Ej8<93pX)eTtKO%GKl*x^t+BFdSF=I}0*JTGGzEd5uJ)TsQk$#KFx03t*ATAN z@Fh7(Tvg^PF}&7aE$UJGK($8GqNWPua9{OBf}aKuQwKyG)3mXLM`flhQZ?BH0L?G)Cj@S*qSr0H#ZqH zM|3p1TDW$x!RxNWOAO#;77Z1uu&T6%-;R*RHiMQ9$Cm!EmVuI%A!>iih(%*Ub4!?N zYlMd~QmARgrR9%M>spvgc}eS_M|1vc%eLe1*0A4WY4yagW*i%A-UI%3w%JJt0aI1p z?1z!Ax9qXCQalhGhONhJjZ}}{%uev|8pN<_+q$E&uvDw46ym@U@j0yxWq<%XLE8Jm z+UekJ4C(N^)z-6yu$xZy@<)ghp|-1P?JQEYa;R2i_I524!sD>5$f8rkv-6T=$Ar*t z!=n!G<_;;fj-!%}bEpn!e1{-h=>mJ#lunzOQ^#G;E^TlQ3S_9>ULm#H2oSE&^g z9rdL>?$7b;hqClL3-*<%^=Ibv7p51tr1$^!?33&3|Cx?zv&^f-qpH~lARSTz^-idP zQm#4>YRs^3qI3Y`Ind*dO1+2b4~96p$pGq}v38!0~YsdsP(KiH)< zI0GN(gAW28FZO6?*RU_?%}{8_5bf5`5D?!j9a=*TZK(}&l=Zb5j?6iYAj3zN@O>-k z%FI^Dj31OQY$dTC53oZrMj9;#!5qUp8AHOygEv}+7pYQXqH{wEEklaxBa(9??MK6M zWn*`|M$|uy-D?@SFFiiaKCUM+qRKI5v^8pCG)C_=L=!Qpyfyw{U{tGY!oXUIM@&A=7GS9UVP4V|qN}>NWE{Vxr=`mpdaVqvFjes^G@sdV872lkH?7C3s8XE|SyG1pXz zZH<^M!DFX67GpXx>!l;b_(2>FZfS28d7Q%qS{I#Cl|{WFb7C(!1S5lm%a!wjBBzLp zUHnVIWM%1js4mlTr^K@PnzBMBn_kdzW8re~8Jf4)UrZ^BOu?ZTDZ z2<6$=3^Xo(eh;&oxBju5KV1N`7F}(S1nFsHx4SFbZ{%~T{Bj!1fD|u@4}#@Jl2l}rOorjEz6s~TML_ON^kG1<-frz_}~){>a2 zb)3LZCvCtD8UenAZv}{4?FI_9zqAJEU6|ovAg2id7~E+qbAAOtXTb6EztwQc;5Z(T zyhZ^CHogzIe3MhV^J_~>d)olU0m#uG{1Si6tCN^jKzdsRj_cJUP=q%Wn~TB`v7=FStPeiN|@sw`lJQ=rtLe4@#iE!dDvUD1a8ir#L zHz815{Wyw zh|`68jky~XEMOKM5wH+EW_q3g@IwT89*6I1q)Y+|B>?I6D8N!zcPBt$Pk>4R3=SZ& z6X25pe75TWm|1%&RRRhh>6EPj?j=C?P7k;Dbpo7jV*>-AHURbktn37ELjipd)(P-k zfRX`F?qqQMblL1b1dvn@D5b#D43M?`(Vw>=6O@EAY$>qE6*R zVE^g_xO@0UYbU9?cE7q7K#2h21-Khv6P~oA0CIOq>i~iXJbl1k7G)2R0|7af(2m-# zhXZ7BAJ%yS@WIy34dCv9)BGerNfbIgtq(v*fX-3?{s-XLR@6x!Y99Cx)hAWWT|Nzj z)&v1&;b|bWCXoM@0|p3$c14LveiJ?og!)~09H@302o1b`*4I<7X0<<=6Hzb)NhEgPWB1=if(cz8{Op*?!)ty8fi^ z_Va3{TdM=fH%h^|=*wX?@ZQ^v$>%Vba z1v3hsuB&kD`ThI!AihKvq|A+u=I&nG+n*1){uInXfzhnjK1`zV*7w;2FGowG)tB3O zcmgGCRC#&c*l6*E#=kZaE*FnvzYs35485GGYZ@9;Mt&4_H#oW@T=V3)xSRxM-m-2! zi*`7T2>tq{5JnsEKQRH2zxz>2|8$AA(Y*R090^Y@A8^q=l&ZWOZDq`|`rL5KCR_c? zw99IEUtx~EtXryX__ygY`^RZlPTB|4zo0|j%es@+*NmY&;++f|U=^E;Vliv`?9II< zoNnQl4as+&>V9jyLX8)Tg5%voit^K3SJn%X0)R`X*94N?i~WoAAx#b?!dfem?6N>s zS0Ob7-LG0U4V?RGvZ+bQhC8e{7CM#4{ z=ACBW_*#8sU9KnjX;fOL^*uk>=KPGzD{OmMOaU#g6u9+RsqIENo^e^Gg!YDZWg8W% zdXM$06w0ZC>jC~T#4mTmvAyla-lO~7f?U&Ezia97a{A*expPSB@Wny)?Ob@(Z%(=+ zLcelX`kadVwk!0^Jg)R+kH$UW^80(DV>9M%`#HWUToTgQKJ|v9nx1oVPooRlh7nMe zSvwK2DUsj8`;X~kGN5RKUCixio{7zb*eilm&|U5?9|vluAjS_=W9Dskr3YErkpfCk zCq<6EMPm+In;W+q?{+Oma}jR({r!v1vO-yYo3aVJ5Asb(uh=@6`X?YzajQPs8D>?u zt3XFLS4)7+#Zs>{H|AV@3{ya1GgXz!Y_T3|h%?@C`p*QPv^;_=S_spAzH`HE?`M+s z@!#hxR;DC3dx!}J!|z6IZfIi?p=f4C{(Q7V_v=Q-iTl2*KlfGS0~#ew1TBxLz^rZ- zEgurWs6zAsV*)cmYm$#Izq!za%wkkbZu7Mxp6_D*#r#0`F3;^{|Et2m%xu|F=e+NU z-GR0-yJgWqR+a;mP`^08BRfPX#2`gW=yhuOL!XPzoe(}+8hdU41dF5t|pWC?g z*`nYcAJZxU+K@NGXQ6Z#@d$nb0?I$vhSX6Z#YBhaUb?EMr_(Mj+D{I=V&Qu~U?s+n zU+c9P6C{LASgkE0$~NaT5Grr;DDH->-qkatUXH+<0o33eNefvW+5GAR1be>Vt0uk7 zY0~++aV$%NTlBSSP>@+;m$b92zhIUoUx@z$x^|rIYrrf_LfOiFcQrhl812u@ec{aB zL*EyTAckT72WkktA@|sr1;7CiC$X4Ubs1OYL{* z1cSvjuIT%OGA?GbnnE>Vqx~i1A^w^2qac}PL$fsD7}bu ztLM*Bz}r3d=pJ=msVzDy?)d)j*&uaN8zSiHCH3L`rg<#(TSf8QmV<|C?83Qc_3dw^ zKdIVS&Ruz4+y6)Rv)rL24xM;q6x*YgVKIl)`7Sf@opfEd(ZWG zi}%|bIv4{hvgor`j$a?`wmcR#TeW|;{i(3p=?8A;Kl!Q`bjNavL)^CWl5y#~KG)5Y zxby0sA&CyYIb@Yjsb|SP-+Y&H zrO9nw`&Kc?9!8m{1gfC#)i=4PDU*iww7fP>?`tM){iVihDuayhHf*k9m2d+FQwYln z{R8x6#FgMG3p1YA;udjz@AhLn28O*-Ykp!m8yW*R`rqyfjuzDGDYIQ9d~5b7a+hhS zH}YCbElvBmJ@`+#w@mNz9rVmPqhQ#b7wt;k9sGGOw`*r1$-2!i`(&t6C?^}tQ$o`$RYA!X%peN^9HxiHxW@Xj-QO83l_ zJ_dZWToYJ4Xrgg;&APn9%B=NE?1M3>^<7=*Cwg~jvk0(BZ-FQ~IQzOKO=r2sTu@5M z@SPR9FLE5(cZPITX@R5nAKh|<`huG={|$t?nP@5AmW{5xLx-ahd3|*uIf?JhwD<`g z&nP@O*)k^Y6@oqcY}6Kx_Xxd*<~#-xfA(k8`ko2))Cac6KA^&b5^YpVI`U@ar_ zZPZ$VnVsChEF+_y_C-=SgZ$B@d8Rwd7 z5JHG~;dywhwd9o$CvnhmeklAb;uHi!ZjHg2e-JWK2!bS15QW@DMrdIWh-$4CAr+ZHH}uu@`H?32fhzjQfal1w_+SnFpl!2YNB7{nWax({(i#?|aX-kC zd||&i5^PyrAs}2}A+NpE4NxJsq=N6jg8le|O_hRAV1kwTLse;hAvh=mMF@7lL0t4n-2Ym#E&m-be<#6cddRvsw@=t%w*PM+`9|h*FWm_T0PLy|~|q z{W0d`iWR>6=d6qb^q^MUEm=Y=(IjeK-(dRMJFdzrw?}PHSKBqfugu^rSFAbvv!dio zgjaCaZq(Zr)SBodTb$peu&Q*0B_1=C=+0#pBkvJ&wcyQlK5t=x7%{Z_B)`|*#TfOQ z&jiP#&-B>tLdV2hh%t$aJ%Tnr=6y`TB39NrR<}OxK;iR)n^DlVy^Vx)yxh)woF-qq z^vl@Y=-3NbA^G08vxV_O(g|15@iG_V4|T-f;fp=J;C*+|t=<0S;mv57@%WRQ@u$%V zBHnQn(?qkmMD@bN>%ECu21yp1374c3_Y@{sTe!UvNHBAVcQQzPt}Omw(cRuV;jMDQ zQ-cJJ@#I4WcJHK8aAqA=lkVw`4GGFNZHZX{N~At6}96>gE_ z+>jWvm>eRV;@O*=w~3Y0z(zGBWEjN9DW`a0lhZWfQk2!|(Qyp|r<I9Ml1yX~Q zQwzp1Io?Ud4ry8Fv|8n)kIKp3g~{y(*n6X?(|gj<8tFSwR=RO-`qX$5b;lyT+yYCM zJ~?fWGOLkVh{aZpC(L2fq8l=L7E{&?()tBJ|0m{~M*3o5+QxVqV>9jHX6E{0<}ZV+ zcKa-*bQUNdEn3Vn@6DV+XZ_Vko8Qbx#b)hx%>FHqy<(BZ+RXkjjy=+tE$Ntk?p;Q6 zdzQ4%`$niYTRtUI$?&~IQN|&aEIG&b=Vfw~Ei=XnvoAU3NXg`?(NoX%=l`y-TDd`4bsYXS4_lmOaH{>;s=h2k&TLsczsHAJKvX1xVSy<*j zoycyJE;!eii}TLmXw2U`k!x<4_rx(zm!A82;=My7liTkHf5G$Df+Mvir6DJXhLp0h@ z3~p7a6slSl^H&z2Q*8UQiiIn4@X|Mr~KD)-bU}_?rc< zQZgM9Rk*+*)E4b+P&%4YI%8i>sdJ!X+T6Oq8G6%Jxpp%|6UXRTeFZNZuYg-W21(z zvX+0k*0$-IwNshClek?|-96vBQ(Co-{dLYub#GGZOjPTi+^V+^ulFjhPw1-mTdIeI zIq?XqJ)E5Xx8d^Nazs2=D3vz12JY{nFDu<2fzC8BL7D1qUYXedhw(f(bXgm8FcRI} zxj_YNVR@S{Ix|XPee9&JY|N3_OVf<@UU0k5tjy6{npsn0>>k6R0Txi3=yNke0|31M z18N=uA`^Y?_s|%?Dd0$^kBzPU-CAksoERQpjE(~l2VC@k8~_NznivDj2$)Xbz+dSj z0nEahVv`m+SX2kM_%Mk<8epuffyI@HDUja;t`CU?@|IxqgFeR?8UO`@|A4WxFvn== z1;!LGtF{3N=!QruqZB}x!0`?a`ITYP_6%hO$U*ZPbdcu+aE3`)?ObI}Rjjp;w>Oqs z&%;{-;mai2d<%JH4ZqgcO6;7Y4xOhBlnkvA*Sg7si8&H=m2E(Qz-Cbml@bKN2WfPb zMybdef)gnwpKw2A$66FX#m8UZz*9y!>y$5=B+8h_AmwD6hJ!| zD_h%BBmmSH?9FesQ?=Fy9JOT@XsPT5FaGjMOY`<93Gg_ufC9WGz}5iKU<*Xt369cJm1 zAny6?G3*MK#WDe``JK448g){}fzCa9L;5JOIu;~0; z?es0cNAq{@SgJdKGA(}3vrn5fUi{SZ!MB#SPzC|r>R-;U_)n?O|1g>Vq&=w!{`!hN zhvT`DD@>%7p;n4shs;Dwh;l===%il5!6~)SOC`_5c95v63F4KgIISaMkzSqhdv>FY z($e-E<_cG_{1s+ibL46XEn30wSBQll|KUFE<(f}culyY-wooZKv& zuNJC&+gj9p*P@!<$pbT8-2yg}#Gn^y`38fI?D>o4`BTs3I9__i%X7r$-KrN!p55Kzb!AOsY;cT!(3!-r1oVwXbAb<{jm1s&6`r*!&Vg$6583h z`}0bm3mqw)U5<78YRzwG=pL~Ad_TS>wm8JuNts)EC#`NDubR@c$A2x0Ov^H-N`iGc zD&T?@qq)sLT+{=E9!+l}1#h9?uYO=3eLp)U9c!|SHXz-xK3^toLAVC zYe~|L??tKx@R*D-4jBGWaj z0Q*#!?{3|fRX&-W%2{Z`8k8*lh$yz0ZJRdlv60Y^R#Zdoec(xuU%7$cU5Fa*ej|4o z1&26;guh3W!Co5#2g^K@k107z;^bOYvu~39u8fr4L38b{K1K%h;OnfQS$W*0w*q(Nc%5UYoIE>54Si-qYe`L8-_;=RIwQSb#;2Pc z4wUQnn614D4SKYXOw$!H9ty-9_(#*f%o=cdE(!mCYlia%Xj&rPmgLpJ*G%m@``&8#c(>lAr!Z`vL@&)+`A2W^bFO7Wr%l%hfZl=ti91?Z5&f#e_3SPywMVR1Qd9~y?A%SZkde zU>xqHb!5eD!s^@4I!V6~cc^Bv+D1-|AKGDF)(xP&yn0|FCiu+gW&dEKOxDSdEn9;b z{&iPfj*rCzYg%WnZT{Wa@il|+p3r&>^taxP0|VwST)FW6JofM{#dkt5ga8?isXsrG z1?|RpN{|uTFA+ft=cOSpc+~%;P(nV1@l%W`%90BAH^e1dm;TLkvHPq zx$YrPqL8|O-dHJkk5|Yo{*ap^A$H6VS1BmS&HlWHe&7o)FoY3O zzW~2o9eR-#YKRHFeie1u9tA_8uI=QY9urWfX{f8*Xn!U2DSh-68}vIAS^p;uW z&{%%dgeL-x3$`VMrt61E@Q3Lh4J$JbL%f8LxUg5Suxc`*f_bhAAAX1&erY|tl^K?A zAAajC@{x0BEH;Uo5WMR4PhMyT+&xNssre9-=!HdCwt6FHz18K@t0jv)SxKkBo2 z_=tYg`kN@Al7Hntzru`KmyEuAE_%bupFudMiVz%E6WoCb&Zx!AsJ)s|6XeIn2sXqB z7sl`^3-MsN_w;f}^tz0_x@JmHE)!WD^s_4xF%j&MIAhnZghippU(C zh8`(9p5;tZMRUlwid}V$Z^Ohp(Snk8zuhrT{^ptd6r1cjo=nyccNMrWxF2hb*xRWf z-u^ira@#Kc5g#NYNU6ddEvP_$Rg^(nY4V1G}vM)V$-93JY`uo?X@)O<05v% zdvETG^i+ZLY_$8=9f!S><7s2wVV}|JgBO!+%+u#L)1x=lmm0*a7SpQ*GT`yzt#YqP z2*>>~LX?W2X!SRx7kw7T)eXLjRj6@Q6SK-!v&3bx_h@EISZ42M33dRZPuyS!;;|2o zH~Ff|an4#)3eH*S`X2%7zri^fp|(}fBg%PRQ@qU%X7EtxD~A}joWmCr&R%2DjB6a+ zmA4NIzTBx0({dDLe965_&wZK%Gsw$bZOt|E$upO^b1w|`pfUICMVspvHB21yF467o z&%ca0m;W^7`7;#_$FS#*N1^=K^?W;(0tb4YtDxOG7R-a5<4cG6t2jUtFht)=WFIWJ z??q@M480>$VAWUPWmym{h>N8c#2exgRdC5+IIJTswGWqGgv%^~MHUt0q`>ktZNm+V zvgx>&jyCQSMft3vg!m$BpCXh^v2$2)Xil+QT@g;DxTvo;gFIKDy2P!r9n2OTp^`hMWthXrO4S*DsR~rm9lS!Wq~$j%&s!T zY*}w`*R<)+S zwdScnuc}>($yR~e5NI{|FF41=vkaL+^enDB0;12FU{EL4!!_08R%kjOz@-Q3y@cG| z!!xEGV4kV<@Njs|IE>+q>_MvsYoU?-F!U0}<7@r9zZrj|GlNtcLYnZeoEpNyGowcE z-ROp}*@jOB4G}=K>aUMJ3eZSHqH1b#e`DTKW9qF&tZGxi*Sc({#!R86+WyqNUU<)( zMjX`J)ZoDGtoB`}52Qd-VidQ0?Qh;(YMB-KSgHDP5!DjA z^l?e3<=0Z$&+t~xlGdI6)(=aqd=X8Ps;v_c>f`s~j|)PryZtgGC?EF=M@yx(>}vkV za~sCcYL!iE-s9Y^`l#(>bDQ`;`=RD2kw+b}<87;(?Q*gmfBHX4KWaa_)ut!gei+uy z>)iPp)u~j{cG<5T8Q(4`+<6RC2HpJl_Gs6U+g%3B9V*%#Y7rgd(p`7Ax~@IydZOKB zd;)@5`gJ~{bY9u&)PB_I(A?!D3v+4ie0{t7jdSDP2Lr4Iv;+=hp*|?=hngytWAMWP1~}d%t|`i4pGBInno{iBQ|qi(T$b z7VZmk?)8c2g>rgP%{@`K`!b#TJR&BAnfSS*lq9e6YBHJgY_qNuRFk&N@7>E zGyIVv6u%)g%)9lHG(`2D7x&^32Z({bf;pS8ZDC=KlSDxsciu?YbADmzRj#QUF_6UL z&-?v9OQnCF$r70n=N0jXO`^PPG=`7e8Sa`-iP$^rW;P7wFN#euN*`d8`UgXTEk-W- zkA$L|HYlGw&?A>3N0xiVe>TH{Hb-te9?|yodF3nax&)=C;2KGbki*j5Ai2*T75! zxSheZ55{TxIyYw6qZe$=1z0QWfr&LHxaI+XVGK|i-EDxZY|}U9L9po?g+2`op8*i6 z0uIj96ln&W-{4CB3BpW^Yb#7f9|;fz7RY2xu{E3xfPX;9shhMmMVX^g7{Jc}hdTK7 zqZA-Zu&?^jZ}f?8^Ha2$;ei$KRKQga#$Q(;AbV_p%oMocSEeW{fJpSQZH^THg+@tP zBshZs)@K1SA+<)pL2Qpn2A@pZYOi5)keLW-T@aN71GHv_P6HTayS)`4l5N&1t8Zg< z2EWQ^Ce{rAsby<>mDxgUg~2!4YnXMpEY|8=-zu#R&zd4a0Km|O@!N#fEgEHuP(fU7 zUSTk|hltA{yf#534w2@l%nd@tYTfc0cytnVWr7M;Bv$&ETg}bOROT9?6#yINJaLXj zA~I=U?qYkGx%#exm49eCpetv=oEE_fi8m<6+U0ZX^xo*-NMA{%x zDBA?$905Og4itUhu(*fo<@M zZCil{8~|hwfTMW;k-#$syBA79s1lhc*^a~z!?JUXl-~7&>c400zbhJyUh)_I*j&C00jS+ z_ek)IJ}O4?{x9z_P~ed)ld2K<=Ou67<9r;S@PA_%NWp`K8}Hj)n{8|N-aK)Qn`eE0 z$zRWE+?W5yd&+tLJj6-9e~7OpS+-4B%cr%MyUzBd->NU0Y&zWbY=$>d2F|%(WnhA+ zF3ZL9>X!=OJ(aUPF&6@_*2436z1HWUwhl_!L;fc}if;Ue_l)4)gdmf-)4~T=S$0#8 zqGirMNxRSHJ@r37|MlV|^Sw5mpG{pjBXoDU9`K%=TR$~`0Bh14?X<#oTH^kT5q7-J zsAa3&N61nh-gC?M#VpQpaPP~OmVbYlhoP#nqfLy#PVtUg?wkAU0q=qK@Cu!lU(Uh$ zR!8m;L<*SNPX|l+NJO2OsCh2(VtwE~r}oi3L_?kZsHEwz6Llzg*bnm_1DzBEzY#Yz z;@l@ql}0dzp&Qk6U*}ZN)xk@|0UN}Hx|%Byy!_4k<`PUy3$64NOj?Cbl$MbC6j$Y1 z(FvwW4)a*g<2)QH%_YN!?<%$FR&zXk9EYAy_nP#wq@7l$QW4We7{x?gvBFnFN4`$>wv7YfWq2TmG=FT9Zbp+U*AWA1=>=)pkajdgI zcfE}mqPda1skZCVZ|{h`Dkjjbv&MYa)F+J5Q}OTjYtL&*&7j#+rWviA{H7@pNsSwM zYIk-S8l^-?*;>nelMT76sB}Ms*uGDfx9Dt$A?dx$Z=Al4ma z$Y+&YJ>oR5i|c{hPwQfSdt;$b0j9;-2MJH^HI4J`WH1gF>U23;IgO9Kzfi}8J^9M1 zxb^G2DSrmF^r8RXuiQ$yP+joxALox_zVryeV1Wq-5#$u))*+kGsjOfT>C{i}b&xEAVb#OBH&PCrx5 z1BtD>o}3OmC*+(q~hXA|P4Ob9v>OkZ#QMuCM03 zC$?9kGMgV9uKpq=RaO;J9x;1-WVDxa%kDBSm$9@Lb%*1PCx-VL?aHw% z4p{$Yy~pU83<2B%g47Bfm_n^*R)^W?2|a)Zzi{Gsa*z9-x%X#%mzpF#kyiccFPw5& zzc6R~P40ZP__(!Rvx{dnQ0`F*N&W7PDD{8#YYy%hPWy!?zFC|yX;Pz=8NUlZ3%6Ja zof})GENN)#%^l^|BENW572ff3+4_iYy6I{|5g^nL*#EHhTh$H&t^GBKEzw_z{4i9i==8aNu(>L@FTCRYCX%4 z|9QL}zb)4;dBfc_b;%#3W{mava?0KonN8BU-ZV^^of3b<{P*)4s+Bt= zKFnHbdlhBWJR|vu*{$^iG+MQexNpYff&cVj@t#p8s$|={6e28zesp_?T0>N(!!bdvPho1nQaxsFKA`VzkLOMP`h>^zcEqA+pz1FVA<+gWd%O8Iprc?SqZ*;@45y zH!(qG%;4LYVD8G`L8O}re~3LM@Hye_J(~6lTCjsu=w^M0Nj9Q?J>;QMs1F`0EC_Hh z59xOe@r9upZidunHFLYaV{z-m?M|-l!A`%G1kH z;cZgr4lnI`sqh{`SONx-p`_i3WcS`3MfYtF|obeXux#FZbmCB z$4NBANqWV;rNt3);?C{}1j%ip)Uffl@bP<;WnRM&*A~TaHv!6l5)2y>ZjUG2Q5Kzm zi-z$h{2(9gZxt{{C-UJFbBsj+%Xy-~m9Lg$YmxNAJIPLi%UU2wmYC#%H{ktZXf7J%?wL|#ky_ZBQl^12 z*^K7Z^K02mZPgIJU?x(!h$x7~$SjXnHYi3GMcMF=G;)@%4e{#n?U7 zXbiJ3v}qIClFpR+l{v4RuGp)?>zE~ZCUr+QEqgO#${?n<*Jn#(&yP^CZ&@NZ*Nloy z9p0jBh>(3q@coGLduf$D0tk^)n&M3HoJM0|cLP*c40pU_4pUA1lpvO4&O232+^CCN zDT})aa%FcQ88+tLp2)qMlFJt(tntOJgClqEhTV}>;XY%bM-zEZSb5em`Oh`;pU8-) zXNlTRJQpF^;J@D~7w2|W5OmWl@BpJ1J_R64=O*aJS^MH=Yrc4=>Bm(;OF|PejthcR9JgB9o&A&V^@hGaXu$mrIHYV+4yURh*CaIBdEXg8)iJN>S&F%dPaH0zv0a71!dF z!Zub>dSi)#=j9&9qMUh`VR|w1L20{8DaTlGHmi6jtYj>#=$nemh-1mDV`*bb>2xDh zx-?O`JzrLa}G`3xUczH*~{OQmd^RnjZy#ARhqx2%|(C}R~BZFH1! zgqMn0l??V(ENhnR>o3{uTh4dOQJ~4Fj$Zk_sN_IunWWJ39abe~f7QMVRZ^sun4()IacwTd4ece^vN= zRpGnpyZyylS~WUNHmX83a;i0ks_ob;&wVP9of>phhZ~fzbho?>T)rR;r8$9G< zRr`9W-l+*6s`?WBwLBxW0oBxSM70s_RJTdT`};QDN^NxatwB0frVBMi9H=RAYWRh0 zNGPr@{ab}oZSYC0O}y0<99|n})hz4V?EJOKK&U?UKvDdyW>Ac@+R;S%+nmtEvA$%V6qBaF`hKRGrd8K9xhG6$i24j4;N*=+CA4M z6Okr+Lifn+Y?gqYVp^uWO#8u&u-FBDxHOyR9NR zMRPkH2%Xx_UC*35?mg-_=GS5C*LhaE8`L1Z_3L(T?$o^9$r04eB=@-a^?2OwdRNjF ze4^WD=QhD_pi4@FfT9pyP;}vtb7bIF_Z3Q4z}DqNN_28sm+MwXR$6a#M6cO$caC4* z8|OZk=DtEo-+MnowsvQXc7MvF{@h3Lsmqtsw_-C-^f!RLG*Um;BB3#&zeu(}T(;L? ztH0m5KX0qg%bD;=c0jbR*OxNTePUqOwShah?xzEU3GH6txxo|Io`f`L5Yaq1HqcLZ z?puw6i{(UsGvE0vy7^t}2U!px2Ht=a+`4jCn z@t^Rgof2Kn(s*tWBJbmYed)TAr6JNTpAY;Sl>hPhs6R*z5s7{SLg@sY@IY?~ad>&S zY)5!Rz`y_G$==N6${`zW(s# z_lYss58byeX+&6gu|P*5_L)_%B1e-<)~f8rZQw)nM){K$zQ+(gMg-7^1)3n}Amy5ncm zzl!Gi*QHN1=!iE@>b8h{jXOy3ewnhH2i~tHS{H*P9-OrC6d^sH9QB_hyG*(&PR>xp zZU^gSzU6PN_Q%NG6M^RbiB*@9`8M2y-b@{OHWh%SJW(GLzBaKA{;5k~&xLyLjY!@5 zihdpbd#E2;|1F9ym+s|`(%bnFQ08<}HegJu36Rcs<)C6fBB)MiNGt@cY>QEa2h9RvD6PZ*dgU)14kXMVE7R%pvJOwdEMJwap5kXdx*3~;6fh;+crD75V-vCKx@lvX9u93 zdA5WFK+ZfsfuM;AfI^V`0=n3Lpbop92|OAdV4tmR@a=(`1A2EF+5Pa1)QWA3gAb;=9*stA7mpgc0Cqrivga*6omnv8K6;s9f9`> z5Ptw%1d%bol)#KFkk7!dDtHp$(E#oOs0{otQ-=+ z=!=7Y(M98tal=K|JL*oR*SpRRJ6x|Xd)(-@&T#BEg-R!?;ip-5`jcIrGy|0M_X!((*v}^czO|*TMv!9oDgN>3#gWv77iFm|k7wtzZ}y+^pYWi6DN%1a zC2RHW9syZiwtTgjSp@QBs!xaf8Y&l5zdZTvFMvO;eol;m9{-tYc)@o!0>b)fPqT&A4% z+QO69r|$2XMePvnZ9+8YUWcLsnM@m7y|c&OM{q&X-ZpWDVePr`mv1P4w|4e_ZW+(J zf2KRp{1o0MS}_=G$_eT1pT}_huu({Hn5kF5a=XkbxVj21j->^}G<-V!@(6apzelIq zF4Z2s%RY<0S6VrJZIU+m{ttRx=x8)!Q_(iTRB%2o*s(x4DlHDwH#mpw$SkJj$w*Kh z=DR>6ceU21$LU_>A(r1C){GhwE$uh%ryg!>sa7fe81jb>BWW^oD|2@zEmwik`qJXe z`&v=8kDo6cwff-oMfAW;N7l)TOogMT8&SgS9}|C!YM#CGal7Sj5!BoZQ>uI@adhscYFSOcYsa?_VZ@6^ zlOI;;{pdW$(X&z|yjpO&NA|eM?jI5|@fXVO4^*dCEwAaRMQ>Fbsf!FAJ+QFYOdZ~J z;pDFo34!z^-P`w1hJ6uyezIyrk4t2CyFV+|&C}Mi@7&0x0+Cu1?$RaxbFMu*k2A&< zzx;SV0f|+fG}em3gn&YU$T58mmIsA76g_g#+d6*7L1R8& zq%-6wI)mBZ1^=TATReO(V{{R_u4Kr$;5Fs7%>7!&;`&vMy1}a2(v=@eqM;eTm*KlV zJ_shH&Ku73pZm5(`4k->Zu+L3iG4WC{k!+qz$<8^uMBnWf#~pR&*`0_3|QQa%>6f= zA66beKC`p4U5(UT*3}InXCMA2PQA=;A9_vr=)pRa^+^T&HbKkPK&b(cFN5hlC0*g< zewKBcL+^_2iQFKiW7)dfq2jv2Hd1JDeSytv{%3^QkZHpI%a`d2KNsC`@rp(y#6ZWC z&rb`)<2s>=3ONoQs&u{*ha1mqnEAl_{q=;dQ$D}KAK&KX&Q#hXk#al?jp;fe@fm%W z|5v1IM2>97nHxLuzfdOV_ZOqy2z!$|4!H~G%6&KQk#akRmexBe!}q@1!hSaPf$dGv zHhm!2t;MwwpUL;*+9Q?DhH>|XC`m$<{O_pZ@wnT^RW2Clo^|Ajmf1YU!FM*yG7c#_ zEyt^D(%b*UCpJ-}#^%O-`Tc<8g8G zE1#jy{0nD#l*2VK4|daRLyzq!^*A>^Nc<|HaHH8EX6H+GQXZk;QbXI05okbzGNIR{!=}{gDh-Ro;Q|#bf@4q=yqViEDExV{S`Q zzUdyERHe;Ty}kzpmcNs4isWChfv~8&C%=oWg6P+`79LilBo?Xvwl!144p#>}ED@1k zx-iKaEpa1N)hP*)iKP~YY&%RKYO zMfvzd2RmOMiy+&&qSWstkK+Z&4+bvOod2<`cS*~HG-OiSC49o}vDSU^PQVCMgUTy4 zbg?oTcQma(@coCbdA|uY%mlBxane5W*6`=;edYMKC)`uNnw5qH;YUQu+*LKdjKBDk zMfl?23H^PHEMnx&K7Qpr*z`E9W#h2j8x_$k6s1?cv)AZV_ayg>-Q$tlDunT(tMy{stI-ns`g*DIZ( z>fIf9CZ<}~wsKwn=u7ag!nc2Q!-guOJR@Rc#d2i$pH$cv``?k!z9caLH|9Whu z*Zg@KZ-Rq=UaFnc!liR>hT2Q2Q_N&$Adk(#fV&$Rd#h}J&y1IQE|meKXj8&*y4^`KOt>~lpZw;sKoi(ES<^J z-2G0sx+uDzZu-@ygj1rfWDII{8sCr^N5i<~b<-zI~aaFVg4h-znx$eaoN0*XmLnoIi&2+l=oEJaWA$`+o-B zH2+i2)-!=>dNmzV@2R4VY-;Np=)3o+e%I-YHy1p%<{+gV$v-{ml5Tp4$hk=bo{eo| z_=bGDWn>28^L40;MqZ3zjc(~N_tbvTh1xwnz1hDtGo2!>B_3#g#x8i!zHd40R4|F& zci-mliP3k(YmTL^{LVz`(9FkJ!?k=FMMpoFJb%erpon_7ccuUMYO^`G6jjcmQ#OovHrC-mUZcXe2coi!?UVEU}G!;Gcr}(PD4{WCI_iuNV zKUV+yWpi(9K_J?bs8_b0{8VSwDwct)VroXV6EV=&hm8BW@UK5pBFzr zP@%&<9Y+uUDvZ`%kNmkc#@F(*>$M-nQS8#<>>(y}9VG0&qc8jah>!fc*J}Gu>QArf zr{C6>3IhIi8L@P+m$pXDE;0IzeE%#R-nQuRX-tMbFZlj?8DNSGI5z9giScc_33ZtH zjE_O$%z#QyxP(5ut_Pl_2z_0EKmbjIKj5($V#gD4ln`*(K2RPHNx|Un_aYeT2sN_K zS%_cpk6EA$*&h_29r6m0!y|Oa2!7l-L8Wt7mEdA{a^n;IPcqdxB(450r&?hXyT%%fH?oUd#D%rAYaz5 zzw+YPb+G^ru|Trhu6rUp)?#MY1sNQW$o&`kc02hl6&sg3hysN%s5V`pF~+sfi|1l7 z&hIYjXGvYFx%eiX-??vp7>;~3N6Ix%$~lwYqRaGbDbBgEF6_s}@OP%+F*i^lNe^~r z!#eUG58goGr6Ndn;W4!E4EqS_hxSkINA%yYuhc(7#D$M`g@54>?;yL4o0|+tLB}Wg zpO4t9O=Ii`1azN$SOYF{K`DHZKjJgW;j5I}cc%TAe#B4x@MU~BlYH$XE_w#1lp~KW#zyi-L$VEaGT6BDI}ULN(NQpgm>H>fZH@R#4pF-dqK_BG zNEk%j+>AHSh`D8upy-gGgN?auksz#*sM>p<%i+{%<>))TiAE05T8mNU(sAv~MDlQ= z6gsKQ$_XX{i8dCob{6qDH{yH?<1a2Izr!Z3^CsA8V4xS?5gy7I z+oX8?2F%%U%vI$igf#XpPn=(G_y=Zkv~;2w8iPegKC_6)ut<*cPEHt4PTGtH?epG+ z327FIdA*qA!Z`GJgcUX^M;yWseMca*a~#_*kTi%*p*o~L8BYz}Os(IHAxS4M zHzciSq^(M){4>w!+f4h3PK#em*+yq_Or$jTrV|&_=QXnCu$kYKQx=u8x;HaFOJ|KW}XbMt|I>{tpe_d7Uw*M5U* zcotl+AbSOTia-xgE3<;jr3d)YUpcSMvQs$Vngw#hHUz%?_7-bmf*yrlNl5^<2dJ{4 z$3-xjo7dj6=g+{g%;;zaSsr?z-+Z9Q8o2+#EgAx6pZfV};O++X#jJsW`F9?`>!1gC z%sbkGo0eUe^UfJun_!v^m=yG|AmHE7eLR3<0ayUYX90l%od4T1&>REY`59@n7ir8F z)WgbDYfQSE`CNM|D17Gpo!AZ89b47`@1PWp0^Ll*TB+vr>X+MYyyiI6cLK(O0t8 zNFtIc&>Dle5{04CFk8(fgjL!qg|x8(YI7Z+gXS_OtYM{PIv z*r;m-+=emGJYg=o8U$ZyU!}U4uR`R`xu_VhipL_+=2#mm_!1VGxkYELG`22#_^~LR zGk&f#7Ilt9A%XI34|{-!<~`sbsl~wIRy^!i=BcZM0S1NKofJe{p@LH%V3TcNH_?~Z z05bteH!yX#wgJEfzyW}Y06YSK0z2CT4u4RFGY?*WfEhqj4fryE5dOm}*dh)Pc>oju z%|xSY3ImKS_Ou@8-vRFxfN21w0MG+a5yl4SJO_*hxH$6wxNL6#i~%qWJ0%C+VhlFV zn15vpa0*)*0-y8B8E^=;A_S}(wl}mP0bs@d(`aBTlt$#jkjVeUrlPDgM1wh0uL;XJ z$jfu|Cn~$sDZOANFH@JT(bUkcrz!2B7Rw#g-6f(eZms|8b=v3u(`c-VGpZ4-SK^dS>p8^s+x*P~6F>$H)aXvFkm-qk_>k{rHk zAAm-)err^18p-2xz4Z@8oS!HA8_;MJa9Q^*D#f&kaLw3o>^sZf)*dMJ0yiCU=mR{O zW9fXBu0R7Xii1n0d4y}X;2YXZxLPADis#zxY9rx6X?QgE0*^7(;mj`OxfojHxjRCz ztgJ|hQ$!?^SFG9n8rR9r>vM_bFBT^ZrTMerBLC7lhIP2)T08kn9Si4EoM*Ze@9z?o zTRjGX0lGn4rz9Tii*aErE@YZbdJJ7Ust-5fx=m@la#o$QUJrZp6IXJU)Il-GfG-l5 zG#J9|{Il`n9d?@Q*gj{4^97r?9qzBE5NZ@I)_Y&I5w%UFMkojm>J1^3u1XW-3N(hW zcinG4NMAmtcz&qx?%Qr+1{YdU?r~!4Jljr zg8j8f^e2g-2ht(}p*Pg~KD#lT>H)%X7N`F>CG3xC+>pZQQfA|tS@x|4~u?f6+L_!*5+XPQ2INw#}X=?9&Nd_ zugvYZ>f_V)W3Q+W%bk7~KTj4kuN-=dlS&JY4U)!DM`f;>B)W5BO}$E-!hz4|0(^^0r4L8%l5PKVy4Af5=;(#C?Fqc`jqw z^x&-q3;^^R+(<>>O$=tnGH^dh>6%>QL)J&DG!K zRwwLle1eU6h*avl-0DicxgbYv`XS4+kG=Jq$YNY0RCLHMr{cY@hfeXKO2LzdL^Wd&P#E<4JToS)=e9~9_CyFG0D(0<3j@0$&|8#zQgYnEy-_p7{y5jnZ|Jnf+W4%c}Bd^BG zJU=IqjW=cQMs=%i%bH1sj@DO-R9bDXVLtkO5`#QyJP#f7UkIT=4V6(DFSj>vM*gGf z(4SB4V!sZ*@w)iJ$akc8n}PqMxsFEV`4_9p}-BOW&6z=NVgv1F^4zyxTo>?lWd?XFX5v0@PCr-XA5+=nC@a;2$m#b zBUxu3&0UI#m@Gi-^dLm|0~JudM{scBtj|GvUqxo%Rw%r*An;R1;BkH=%-&lWhWKoQ zWF~{2j(1upol7vdo>$N#^`Nl_LHkibcX1+y_Byv|5W)x*bdMkIHyo&K2C6%d%{P&T z$sU$U-jAe$%<%B%UPwC>@+C~?0WHvpAL)X3b6_IhD1|;@`f1|>-`WRxG6UVoNPlt= zVN~DG6(coBucB+0zDJ?7$24&;Ia&V|>JXDU?uEdAec!l}s2SxLTwqg*qG{_o< z?joRj2;sd-h)#T15Hn(PEWB?$d=wSY&L7sVuak?99FvMXfYO;(iuxHESs^7E^IK+0_2hwTbrZcgTJ)W=~ zZ2bKNFTb095^&MOa$Z%aSOHAf_ndeTiW2J)zk)@cThxIJr4u!K6SnP991XD^7>@_N zyN$=Z#r}vI!xBufv3>Rl<^)BnhTV@Hj*IenKU)NCA4&GOM2+#?PTn#u0!a^*v!3iEiFvGn={3eY?@hK=DAq$EjluY}wh3DHF*_i82gYmtPE+%KWrSuDg{Be%Im#9W(8 zS+282Gi%M7HM8dTTA$DN`}qDI4}UP*d$0HE;d!3toacGACm41<%|9avPt%5%+QAD! zPnH|OKPD%XEp*LX2rC6|Xo2W9Z__a4QP^g?wv{GKurFACT0qP#Ahi_uANSj@X}@Fp zjt70)cp=;NY!hL^Kq_@hA^Te)XQPmQX~Egw@2g{i3If)|(-lH&Wtnq?Eks``#Rmep9-u2&qtX$fW3?h41uofmlhA0?9+M)kq`6 z|G0o(c2?28gT?7u#Rsj61*VGx60tB;M+ThqL^cUf<)DU}`*D7Bb=tEOb+c(BN|qWFRCTOQI|w}WN(DoQU* zmjvaN2DFy$oh&`UD%DIZwM#6!>}eFCRQ#M(9KAL8_E}z8{4~`>&A zSpK-8{Lw+rGzXYb!gO&`Vo4T&`2uAHA!Vr{$fA&nlDvwj*0PxCicE{j6oHBw3!~yZ zcdLrB%E7YMkjid{%AUM(W!>_o#43GK<=caAQ59AF)8zvpw^ zd`YaB5~%s6>o&uxm;*ymx|N^uD%TEFvYsd#{{Mc5l}~iO4F8$O#&s z&E7-6WgQ+0S896?Vm{P1-;>QkAGjq+w!vezp43150hf}8>&(;}m(@%5*2g9!6tvW9 zh31W%i-JAcfEc&sTMQXpnaQnB$P^N94AyD1T!q+JW?XACa@5O$gc{vd&b{Yl#DcIta)LJss z9Jz|RU)c)PYfW`*_18--Ty2dJY;#p^dtljC=hYS{*xsSs{?f8NXtm9KsI{@OEg`8L zR@v^I)K=~V5~@3@rCZ;vwtQJ_e*xy5w!B(rlw0=pw#=G$iazN4&esW|s@sM-yH`6h zVMA>LULEyA?Q5%@pOZd(QvQ%@`C-iK!-t^{>#HALCv{#{?kG#@_^I3pW}_S`yS@u{ zBq?``T<%Wy>fRjc+F0$9Ccm(EY&^*B5LNlOqrLsm><5Kk^>x z+7;HR3hz{Be>mmTrM#!-_%MVd2+Q+=T!6z;wmE^Q>JHheX6^P)qjredq34(2-IncL zSKw{uhkLH;qx8bM&cVBE^}Ekj^ zAgHr{wQZncrLQ2l55H}2=44;SaF~JHptT-4c~4K33i`%nbm5_g_D&t}r;T-0%`M3< z+t@7~`dJ^6hl=;~_grr62JRTAwt?ilp+oH>-ie=`+Q*WcC!9WfY44a~L(FXR?yc10 z4!w|`97&TJ#pxT*!T0=16Y`rHrLaeVraww!$0!EoCN<}DJvC-j1u^09LzAJoEx}jI z;;M%sHBYi-_F@iRdVeVnlY9|&1*AW{KNkZ3+CZ^Io5W->bFO3liD7K z=P+3~EKUYO`wBKtkqJ~LnL(yeageSE94UteY!z4{q7QCGO*a?WhM!W#q`dC{vH@D2n;%%$OQBP6^rFy znP5_hfnzR{nAF)`G8u=EfdKA<+DqnOv1Aqw4~#CeOeiD*A=8C$=&E&qP{7IXOezgc z!(&Nbi7Xn9fW;DESR#jpV^P7R4Re`;qkJV&rimmrxeIU}Y$k=x#LSZsWC-ZRxwA9# z+%;0Hd9K+34~PN~V8bGV*(hLbV1bSw?8gE&0??y#9RuwDcqPD|G!C$B07eKT6N3&O z^!gyt1?{%jDXK%c@~W5a9t#T+?wZd8Nm6#jfMdX1(;?6al+i2ATM*c>djswS&??|#2mfB+#NeNDnIB|Q z1D1!*p=2Koytp4G`}+Skb12sSubJa0I$hSX!pVN$+o3cS=RwVl_sc!GI=4Vr@R|Fg zg?ynbYsIy~D+qIbff!URajfLhHAcQgBWW_mroJHh;Qo@=U=3LKZN(oZ_jT`86all3-BDxSadBtF;LBO6$e+JZa{o;|Hxn(m%*xgh|k^%2Ad)FKzU7 zzje~JpNn89sXqBo@uSw^*Sq6V9Cg=8ng(iHejNCw&#yP#XWE4=vteDd1*F zw^FvcQx~3c)>!;?*$d(9OUp<6w(VNKett)zDKxUMB@1CHdy1JFHDly1>mqgo1@#Cu zKpuT~D9HVGOyp$KxA?tz!T9GVE8L}%R9hwIO>Tax6E-+KYF_L-{tcPt5;#(vq_&C* zFiSmec%USWZ!dq+OLHaIz=L#o3qBX)8w_W&Q*@Q5$FrX3x40PH7+*WCVNh!7ntQz9 zsa2j=)5@_dSB2mk_kLeq5_0KoKY16fK)Hm~-|=_A4Dp;{<{lUOHHLUT@$@t?*5Sb5 zog$morzcB|O$W)ck(v17Gmu1b0Jch736HomLrwKmOa2`o_ydNhN*vwpJJ z*9h0J>Z?r+lKZ7i|LXOtgSlM!tCKxG!>@&{Z5Zy76KcO~v`hMsnf_YDB2`D!Ol7TC z+}3;TljMa%BYnq@lk2)+5|NkFTIH2_cJ)3h2}2L6G?QsV8vQE2hn4?qKQ*uuMm}}v z2fb>KY($Al;1Q0v4}Hx1L^XZLF@ExsG2;iTzKoVr2R82D!oy~VgbTO!{8@<5Q`Mg1g`Ej}GVlIJmEIGn zO<_)GM?FhJKTd}?LE@ED)|XSCaQ@)$ zhIBHuM~mXqMhTs$JvMtrR?+$I<{Fyk$i{5C$lb8717_;asJyD***aC0@BaRp+;XO_ zfAdoh|1k%H39n(L&%-#Zl zd`=F3HJ)_-_^Tc%O7GvXbq`W>QRBH-6>jG#^!aFa|0w=pD9=RPdC?tK(L}*Q{@-!N zyJh@iPLQG7&5*{D@88A9harUg6fZ=D`Nz?E?g?#0q707qrN+a)pSjQf(ymwL03q(O zH-6jk9~TbFoJyPskTXKWeO^6JZ{{B`gnY=7aKue`Iv z&EG1=UAm0u-gjp%$3=Br+bHVgXg067>#4F8i~3COT$MdeuF_xc-+BCk9vu@+ zNl)bWT)DJ9Fl=RGR(km2ikYhCO#*JxTjtqGwG;H4KgKlkm0y&bz8h%c5{H#hhcUtm zWm77~NBa2UY?=pQfH_>RgbJT6ej*ydN9eRQLEZ zf4`e#oZxD6FZ=eXWF8e~(zs5aR;)(KaW?+QZyod*nfEb|y&vrS6Wn#>z~u824bCTy zee1Vi_`j@I!K*f7d+!LV=a@OUoIIb~eLZ|4L(JOsY(Hb`G%WYa#beL!rRq+0i*};x z3;qoMFx=eu9N{~H+BKeJ>})IbJ%YztVuU#I_;j9z!9-W^*lr!W)>7rU<=pTrqG@Q} zn8cjsn)u(98`@_l6^x0Cd=2-R}M(Yt7igLEz2kEUp{UBEBj&0ai3E|+r&BGAK>|>ve z)Hjk-I}P7FdEIwuVWY*_kd*Zy6hCLk7=X#Fzx}1NWPfC{^TVB=c~hYTN59PlJwv8< z;j{Vl^X&QEog3&A`tvu{!m59CF5QlMM&B#)Y+8MOeF6sC{JPY0H*~`72y=dcjeh;> z>37@kO`gC0Bu9x;8+Qv=87De7et+f!z_4K}aUNR|=G)_~d4kP%>iF%(!q`m_)Mjtt zoCv}Fkwaw>(z_z|>qJVJM@UJ+luboTzIw{JpAmHy&9k|6ROfk>4U8}9s-xU#C7tKr zy9C>z&(-)~$7iB-bWvaiPwR+|mKrw7SSK3nwL21ZPCheQbUljasFvj0=o9E@t>CCP zJTcc5V^oRJ{P$vP`J$~qMLXEVIH5#u>)g91sppIob#afqi;8i=f^j_2|K>6LbFg#s zH?Qsh`J2S74B)H&dO?3VI$~T&e!=4b3?CE-4A($#C4DE*KX$Un465O4;YNlJ+Z&=dd28;HjEC*ENB zEx`EzXHMH(C6$(p8|#BSfKerRT1^SCD$n0{`c+fK80cSyg$Ir+99njD8dZ}g6~S4f z1Jf2Jw8nR!dl=W%Wc=QkziP4^5=hEQ#^1LF+BC3u1F#HwgGn`c&{fP^TLGv$@9Ol` z!J0ee527~TS20HW0rLH#rm~Wkv3%bN^bcRJntat#p;5?#3i6avICl+59(?-7WjqB& z1`P!0ahC0zSXmj9Y3KU% zW1WCNP0K<}$40+DqzGf-&=`FPX?7NON1xF-`B6oZ{M?@yn=xAgb|+H_$-%>NlCyaP zi~=8>O(ehXYB14Y6F>(<1p4lzAsQDH51K@3794XKLL)G-u2wWf^VvK_3OZx>juqZj z66+tqaE10A@~5DwY&LN|*uBpLMCG~@JR@io$)hlI*Svxvl`zWy^71U5GRq{oT1{S7 zp>%c)%PA6r;&J|VSQAaeYy_*KmYNk$K=<~U1Y=zvuqV;DU^|?l=CG#xpaKL4@Kgkn zfWxuTXq<%#=JXysiP@Kzj3IY@wYI{|LM9=K@Vp2j9RtEsM-}8p6~wtZF$>0R=|Hy# znoW?W3dCfth72A7jSSF`!S-d)T7t$0bW@-=1N*H(e+8bv?ZN1y3M$;W0utBx4@NV9 z77ZFOpfiI`k?Uv&zv6oS*`o@FKyL+PWY8CaR_%X0pn%8^I4L1H;cP#TM z>jlqtvHb@i(0#Je?R$4%FD?l``wEHEs>6K}mr6Uu6_UZaW7(sk+d!IK=ggb+a*VCKN#r4E zC=im{QEMHCBo%`nwY3C1({|TsdDzYslIyd@U-InW!+g#U-7-Jz9L)eia%F#tNd&Jn zt}sq(TkmxGI`jAH!a{c3w&RA;aruVI$r@3D?Bg&b?)e^pOsAbTe0+EI8EA+aMg0?! zrM^H%w*9#*+T(kRPzd9^)tCY~BxA$jUv z`g8sR8hbzTn<1gyyxUa#dv+>d{t3wmQkDWb-P?8x+`E~^dmdTavkSkid@0Yn>7NHmqSFb% zPyC-lI?v>j(QaoinQvVSWlg}D!)4mLLOzCbej~QK^g}v~jCo}d+jkit&o3ny#~C-g z-gi+^>z4aiysLPDxWS?}Y&nuAHGJ~5_-#dgGlv_=1q}r!j}!UqJ;$>v0*ZHhbK7kR z*)9+^QL6E2&)#Vo&ZeQ+{Ncm2(c*Pi;74%VVUn&l32 zB>i3ElftKeON-RTIZO?HtxbF^t2-il{l}tBLSM$4!*H+LXLW5Nk=C#%GSrpd0y5Qc zHKS7cL7d)f-3!0u$=bM|t5($l*iTxFx-_AR2SXLz-G4dmbF^GXZZNR@;9A|OqtVO|>N*_tgEWJiqqpX4~zH(3=yR zj{V_cEtC=8r!9`wtoJ>2$2xvJt`odVe=JcmoUCwh)Nzv6@B4Pq&R_biFYo@PeQnth z9T$6cHZpBKF5c`io@?qoBK+|}VC^DpDOye4=BCMg{k<_*ChR}1-r?^uGj=kf zi((t@Dru4*g8R-znrXe?E)t1l%2=hm2P?6clpHq(?FwjyO|zoGeBYj#a^9QZjtW22 z+&E%?6>N2d=DGn6-@IqcqLrM?@_{9maCz=L@&imJVz=TNMYP)6b8PEaDtO z%PH?;ci%{J$mWr&^lhwJXOqaE@{X1+_hnp)@QNX`u)&na>yPexKhWF!W^1Fho}=pR z?zlNUULe!>Zsez%TU*GIdr))#9Levd`s^2l=2lf7%F3Hi*c`Pqur2=t;Yt7I{L=#M z-y~JvuuZ)Y)*YD-6Mug_cRYt1lty(++;NFMacyx=s!qn?6#aNh_@emvf=}wc)MRPD z?}xUU`;&Il(!PfhdbgBY2EM)%ageEs?ds|mtgo*bo1@20&=N+ zdh`8hsqKXQw8)qfch>B_QFG6J-VmB${YHp9JE!}3!zgl8WPjF>h;ycdLK+vm~;x zQ5R=e`&RwY7w2oE#wP@}^ijY3NE55WxwpXA?!O zK@v^D?ApwsEzE=-o%m1YiT&{j z138I9!HFZpq|bbg9Yn|n^Q3NKY>j*3q~wdQAgA!w3!%UlsGJv%Q7>MzMOI64V9d~u2ncr=6%pGM+K z-QkhSdnr|n|K%nsMdDKOUXQeQI%(;*(%##pO4`3<2B#g$eYr2;6&m~USj$V*@>eng zFBWssgj>>bx4xta($h|QyketY4HI8AnZGiSdUb$51EZMHYMyawCH-JR#vC%E51j!s zI+?D{pLzCV=3csxNo_QCQiz+YdG5bi40CDQj`4~drf&a1&H7R6^5|T4pnZ1G)9m0D zkt6aCTogq9Y|H*{7K44x^QRulXvoocAzFm{F=E8=97xi)oI`xMVw$-r<~nuhttb%RKa>~-k)y;Yq0Xd*@VJR=L&u$ z6i^agvvUh)>>+al`BVHxf)()9mO{D|g0WG!+u{wU9I=fA@AE*24Zhhydc!+i2+Ed7 zMS&0tazfX4DA!QAH300CIHL6WBnhHE=%bows4Wn9b{eAR>2of`@VsZ>sfsre0!8~h zOU`({{=9;awkW<*0V}#TSaO(DVkYqRmeN~Wi?>HT-&&Gh8&u@n6ezv!S?oNBa3K}D z3B0*S%J)hv@=z*uv?#UrEDcC3eOyucWU%xhsWeoe?5R@O-Ndrn6>p;k%OXi-aRSJg zEzh!~!J>a`#fil)l_IkfD{^%U zk0m00tmN8FBSS(e^bc0lC{;S;mAqn=S0z^NV^v5x6jhKan;j~Ol&Z}0-gJ0YLh>qh zXqL?Hs#ZZ&^jlOuuc)dYto%f(GMTREuBZ%5tWK<`2GN^yo;BYGtAVooS)k^0MNRZz z%@@zAUjkKYN;R^^lVo~c_QTrjW_CBe0%HrKY zrMf=?b-tc;TZwg96?GE=?+!a68U}K5`HQ47#4`BdCua7Aw+OF_`lalyH8rU-GO6El z-z2QD-{WOged+F8tv1N;pS{!lwNl~@GN&5Odl{8}-3xaMf?ZNBJJr;1sQYR6z&lBK zw;OGHtwSH26nC%w_S|H--X_!t>evLWGJ(^ zJ5bwU+r+oWaga=Gl`LYu3jv1^lVu4Y=Pp?m8!d~VfFGgEWGFfrL1SZ~hzKSl4Ti3g zWw6jJBooiZ(im7-Lc z1`#(8k%e}#+2B`1HWkZZqglWQO$47xEdU>E77;4j1%-Cu3?T#@okn7!qh-+(jte4$$7wfm0pGa6q90T_6kWK?N!uR~Q6c9=J4kF;`jRQVv|X55(_*)6hV7 z31+9kkKCq`y8{#qOLH$o0G%U{!~X39o#lGb|8!Kzo#rgFPkZaN`X-()Z*fj&xOWgGoHBnC65!h8N_gXgD!J=_hRYe1BfJ^AR+ zrB@Ho>58gZP6Ma!4Q6YcYJ#6TQ#z8S8Bo(c@VjWV@X&Yu!>#ZByDXw25IGSHDPFEJ zYpmdg2j0&F&Fa^8(E6amj*pPtweCF!H7%QbjGA~S2KR5;AZOZkEDFPiV9g|lwqTyZ zpF>X&ce>+u?o)$H_~ZMNejE&9qmQ_nHPn9EYuC_5?GHHOV(M3iJlaZ( zL|jeE@WwhCYwV_8;}cqJ_LLSVwmhfz{UY@DGXF2jb{+2|bf$XttYk$%Z2z~q{HuQ# zZmv#=+}YwCx$WykT@+0D-~==Lxk1ODRJz$$*|9+?U9?rX<=OUkqSbQ8efO11 zONmoYGaRxUzV^TF&!~wf~&wG95bv55yY_olPf{|0oFKHmec4SU(_v z;|~Vj#LHz6jpF4j%JkAql~zhJY&=)q<~ZnLid4^fCKwfHIfxcz+;=9aAWJJq6;(|n zQe|z?mZy?dzRa`@5)KofyO*{zNUQH&%EeYz^Zpbd*P(X|jn@uqg(Bb9n=1con6&Zw z*@zuINVXWoJN#%4xGKGhB4l~_R?K8g`XF)P%9IvrU#M@Ze6`oWyI+Gql&c!o+xITu zPM+!qUNN$|*|zU;8cjR3Rep6N97xn&@!x`L$bGg|YklAET!vvfG9RhX&=n!G?tSuQ zRdoX;u~oDov3hpZkj9kvsS^Izm+MFLdz8s;Uc53k^JB)1f@V^$TMM=bLdy#5m3Pv&RgT2`|rdmVZyU$$3vG^Q<}j0~^d~ zS=wR$e1lMwuCjifGW=S%|9mmn4^#I`KlD@Mv1gluC0oVyl(w7j&64illoVsL6P5b! zV{F6qn;E9+f1BTaozuH8?)E`#Jv~;2`CH0EJ)AykNqY9V5;mpFVGU;;S=mU6N;TM| z*E_ncFC4qO#VI09Q#QY*A3-wBAjW@1Zcyu`Civ_iTakhh8$(h&^==KOnd*_F6AQe> zwnk=iB9YrCal59zbYHlw5v_VKlm9$cSG?5f*@HwMyM3bq#i&C@|RDLqL+fFPBP>QxxNCw#>Y>^S-Fgth1M#AV5N)jq78Mb35E zE{&J@HO6wdhIrLA+$Y2NNd?tvejOU}<#YU-WS`j`7jGV%5ZoY|L6k0~os=gWaVa@& z(pi_96qtU@ti=3+fX6H83i)F^_HU&;Z@hYaNM0VMntSZB1u^~J=_MJnmVpbgr(ag_ z9?y0)7q!-+Wu~e;P*zW{wCFpX*)dE|_d93luC=+$)i$n0K~#oQ}TmruW%vvv!? zp4&Qhs{kej|0(`Mf6e}CDC3ernJWjY5kve9{Glb~a4jw+ zy_kQU2m$-gBInaf_J1LsKk9HJ;Z9tU?0cf&sk|HMGU6qBZxQt#PTzR#EB^M>t(A-R z4mY!Pcb7`MS~2lBXq~Snj=Z#=bU9(#y7<8Ea*-P(;E+0atBfLEVV_yy2p9ikiG29N zQOV0MvHNRNYi9MXl63hr^QqQRrJ4(xuRmt>+g=%?-c+YU@9x$+=^XAI6Mdy>o5xA) zpKt4RlNNVF$h(c`s(TGHgo<1wW{QTJtl}fr#YNAz+4qDnV)NU`4=%RZj`w|TsH!G= zy?8n;vlR>b`n>w$Poj=q(e!hzm`+tyALq(%-%e+tYHlGsd&Hc+FE`c=jNtqqDmyOG zf-a0Ss(F_?I{myV(b{??_d#ybEVaV7Won=%Fm-5-h^MyhyYVZuS@6!xj^=j8PnB?3 z*A977?tB-5%z$&E|cb>;~l*hai79-E?xXb(? zCs-Rm$iK%5*ZIK5P*1EIS`=8Y{j}TlRI;@9BL9Wp&IN;q$=_%09}30xNzPX%MDDqd zeeH0&vxDFt{NGe%1gqQ!3`Hn=UygVxPMe#YUs*5HND!&S>u=8@U5Uz znU61jSFC>u+ZsH1wLbM7d`3eMIfS2kX4~vrPbe;j*i? zbRH%tTodl1;&xoHbu_L|1@W8gcI8CKs7s$_$;lD-i|G#IFVyIW6F&(SyYoiHcQqE< zz9yMZOixy;HCEkH^|UFrpUR3|e-U+I<#VxTeNWgv{SI4~R z_@J|8U;4eAcORT7_!?B$^3&VTZ}VNl;p+Pv7QRO+Lgxm({`f4;O<6sgiu^eUCakOd zo=QkAu!T`w-AliY)Cb}Cc1zUnsWf(yl3)C(bQCHz?;k3`i|2LAC{r|q#1*&Ql>T!Y zeXjH6-m7pJVQA06ql0ccd{dIcj{Vd*5g{8v)xZIuNGAXkisrD8ECAa?5iB-}P5_ZVXpBGj9?4XM;t9QEunith#843! zt1b>6OVof;{bga?Kp`@g&ICXhhX;rgkHKKNNZ>s*Wbtg`GDwyt;ec0+&a4G?F#?0g z!J|n4iPNzdSqK}zO9Glq>ZP#2Dt8o{js}nts3sH!kpNyo#&F135&=WvpeX>1)4>!T zj>17RiHKz?4yYqQM_|I3X)Fp81bQQ&5Dpzh0kD;f2DUsh_q-SYWJy#E2fP^+0^lfx zh2<=xsiF`ZA_61YMYVz;x+2(QFeirw`P<8EA{d*aV!ALI2#f}fz``P+T~vQ4XBi7r z6ATr{0k%0Dgv7?uK}z>Bk*NcvP+%C0KaK-FE;5lq!>~9+4hKmg0BjF1ByiCIdm5X> z0GiPx2hYY+dO->~7rfHA3*hjy;eP@I7vnC|dV#xbnKlgY9iHov1E3M0Q#Of3<|-Os zz6~HrkTpc>Wr6De1WTI)*cISX7#He-ujNTD9>s%w@x4IIAaS@(HsG$KaDd4Tn7Ftg z6GRdLk%NT?&j&MmV9netNTnu$D*|H~@Y`{XVq^e|Neph}HbBDwn*(J0A4K|Z#`52= zAHcqpNdTkq;Kl$@h5^hALX}996b87PVPM4rARkW|=IVI>=7Li*xNw*Ow%s#&Nep0Y z10O~&7YdVx@t`9BNErZaF4pe-&wL=j@Ssz`Q^5U^NnFz&*CB|fO>*;@NMN@cNQDB| znWb=MxqH)=j{$TH?f?L4E?6dk?}0uEx(EgrFOygVZX{IpsX&lKL70y9}g_ndfQJ>qyzUS?j&TA83UNg&7=88JED!;sgO5Fcx(L|oCb$_V)0$pA`1CodaU$h;# zKi$T^YN*-Y3*}1`Ocvn>SDj->gj@E?5PJm2`9Z|s{WjI?a06I zr;&WlM{^7*;rGb_)vz*IyZxO4{{+x$P$MG;Y-fV76D`j9K0h~=skrhuiQS=xTHKca zGJ4XP>pe&uFE4Jox-az0%Jhl!t;W^ECz;fWp?&Ii=`j6}Zp=4r_C>H&?Jj)YOF~-M2E74+VHg95h?;(%I9Ts35 zjo-17c{kz3srdUh9#^CBcTa%X*kt&Zb-a-_o@o0*mO(sr7vi8uNV_;4gnM?uH>2Oi|e`0^jSr>kUrBpHCc&#;t9j~^gp z`yWoWKasCHE=NQ}AMivXtYeCZMLn7%V)1`*@-(q1>R_Pan=LASr3?|PR8c1Q%s~`c z7Hcu^U!2^xrLJw5$h_r3i%wOU5)s%ujD6+FgWOgEcjXB*+Ong`q_fKQ|k4G0?ccbRF;xz4Sjyq zuVdpC>t$;(r!h#ndT3tx{(fi6>tyG;Az7UiNo)^*DA>MW0zBvHH}TQ zRoAPo9T8ujv}o8eZ1S~>E(i( zolgnLaaYd}OWTq|NQJ4s&4j8cGHbQ2(r^>o*j)8zzNNXd8H@VkOQXCNJVO6@O8PF1 zBIrS8|Hep|RQF#z^G=kGbrV^GOl$?5qe+UXfZ(|2mL1Cx^`fvo$h$g^SBSUUFXig6$N`X49XD^CXHy&LtjU$+?T|-j^J(DTWxW z($*9-Reto$-m4PMfcGJ{G76Y5Yoft;Kf=` zzHN=jj{Jtb`l~s9URw&YYwnEJhUO^bygg>eVR0?~%u!>rZy1ig=Gnb}M@_ETU*B*N zKP&Zi(Cnhvjo;pZnTJORm+t0{U#$tuQWaXV^pl#nF-p%qdu8cLT<(Mog`Q*ZV(D78 z)TD#(dhW%MCByFA$vZNS^R5Uj-+U+a<^I)7_^m6;x5j{X%GGy&!R=?457-)geV?~p z<$k5oVXF13Do3u$daS_dhpw$7cD*LJ@l#5$QFZx7T3XoKn7y~m%_}1Xy)TJhVU0sGU&os}&m8je zJ+6HBGsCvwPxUX@V`=E(0Ve7f7>-=8oZoma@nPf2ucs0)m3vIqpROerYV=_^j`7H@ z=fEy%)S4cYb6>KfbMBq9WjkK%rp_m!PHOy4GG4^iu3Ia1E!JiB9$!7G_PoM_G?>l< z=>z8)&n};ee^^D34n+;<3ZIH}^M)!N3m&+3;9=?|_ybkvZ~eCmXjvZKOMCRBhFwh8 zJT53Ns|TEOhK;D-IrH?(Wyk$I=Y|zx15%c}-Hu8~d}LfyLxc{wDfG9D#?GH9s;_dN zJL-cOdwIHKO>RYByLvoE^&bDxY7db|trNm<`ge#>m&xy}NfFIPpX<+zZVhF9*)6{Q z5$f|XkC*q~65oF&B02z{;au<;NTvpo-ND2JEQnxECr|;3BQ0aY>E?4ACARS;PDuKidBv3(iC4qzuqfOg#Ik!t4z@~z1fpua=~Nm4<<7Kv z#I^$%8GuxPR)bM#513Rs0qIVJ2C~foOb%yZ!%56wB*LAE2_$0tsj~jHxG*v?gpCa$ z!12zMfmLqi3Tg2QQcL3q0`HXxmeEHaABVlv3gFoIPW7%ySR``1DMq-2l)BBo++ z5CAvnGU*!ePL7#B#_|GW~R}|D1e-Ckced}Hjs@0!z|0o*f2H~fr~&OA_Cb=|1_L` z8X}Ay?8^zZL-~idq9`;pn~Y&Fn7|Z7r9#+b?jm1+lmTH4fV~y2iv%u3_Yb675eR52 zfRPDk3XKTpY0yZ75&W$XU33^YP8x(j0dOCz4^9K%k_+=d{v@N_mpkAw$slC_@C$G! zgVIg`nIvEif&~ZQ_utS%J9qysrwU-+pk*h347u|Wj0VPXLpXqiTn-rwiZu9g=;0jj zstg7R4lrjBB@A%O3`zq)o0MhPY@Nf8QdHk{!Em|8$s(>UO1;LwvCQUimN!Qj9tv`N6%a=?kX1UDBf zGbnHXe7WN(%kANv4M7~I|Corf6-NYwU{;9E|8Ig~(yp%9EK&MG;-RN&#RIAGH!Chb zeSaLCso|^@cuA~iIA2HbYgKOjiT>1{=iG=2n~Z?59gS@VV19R+LpS=?H?w`A z-A@b->>}@7gMLa{(KS`kK5hCeeWz`c{+TliBXEiPj6D*8#OUHn*~h~|ptrvy=rw6E z4>HESotK`WB^VZ_=g!7ud`=6rYcyhI$T)m-dP5M%;_sQ_aW)S6Q z$HLaG57*nT|M)OcXjX6s_ROCVH+MJgUFyk;8|^DIh4EXc&m(kRMO*|=t20>jqQG?) zX%P{T>l=iTXmK0j3)2JKh>Al&#Cvh)KFQ(Z8HyeI;ZM$0RB`NG$*_?S2$N>VWG8Bl6unMO7pz$B)I1LYi+o~1NWVCdmX$Z_eVhpZKW&=w(DRqBDx~j?agzU zL}Fp0+Mru;$}+!4$>XaQ9`LL?)2^j?6$2h+uHga|IYlWXm-5n@T+g?a@28bY-+kOV zxLR62?oe6Qj0aPF$Tr%va`}f{p_P!2L6^Mi?1ilf9x1+;PE>g7Dto;d&E%^tL)*8x zH!Aw(`!vTtYAb2}=pjvM{$AjyhMFvLEN(R_ouRbS_9>~o9i1!w)yW!sWvNDo9;0^g zN_bPd`A)F?)Yw|dG8gG=<)QyhP`Fjqeb^d|Jp_xCjRRz@e75&#gVEPjv_X~hLvQ?5 z`&H@()&InfN9p{Sg^m!;PA+H|c+mqeQbJeg7fp|hSdCjK_XbYz83;8R-MDte>WhtF z^y9CNj&tjicP|_cns8RW%@}hNdmV)F`ZKHb)Gtax`$>Sat@h(5dfD2KLIt;`p7_DO z9{_)Zqnd4)9&vG5I&MjhUxOc{svmfIFMaFQ(>vLpGoL!<7k+taSLn5$WnHX(tMx|N zW=6=h%6FP0tF`@Vo8*Qm-_4))j>I8K`ya~Yuddzd?dswVe~FX*7hZ==3@Oj41b+^Y zFbJBsY5TW>VSG((ea3OYfRW%S^6t;~s3VF`r`llo9rT6DBZiwxZLm(}??*?@cdVxu ze%MGJ2VK!-`rR#@1cd$f8f-VAun;q4$kQnj!7q;6@%Ime*TyPxqz6|Z8T=u5KPGB# zAdbx^X)Joj>baE3;;xfA#(V`<(L90o1XXn|2w5b?oGQ5|>=S=NI9ybFC2EoPZYhdL%wreg`08t(6ZjJhaelbCo#6Tklx_TtI#y@@Wp zc=0hwQ(3LFWFPny(M6_-YG2*ifI#Qn>&y#){z*N~`(W?Rgp-6XV^8Dsrw{*(S6w>( z$~}p2zhO`Ar>fhQm$LNH@@FokU3o;a^I$zVAq_ieaV>m218(xxXvdC!)%xF{BYj6F zsMdVjC3N^4fjgF$xh>}QIP+A$Z91aT$Fb61!fRN&FupAf-zzU3h zgN7m%r{Au@S1U`Sfj5-ZNCP*GqOo%T0YoQLxpk9~BZ-og#X;EgcrLF*B5F_(8i+0q zo2Xa|g(AS?NKgjDIe-j`$50`GY-$%+a!etzIPtZJE)5J&U9o(%P|-A~PA!zfVghU; zih*^JDHu@HRZtpCVl5QW1)zr{3K~qrfZ|JMW5Vb}9VQiugD{C0J}NGd2$;IAFd`Lj zc0iE^o?b~NP9LcOsw#(tTBZ!Flbd^6p*VMa(9(+Wl|0xNVxT^gu$o+EDKlH zWMu%F39v;OfYSj!S)e|0Xc-JZ&VXS?FgQqS;3j&3BrOKlR|_g3D2#xt;&7rFv}gt> zwX|dwC*z+~$z^OneWP)MxJ!U^%VEGd9PpLF&E5u5DkGV@4UbD!fh)HIZU-o$pj6Um zB@8gn$Y5}5B`A@A#o}-pfSL<%0FBW=125xxeBm?(oGapT4+`ija8E$+ECEaxhm{PN zF&20y7O3uAgGouoBp`nPO$917S7-%;mn0at zZWW7_!DY8-a0Ub1Tsw!;j_2BffjSM&5&b`w-$UlLi0&vpF(oI(v~R|)qQ@-Y=5=xx zW4RgDDF0VLVFg7SWLWp7E8dh*8F>G8C{@XMaFY4H^h(Z|0Fp{@ec8}!$Ya(ai_^%l z9Fz3t4T@_>*v%-5;?pmf4HaETi!$Q|hy7kRs)bv0*Db`WuyqffCrPCSvV)x;3>-aaI~pwY+iWCX zDu|)aALt%aY>;2GCrfkSOR8hr0e-zY@;A%x1%|=W&Hb?HsL;(_^R_y^_$SX6Ow?>Q z?##74)fL%e!0K9=EOW?Cd3`)!=!vIZokh;1@`958 zRY^Z?4O&NjuY2&hT4Ar9m-C{1^Qu>esoSjg!t1kDUY`;ltH3-49yL~Zc2gKCt|Ja- zs~>!^c?>!z!^Y}+bGqxQ&_$WEHFuT{K32QE()4zJ(9a!>6vs7+rk}$)ew`Ayu^gyw z|CiPHE@1l*{hjSjF|FE1{FQ+kHbTlxRR6I8My>V!xS)qNQhrTqwukGr)*c@1*E(Hy zd?x7h`;)tyPuHu$B>tRknBL2LXn$(q@o%fW#SLei&es14xP5NuEd9~N`p5JDqj$}L zR}3y_ooT!zt#`KRmU8IXW_!K1v#8sSn`c|@dFg4jx`c*mwRt49X?6JIZ)$Zutkl!) zdfcYBzy0aZR;c#JXEU4Hy^*VJ+8<&z^>q5K`27hCs+WmR)5@@g`ED%bxYcYdXIQ4( z2tmZDv4|zj_>C20Sq+O+H8pU5mGcv;TT(UA+4{5MdqFD&`8&MzR{@WD3w8ItR0O&4 z7_5!fa^^$Z?~V&wZS?M&=iApmIm6mh>b*X@C(i{Gwljy)7uq*I7a!?hP1N7**qrJq z>|oFQknH^X{rlZc80W|D!p^N#9_S`7({M-M=ZN1Ipnv@X&+l6P9Jv_<-I8aX7ubb) z&eIF_2L?lg6);hP?bmrOG9mj+F@XKKxARu8(E(RXjCAz9-7ZX{gRvOXW4-tI9|s%D zlw#tPdG8C}i(wke^oW`n#xCp?(o?w{rlNwb2K=wLV@!AwaEjA(_U z>l1U_aTO|9R#@@3}Tv9SBWBq9_)`*(nyc5d;dgLB+jEH<;ud+@u7)?3g-fM1KTG zQ0$bmd#@i%_I7`-68v7pj;V+sKk#prhuJmgyCXHAU?v5DgCKRNcmfm5hL9;hTLEPf zvkd+}DpFC37-lerOagW%43KO9007M=N|9PC$}OLuIj+@^1*JF**VV3X)voBzbhm0( zu>u$a$V;H~18oUF7CIYUrGsHgQtA548WrrUzCWHrgaKU#6l>7b5-FHkY8OB^piG1M z%mi8yuvf9Mp!)`A1KGMI15Mis){|bjNX} zreOax*{)hqNP~_Q3fzef6@VKO8&v!*KvWPlaP68_Rf<$1%paE~3!%zF0Nx=ph@g^j z9a0Q-lUf*qGTWpU2%Jz9-!M>1I~AO`MLfLypFF}%Qut>a;x?S1wt;HL?K#0(24HLg z(htyBz=#WFmRr;~vz>-v{|rwAPB}L*VFP!5hT}kA{#Qbq48s5hpl}GChTQos z24}L#Fc6eOE(QQm0pJkajDkrH5Prbx4ckG`0YD2NU4ZN90`-=|?o_bm)@onya&nWJ zb(325(GdYL*#9Hz{KJww-~P`pm5c3Gl#C3G85tTXnVLf~XXdPtkuztF%$YeS zsAOcML}X@Uq-M^UkukF}hek%`jLeyp8I=_^Yj;J)2=RNdJ)h_K9LM*c9qY)gl>2^P z@7Mc0uk$29$Ntlt^mOSzM`xqX)|_Np|1dxR%}MiZ%}HB&kIw%Ztbf2Y{9Z=g)!T7% zDQHew@T22Zw93$PD)gZLb&>4lz?o^sM}@J!DiV)>b-{YYaou-cwJf=sV0S!$oY+eG zJ#5vF32zeG0w1~U{k*ni?Paew{nroh*ZmdW`P1YJRNPu6tJ`%3Hfns`ySSc%b1w>; z6W()sofd!7(|l~fi@p;p3j61Tyv{gq`pc66am}8129MWB<4w3=vrQHn-#N54u}*-`wVhRhuWE>%UdR zPk|zy>F$!g+rRy`tJG>oA_x#}Rr8AMebMuZ9fR|{N}Qt5UP70o2?L}M4C*NqF6?t0Q(qq&Cy zz4j9i#s=)!a+viRy;a5!WyLIzIBvYjtxO5Kx%Fs5;k5K4Y32L3Mx>ix&W(y{+0an5 zBPAwX?(l2Oneg1v79_xL z?7jv?m$as1+c*9ZmARpz=0Q?Z)6n(TKY!gd)$=Ihr)uMdvq}6%Wq&eMZy!inIww5H z$}5gvlh3z%94EK_>i>{@;ir%}i&gotUoZZ3cgpd_Z8@0_7hl|&KPRAlN7>f_m%gh$ z9&mZ|=Z67T9$lKVq~pTCl@lEwvtNAIY<7D1*ZHY{InV`U{MXR04&NV#E>5p_2wlRS zoAd69>+P?1cFNw|`o8D$(_i?>zx)!L)Mw+}_cuvr{^8x`cmGZdxWe){{`=V{^6LK6 z?>wt-pMak|rmJ*beC$s7{4akl@mRFI>TYrPo1=sIYquZ$BYX2t^W>j1zuYM8%->!) zoObBVk^3p9P8@mg)%h=vJY;uG%0|}QIV*b<^<<-Ll=1G^%)rDsv+A%n-EnnSO${5LIn9oBYF^;*y! z&^Rs}*wOe#^t7e%t@!=h#=j(pB|k$C&jy^p}n(7M+3ntSx9I24KMWE7>Qj3d)W;!D*gxTHJ{`ru2 zZ8Xbo{=z$V?wP@Uo!29l8=5>WcQifgLA88zU~n=f#zI{1=FMLZ9*j)7xz|+JPt?dj zcnYSv^mc0^$W&_(HOZIU&Tnhq!AcxxRasKlFYT({kxz6DZs@HNO}$SQT>1 znfm-4ITIID6aBi$XJ8GD&7g;Q6I)w50s^RX5@o^(Gf^$Kjy@*&k*)T4Ypd#`18TCf z!`#{&;7>K9Q4_vI;{&~QV945~nHU|hG&TGCQ;i4|#g9)0rElBH<(6ivql5MSpc!Fr zzTF4bGuc*6gM~iUPhcIj^-iC;r5W_9X2)e1wCWHtp{ zPTp`FjbLI^GqSQ&iVUN@yBRVtdIc?-ab1DfM5LMgFomfHP8Q9@b|kF-;BX7hz1jWQ>=^G&VIt zo}9MJI&j}p%K?9$SXHIWif}hHC=G3DDJR-6YBI=VdAV6Kp@hK_R+qO!g{e?Fjh82v zHHZ!V1YM%1f=?TUWbI(Qa4d_;j^>gBz+Nc>6wA|1j3^R3vmzvVn%ZRUW3cc+Ap~|_ zj!v)1!Y7)weNdswl%AvTNS5U(z~rMKUrd}MML$fB^JnYiTtlJIo6Lr~Aq*j|?Xui3 zsxbp{)ixW_xja!^YeJ5B!c@cI#d+|_QjWY=t5gZZI!}hK8s>EtT-~65a*52 zF;h)KnMpmYkc=6eDD0$UFERm2#GBd%&96ZViH-h1yMVO^JcDCa1Pb&ofR0*l7=pb? zpyvSeFZ@q%Y>xtGAZU@WO(3?%Si$;m+caa)H37~?1O_zwf+Oxf#7AAtBXpI#!1&^| zx|6@<;hz0*oEBIc$;ZqI6FOk`U9Fh+ac75CLYNisap>xr^)0DkyBR4BU*9|Db+lyG zY2(A)*LqzF3{{G27d5>Hf0}%-v19n0{K_;_8RpbeVK2@%*|$A1|6MA5*Zc|o;yV$~ ziyX1*gFRt^sK>%NfAKV*XZ@90I&)1~fwMmRL`Y%bG8Cowx})8tsR*4wP%M}Z50muy zfZdvO;vBDxciG7ENH=nHmFfKEQTlI^C? ze11^ma(eZ2_?c6Nq@(J;FtgSa@8SzK!(pYcuLc+1J39ilSZpl*JazYsChCyG>G(f` zHx@e{E_nL!EIVPdJ(Ae;$HukG&cz-5C{DT?hKP|zyphNE+MZ2BAO0}{(AkQj~( zXHwJ=c>%`T;h6cjG1u^DzT{40y`w4;7fugkU{1IBv(eKPGtI@nw73xA4t959n^vOU zl^trSv;ViI^-oInuV%W#_5oRYnwcX_%PLOK`sD8ZK9>18zkp7qT30eFD`cNHBvMIB zA|m33np8uz^^5%itfKu!l*8NMk(}r_ZKrzjh@3xJTlad*FzK@(d?6)wN6rJO%#xNE zMV)ZBTw!}tcW z^l7ZmMpFFAljrKKJ8~vFf15me?jO0UwO;EmPj|4io&)j-d>VN0!Pu<{FkYRn(SUcs zY&4oLtIT~m@Df;u2CY3B^T2Iuf1kBeWt$Dv-2vvmo9$87HkGMgZxBhKc9GFE2IZ@~ z7Z7cALMzHh8Kub{c>-fgqoQmKY^gJfM9@=>ge})~YJlRIUTQD}sl0L&ga2 zIIvi+RxHt%jj>tOAP+K`m1^wnfEYZpaXdGQYiiL}i`z?Oir!L*q*J3Gq(cLsFgGsC z6)QS*WsX1JJZJZWB`=lt5b@F=n8UfGNNT_t8Ns80`=4$%BLreEt7vCSH4v@EZ^9?BS`E zYTlTRT@%>i+7G&%Ny@R#(iqxjD=IuThr*Q~wvs_kAyH-{CX6Yz2RPfY#X; zfGRq{>6^YHpG|s--?P&FbAtL_X$;)IoOF$`yUYlqwXV?Dk^aa+c0|fV91k#lC{njFzX8YE~l=cdQATJI)oqo zNyW<7?OV>A;O{bjaCOAEkG(wUZuehh`>pn37#92QW0nO}eQ_&VtK7rQGU_RB7lau1@85=-;-QSnHBg+~~w~EA8e<~|B5s2H4 zs5r1;U{g}6H7w3rE3-X+_Xa0#bz1MzHMUV*@nOPC6XkIA? zI3!hp(9{nFliB(Lf?vLTb2 z;){`qQ%z*NY1pXi95-Po5nkj(ny1d4L19sWXGLO0-)CADw&}{!K0`0GMOwEUe}OUU8XY0n_E;_M!C$a z8%_x58){KNFWPxw0zE}-=~F5S^uYWA^BUocQS^~{q(q=~z!d95%{*KjkBTFa$;SFd z1w~*OXs=hw4Mc*0j@N25e3t+L#O9UqQlZZAL?U`fp_CPi^?g)BS$$$6y+zXqoG(Pn zGGz#XK^}gp*A*n1t)|klDnnr&SUFmqp9<}$*EML2!^6ODM-U2(E;#M5-jqbGEfZ6` z$iOQa37$4p1IHPVG++zCY)N~J%?$!QaQ}F-IQGALwMv#=^~_$bsgf_yx$g>6#8GDJbO&vk36eMZe4Hy?~~9<``LL5 z!Hpb5?+`h!63y6;6y|N)6JLr!`3yh#?!BT|Go2tDZ2aWJhfRa~J7(;`F>9D!Q*rvw z-|j`0IC)1Tx2vz6)cC)Tqn0>fJTn?~Esy@loz+0wyzI$h_1}-q#7yNFa8SwIl?5s3)MKZ%PWvt2dAk5H-Fd7|ICBMb7dvZGqbynB z#bjb(3@zhYXf!FXVufda3DV`0fC#Ghl^JO+#(I8L?SAB`M(@xVrK#e8e~3=eC|}})S`82rNX0;H{p2l;4Ks)&>vXpVHF9f8s&)44iDyr& zj`lX;7#X$JD=gsQX$1nIvK_Zg^;R!}^@_@RyU*IA22Iyi7kA6QMhg7dU}#eRZ8QJ% zD;s43ff>+Q0nm7R+UyuOnJ;%hYKcjzF!pOj30Y81BY0gcZfJ={%g7Vhyh>{yKu3t4 z6~y8iTa}fST!UN;US3goyN<;G?*WvPI8>`rusk6aUXddfgHokOvaz8mIw=*vmm!t| zd2q}czS=+{i0T!(*J|)q1E--cBO2vZ(JcCKZ-GsmeJ9L#C3(7r$<<4dadGrEZjgaRQ2izbqhfv!%4M=dA zUO^p>@+2#UC>D(>#ha|WELXf$8oh}%;`StOOcg&N%k%)0MNL7zI6YNu=p9cACdg`= zO=Eqg{$`UmO(#;CjJnKVw$TlzA7Ys3Y)J~!M8X(y@<3&`K`a3R)>G4Hl!{Gh(fPq- zZEtf;tG?wFPapVgsFF7zILuvUTbM(P^o-TKWHYGjN*xt4KD_ zg|ZznKz_hVUGPuaO;C%qQ}Z7Y@{ESQ=_o-@_fJixj9%G?eHJJm#-%aKrhndsAC9kC zUE#iT2PP)LXQdSX#l+p0PB$=fRyjTZS+pW{@3N^k?%Am5F1OXvVb2&{y?Q=_U!Y&q zxTPk(oH@I-aef3$=(Qx()4TJK-ato>SpKFQDy@aXGoqkMQ78-Oh7!(X$cI z>=*^ER*khspn2i-8^f%-z*n|>SxV={S?K#fYS!J_-`+P$mh;Usp{%BG3v&RSe zaC5TIYt`K)y1Hqj7uL6Nn4yn3t`^&FuU<5uIGNI4=HJK31^Cx5!l`a2yEh7i%iH$5*x32cQDe*qr%UWy)c+Wye;DvzZ34Mjb>-2^mpc;u zNtynn&f0pQIQ=#9KuVA`k^S=d*yzy6pS?F?gXy2Qa>L1#*r+&bG}9VE?e875y5oz( z`1JBL&X82xTP(B&Q&S?CPs@ZrrK}6QawFmo4)rbeTT-|qYhrASMI!fiYI@r`0I?Mo7FefaCYl;2W#z!ogHAWAFWDwZ;5>6d zS?lX3Yvopn(AYm{&CcNi!!y~gG7sOMxU8~(rZ|v&0snNO8mzRo_78%oY*u>*>u(+A zUz))~Xk);pCfi{O^sl?e+}>e(R>2-F+c@KKTfWxT0elpAoxr=RmyWg7WN`9_l|AE} zd{2WBsw@!er6iCF@h}ucg1bpGOyK7W@_Y#jDM{zWsA*J?0}`Q{4wFCzl#G+WuA;MD zC<2g9@LO3n78Z5bFt&F{p+s-oe$s=2sboc~xbS2=9X4jzJK*J*bs& z65I_q0%Yt1Iw{>GGlA|#xxyw_ZG(^(2a4iB8BCscf%&}&Ac>!vJSG9xG9r%4th_Xo-IPCsJd8C>_xv}@?YvzSSe=|{0o zBSq^+7bg?;#vHMCb;(9=9mq^ROT`_z>p!i789|+l}_K5KvX>|3UH_4 zC~Bm`JoA<_(AhPl6W1{QhH}67;qLHVjx*Alr`EmC-zc6P zSDo=~dog1#)}uh9Ty{bq^5e^s(Hl-uQl(z&=uf&(6T^quMV^T}BXhMgsCW2bA7Lg9 z#$CcVnKN)mk3y}06){)-C5ozM*d=m`oI00p-dsc^6~VEIy7Y$`{->44aVzpTB{?kd zr&+<(PkIWU6cUzibFy2?kV5fOxu6W^GZKf3@kfO;1541IiK&^}#Hmb#O4-ks<;$fl84s zPh6QVP6M8f?FoRVtz4YTqAJ{zvk3)wRNF;vkOSyaMwjWzRZxL4n@=MsKncK;6GbRcl#>+YV*mpa1Nw$VRZly`HS}atjzC*3 z0!s{8WCpLe(G-Nw_a;+V$&SDp^>#q-`=Wdkb@c_Ha&Bzx2xj3e4+aedsg$5ZP&hDl zs8fRz@iejl%-Z&3K#VLrNCbxjrKucCRimlAKHHzqX6F^K$hevYg>i5MdI0{`WB35A zsbf&Z&M~zP0;Ghhx%weG2x98jE~A7{ zp>!(1MZ7o0z~b=A3wY^b+qy*}I+#V(wl{*BkWKM`9)c3C?JDL!8VZCJ4B`OV2qYCa zHc)Q><_`SwU(E#{BG61*H=7Y`D6kbLY`+DO@{6(4*S3|XFW);ha%|Dl@8_+YPp>4s^4>BHJKxeayeN&8sww?D+4Q6Tk>0}u zKC761D&dFTFg|7Erv=dg<6-mHG;-b{#>x&ZVo2$myRU5@xn%e0_q*>SVMu4R{dlxM zAGO~lUPXv`S$={!Em2Mxrsz*>EBGrRnS&F?(Dty2A$j59H}=haJ^19|*|(2i$Plr% z@yYi+>V1v@)C`=OQ9Nq5Ydy?`8P)#NC%(V*yLX&D0=v`iW==6raF{L&?p;`)sGEFT z^zbi@EA#5LsQvR_{ffnecOiD{_n{Td%Qa7yT*Ga0hiJB@Yes+q2Db~P-5`YjmBI0vwzlIdVZ>~WA_C*ZU0b}%?kftyekF+? zc$@aAxsE;EHBR@)@k=A6*v>goS%hX7a6*?ggD}@L#6rm!(g_#djg2wrt~rMq2=1;C zab4FpJD!(B!chWtBtC@_zRGQbdl$-e=nwU(nY>`)^=V|a@_N`h;k8J-xsm` z61>|HrW1y(U59j06kpyO#>V~N%y(FvBT01rs{UEiFJIy3EWEpF3dTW%Iv?^m9JBgR zq|4bGGtuOz?jStwzp;2fz+zB-u+H<2^2?QDo(l?-c=?RHIU`sb~f##)<$QC|>x`RZvW~P38^f)&vZjzTZITsJK zmF`cyTq6fk+tXAJoFx#(p<=Ps#l;#-%uV4oq;Rb%n}^E9Kt`Ve=X&LwwfCAu#EgUX$<5C+o_Tz*_5729qo=%Y*FY9aoyn1U4JUV11RuVlaUt1LSBRREYJY z8W?z>xgb1f%M}CR&!!Rdr9^1+jGME@ zR?B9sO*d-qrNP!6nbHQ{e*!Ka&TxyZe?fPwZoUDJcC$pUMQptMn*o+p zb?BTNmmSlP!&DS$5S<3yqbu1<=C0@pEyHMeJ~tS9KJ+_x;7a(BT+u7tvAka@Ziele zd~p-G*!+#aah8*DmBXDS`(}kp+DjK7Z&SlU9P1e`pLuB({amzYw%3oj2FyHP1?POx z#*mk&Mc<4aVqMKM5NF$yy3TLj{g--WzHHIT&)@vED=LJv0je$f=H@5n#72a0@!IR( znY6)ddmlNh*fBf{2IH?NJng#yxf+AVE-wowb|W!rb`gf=2^Z`w`~pJYkZ-PG<5A9P z7}5*H2oIxmuuBkbBtaLJF?QEurbT`?el^vbAYg>*DUnGG4t&-0)GTx*%2}u@XGGj2 zAn~hY&x&z#-Xn(`zl64+W<=yX>2~6k$JotCO1^U{_9b7x#SZ&j&$BZp{fvkl}_6SJVmxIIVvK~+*+UF zOHL1Cc2>%lkpo{od~6M*TEE+T?6AzrVzTJ;@-QZl!|@m6)k&$J`3Sr8*u;d`IBQ<6 zwY0c6zrZ?|I8ZDA3xR+eyWFAz{VuNo_-^99C>BQh2NXszHwDuhfU32DjBk9jMxLFN z`0??he!$lebc>TaC<{!y9IGiUFm?B_$rMm#_4g&eZBtEN>X_^w{0!u&zTSFEGx^|= z^`gr9o<9!kqPb0FX;r>&YBmEhuRdyi{Tw(x+gtMVp|$fWK>i3|*1-wr+^=9zJwN=*2L$-Kw^qwtfEEoSXuk4>KM7@1O!0#l|b68wJuzGwJ zv`L`fjz-R=Gkx~-CcEI3(#DNsZW4WoGWRXY}?TZ1LXHx^U%q*`0 z@NNcKs9FsfY?Q1A`45N$^dVXR^QNH0I5Gh=yMTxhWSa&@98kDcTGj)#21vPaPzy>I zhWCBoW{PeT$0lHcRGnG|bTx>~1~OR#ilVeUvrGbn8i-#_fw)q{VUWodsle2ulx8IZ z=GW0EkRuiH!dQp2(cs&t;b(xHz`$h#wKETDfz$!T0vW5xi=N?42C<}+CN{9x%6?TU z5d-wo;6>5Zi-Fk%-7q>l5kwq1X+6+epwB%5VVj&=Lu1BBT)VhoGPJT6y5Z-@0Z*84g z^!_p|JWYeXe00ece%{}AR&8n*&GzZvvcJ5{mCq<@RY?1_6?TqZGEd5i)Op2t-DS~vW#P#u`$~qX1B>Bdb!X=DEU@ShX zcG8WCBiW};JQE-i1{B?{tGGHfGJvjwxvgRrU89ZZ?D?AI7dIN=$A|=q-8btk>okg0 z<4WO9$ny>>^yH(usz_HFugDH2xm)29L4J4JMQ&E0u={=2-o}cSXX=)}Bda4ELp`*pZ%EghbrS0gyvpDv!Gj0IB_%@OKUKiAy?hZF898f~+h-m(R$)ktD{R6EJA65fo_9RG?Qad_2KL6Yh5)zt{lG@wb zm!DrS8AOfqC3Csl{{Fs^kr5t|VAb9E-1h5GsSuz(kw|oM!XzdprhpQ(s4zDvF*6hN zA<8ywO0BGvxwzo{{mDQ4kTbdc+ohBsdwY~rdblAabrQU4M*gSIr(``n8ihy*^#19C zk#j9)U#Fx71dy#2V$-H%FE3B)sS~!|=i-95onWZWc&tC!+B?XKV1moX*2|jiZjG^B zX&f0D>eh6&s%oS%Fd))Kh*r?w-RGGjkmY3MrR7kgavC*Ca0gqFG}u<#uER4FZh{`o zFkheMPVtS?CjwzsLuKuti5-Fzpc_3iNA5+!q~>@sBFJ2ZNYO|J{rd`o0PNq(F3kZ7 zB$X(11JLkjyHqG)v$=YOfzD-8^8EtYN*j`vJ?T7-a8!I~=^r^Ub!KT>cYN&!9op!s76u^zF|iKRL0HA$)Ka`-G$&sndYtw zrn-BRaZ${%@v-(!Wo~I)doQ>WW|Lje-wq`FpBrtU_0)nupg_G5fxsM%|9-(@_UfX^ zh%!rbYyC}d0jwz%TmV~hBsHyf?0qX39Yovp8tj93iJiwNvKnH*t?jz#!~Spb6hE&! zv!*WgL@XGwS@C5cr~Ti35OtZ?1>Q$>hY_>+YbbWY)&k^ouegiXR-%QjU`$YMjDx=z zEPv<=ir9P04@PFTYL=8DWswKGHm*hE`=Z>sl{$F$w*$&8w*uVZy`otdX=C~u599b_ z^{P)9(k;9Hyw`PjksoHh9qxC>&9t{yJ1+ll#eqUQ--;?l+u6?~O`+BIFZ}hV;qJMs zd~afp{Y?Tew~el-hU%AJnryJnCHjJxsibM@Dx6T?0UD|6g34H0X6&5^Uj*AuLtZN6X-%)rq=4IEjrHjZ{m-1fc<2djAM&WOmbi>x%w^lZlNnj78Vjow z_Cy}s38SxgZMaB|ja7Gs_?(2=}V${5K=q_ZAZlq|i4!$A-7PjMf$4HagypIIN z_uKy*f$NfBV_$8`{OgtwKCHI4S1fTzk-!}KcJD#HbqK4{!xoGy><4E?!|4$0>Am7w*=5tyr?3+@8G9kikgRoZ+7zUK8b1oS<^h2H2* zgiYNFW-ySWBb$*V_$}FXxD(~Tm313GO|xs{O^@KEXdRbz#-aC5%b=vVfIAR03BQQD zT@O3dUX@#zbarJN2j<};xLtZ$5H>Wv5hqHThsFt_Q38R8D(o_gM(Qd5o*=qNjpS zq)!G47Tq|8z(QF_Uq-Q^ZT+tZ4t#pvPdjzh`g4=e>hd{)`+j5YaPax_US%(G$^Hu@ zSLm3TRbM{Dvj2WY*c>r9y_P50*MW-HPPB!xD`XY@orrf1aO+OwSF_r@7Lj%%ayccK zI8C25xhRapL0s6^-`8|@-{Fn0hYwplZ()FO*+d;QX-t;f_EwOe`(fsf%c z+`iwqeTCQiZ?S={+2dcw^Y?rHp(+<0J81p;2Y$H{m8(APOxfG=$p^hV4B;v$d^qde zrh6m5z8jb%Z+6Z38;%|Ru13JB=B>0!Q>%3hOmpGGiDEA?I|fpT*>r{ zMaPruTq!VWC2Tf3gHIpEF1Uy!3W_5dQ&t&BCjB?D6nNaQu(rF%Qx982NC_bn-+8$) zG$Z?KcNbR)Y-6<0IYW5n3%d)?;r41&;hCZ{#hVZum{;-+A}-fKl$Pzz&z+)e%+nS( zZT&XI9ktc3M6tB+BO76_Mp7G49v4MB8~2uzg!A9+9sG#mvl>uHHe#J3Cw+LKQIBm8 zhA*Q0xc3Z?l(cKtF!qPW9fvZ6(jYh%_l-Rp7PD_Ze|2((0hV+Rf#RiIy;staT-G*I z{N?)Zoo~Rmwuew@c6({C+DaJw%z?q^vYaZgR_9hXAMI!d zClzG|!+~7BwtP=}#ls2M3<=y*AXYYp7||J?5;&2)BZMvBMU#xBo9Dw3cpdEFncNT# z%*aM9RwD5f*eYB_QB_Da8W9|gT%U{jN+G^;Z{bI1{~|qXq)M!uimZrt-y6W&I`>%q zw0Ft&l-&UmxIF>3jwc;8@G-AoNX`!@~=!lphDzSDrb84Pg8oZ{Yzk<1NkYgnOKED*QpfWxkW_Zr$ zu1Ko7RCjpOHrRX)a)kn!Jp>DYwxD^)Y(FFllGL5vwLTZ=DanZ`tr|?)k(Vp4i$Wrm z@_7(1ITtD3T6M1OusjNhS0GpOkPmJmmhn)n3*ksT%tBb<|I;$bcL{<9KPuN@{>r8M!eUqc(%;WmyICc zP_*j0a2Nu?LBzyh4OH192gC>+-jC zen^%^U^kUvIUWt0nkqJ>G%Sgt-+7UraWUk-ue;U*9C&EMfzi>6 zO(}`i`wvP>_W^ruIe%WG(cG!1m^^dFjB-d#O+Ap3x{4g=?(UwEkx^S)A4;b?@&O?n z+_z!z(#i2RX=z+w-Sd2jmiRCKrG?2G*T?S<59Q_nKmfMCudh!oms=W+moXXTL=X|i1fdaVjUFB71GhDSg?DtK%0%_L$_!v!As0?tc_ZE< zqpdm%q9!Yn-9vmadKY!6R0SFYpt25t1D?H_VPHX_tSaEL0SGvv(29mJM-mZOWMKZ& z@q!Q!9$*1rpMwB6C=3Z~ZVo%HQQat)cBBMx+SOI|DEI1`M&S8nT$w~I)|IPEORG{i zOyI$vzAzZj1TSxTIs@NOEd=Hm&;+0i#S4K!DTDY_oH&K98341VAl=grUS@P#qf9qg zmAA>(TA-(jfGq}0qi7Z?nmgJ+ds*@zlpU>eVd$vTlfs zp7@dY&on=Rp%AE7=l_ohZXI3p@T1{fOT+KSLOC`jICJ|XqXcnwpKHn5I@(_UjlHU$ z@19{V>!&`b&HSokED^Hvun){u?uJl~S-KLGVl73G1nD?~zboe#K!+&DE;l6L#awr986&-0(%2%S00LaBn6xK}OqQy(%d8N02BJkUToMkv1(Np4IE zCEAx1vtui2zPyr~aV(DFE;w*aIL$A}5piBW=f=L)P>L}*>k7Epnzi%K(epmxnNBkt zoh0G(aLMK9W06zy;ydZA41l zh|+_ezt^4&G2p9*m1zj%CDOABhIIAj=~SXxjbn@t*X;`rel?b1B3^vBEs_?_KteNQ za~(Vip^6QmBOk`9_}t*qO*62NQeYQ^k(_4Cz`;;Ig;U?f7j6aPL{r+kcyQD#G!7|6 z;+X>1$SMV4#uV}5NR1@w@{zbu1z0nr`ee7|D2@&j%!OkseZeryX(~GYUO~>QH znKN&$-FjrhlV3la?L_+(;GC!01+I8pr1)@}!=kLf?nTW64ZdvSlk+#q*2WE7Cmy8_ z+)S%%ZtW&jsO;b0GPjXkE}n9mn~k_gSwq|a=N}s?@tSB{-P@Opb+IrIvuOf^Au#HY zNR6B+*+(~>FLq%MAMmT|b}=~@5y_kF-Y0iq+?rR(X3j@gOhsXh6r{J-2WI93y2U3| z;1l(BWZb&YY(yFK$My3g8zP z?=A?+@2k5RZ*`kaCsg2vpH1~9FlUDvp9mb;gd4>3tL?|;3klzx-)e+09C5fJ!r?J5 z2fY&AlX|`KJ`zUK3Fu79(z#3qa&_qkSNIIUtXn<~M)rk+Sjyh~WM`cj*EM}?e$ld* z$9|tp=)yP=itrWzYF_8Q&=;pF_ughtPCM zF^oJPwva9O`M_|{;==?x&m?uUlK@tjWttWdjSznUm3S(^)QG}x2MJlTBfiVdq1}jz zO53(4k%0)%t!_Fjc{+1=IdY*E=4^T=Ts2jf7M4Su?kh+ml4wL&9>19G5g>IT=;tlV z4G(o{ejOYij*6b*so@sSoy(C76kc+}MG@zcuPLw#!0n$t`sRs5=VP}pY-g#n9zHkg z_`a?r0m>f-cM&&xIq8*mBZKUMX~FM`FJC_B@Kehd_AgmcC-86Ab1*rXN_~et*WQpbBIM0jzygyCT?#4G(E{>!R<6 z#g3R|J{Y1tIQk2@lAbRjO|Xg4ARw+9h!H<$O*6dUWvM$IR=z$p1HFc=vf zxsrr%5Tq?)Y?~Qr7Xr&g1lqYM5&XHz?aLvQ3&jorhxxUo`8+`^QDYbCOGBqb5i$4R zF6!K$>~{wE;LHr311Iy70M)k)i#R1hfL#*z82yY6!^k|wa_&~AW!Hap=KS(Hr=-^eFOSF3PQvJcjq;H!W zkqablLN=24^9zKX61nohFyVvsElP|&G7bg-|xg~mHO>hDB+oKM9uxs{U6D9E5FJKGw1=A)DE@mESrXkN6xcX(d2_7;Y+J`-ZTttz5 zqF|jMge(a`sYH=|W89orzjQ6;{mEy%mb`8ftbHWd;Xy9jVt0Q<Hrz+4^_gmmE~!Dq9N1u*QKmgjX1l`WX!!Rl^cV;BgnUy)@scGfHx zO%%$3g6#VHg#Osp9@2Nu7NVY4q8t^tPYT#<3Cf2c|H^Ndt3rPCe)h!ASkoTZ8upHb z0`BLFTdhN4!YS-8FJOC;GgZe59!+G-=uO}4#xL@5u72K=>#R8P2?qPc7w$+o9-edJ zDH>+l@Kg2b+OSW%Eqb_ByfYqsAWPE^{94Ti9L(UTQh@Vzt(Qapny0a}!*lFhG ziRE@3zPuOyyblz+qkFIp!FGuhEY#G}H~Y+!#3-x+__#D+}}9}EIk0{uMZV5)W7w^oU4vSR<_hw-PmIab%%FJ6p+%QX`>dQANq;D$p& z=vFu4#ETbzhr+_>=GKnRCcbL4e{kZ#eQ-f}!u&26G^AIGCycgT17KJiF#G^}?F#K2RTS=kKSgQ1ROM*=9a zfQka3AqImD7^GBX7=O+q@IYVU~F$y7Kdqo%0?kc^IR1VF?A^rWiJkX3WVl6IXcOA#T0+&HQR zF{Bjh+!%@k-Pl_rz&{d`4mD*M%z77hj^1Cb&m0C6=V6bB7&yQ*bUH~s~zu!&kjxn3JpFcE_$ z5W?Zbd*-x(8<&@;^l&eQVT#;gv!K0Wh%f!hSxS8O36tKATsG}I=~@lD(;fN(>2=YAQ)mjeST=5<@cgj9p?#wxrP_m1NuStN#%5=Q=#=tB}qS&#sKT=&t z$kV&Jxvc7u*tV1Z>q@rY+i11!_;jqiV(C7dUF-M1x3kq&Af%F0c875Hzv{F+&GQWK zpF}>krs?0?*~aZQOtnMSL78a`zrb9o{ibKy*YY-A0$e0EUo+bIeWw`Tnpxf3mGVv1 zbgRSs>>mD=50C0M`Ka8ueMzCa&LR+edCkY>9nZSpj4uh{RT-cEF5*nrzn*BPH1<3?zw^(jHIIi(LX-dI^tI8n zj2vRQL}rWN@U2z7kXQ7O9#q zp=!kx!CHOH*ZH&ULfUl}2kvQ84dOB0fQ8$!5;m*)oea^i!rN3dwpYAPSv7F0qRDwEN7-<5=RSV!fCr%P_R zt69}XdK!jbkD#t7S36V=snYZ< zUX#3UsMWje-3qwqjCI9r*xq7V2GP6;8ynTwlH|4!rz_wZnVR>Ax#s578(>XA@H)um zkfAnt=&HPX^PldlVF=Y^E#%l?2J}6!&fg&eFG3uL9*0~5M+YA31#`|5q!)AG9nEhZ z@Qt+w`_Et6xM^7KrJ-4k8z$d7)bpZ1{!nrICddc;707B)ia6`Ze$QhcXpLs*FT4HZ z=q)@aZ9_yJDKa>!Ms3e$?)&_q(69H^zdV7}0{!$Vf})G>ckA2T8v6F9iO@n0o{spF zt>tt72)NFIHm^U&^08n15FL^}dg%Yf@fmw#^2@~!r-_imZV^Z3(0iu+`$wK_zi(bD ziM=zY>3MvU-S?O7kL*id@|$!jO(T&e)~2~pu;8oryVjyP4Ul@;qPecY5OQLrQ1uIU zuB$ObB)6P2`CP$LtCy}$VN34A3J(=^c@de9PaAI-J@p);_S1<>wMG0pPyjV*ohaPI zlf(UbQ!B1es4XYe#|N&?UAvZ`k*nlYH(QrMQe@+JWw$YT5ouk*0NGX6bJTT}E14BF ztGCjE&S1HRLQ!lRLv@E-*|qg;nKmuAFn^cDBr6%Vb=lWv)@0c-e@X0?^Ek;A@_hYQi7sDFq%C_b+_V9!iCFl))9|Ow>kct^z|uJIX`TSzrJ54{X(X z=9+m}{`9`C6+{VTW{^82knwbdtb87x!7Rt`zqiagX)Sx_b^H{v<5P}ms20VB5v-Ey zAk^4MWVjmsD(9}~Th(`&f@qqm7Z>jHl}LGR2C1a&pK{dfrYM3Gs_Y3|&(id#LR2!x zWcBY!Bz!p$ay96sE^qwUZ}zA`u9xv2#w@I*OQJdRC7s&F3crfuAmjM z?!0{L-E>24Bl)^LnNVfFANl(qD~c6ahT#<+s=*LRoeVup?-@p4>A-h?U8{h^%Y0AF zi8LAtGg$@+hzG?leNu)XZ2zB2pfst-6mNm%ZG}H>rxbBip?ek|l1`~j7V-OLVZ2vq zMwOZ$$n`iz5;sn3p5SG;QV2)WT9LXx@lkvV!s6ZTx~*ms42iq(*?!f}Bjh5}iWewb zN|}%%b0rC=I7*iV&GUfN$Ko@Z5|1^Z=SKyppQ$82ses>}*ysf5c7|I>lWn#n&s{*B zw}DEv+KU)K7<+d*MjPy*bj}kX@`#;fsh%sS=Dwo2fi!Dh*sj^9N`+)2jiWLs3*-rt zOmqpC=3Jk#Hza2HSO#&2k8yaq@;z&EqIM*uvmfo-9w^$u;EVN1bn31&FPdO&4!XS# z(c;sVN#Yt^8xtdza>_y~GLTH`a7MW~8KKGX+kIdXFV_4EGknYsJCFX=`Pe2JS^)j^?)5x~6MMwG*+w)9d= zl?Pj`s1sCD2P1De~aNWGT$g?Z3{g^(n?MRK8KXADjpI;2vtnb`Gm?2yH4q#*}o z<5|hq5|#2qJpy%B#4MDd!m&bue$iZJQ7f7DUBE#77!>K9_^Hkm=tF_E5^AiE3W%a| zJH^^ti>MzC(Pm}S3GN~(;>RoAmnizeBK^rYq`n0q>y%7R%f)fGz|YRpiKZ!KhjnGB zEsMl(@nPl_&SGZja*}biq9sqcuF=A|c||)^_rXet#xG4s6v378zvM<@%2I*A37u4+ z8@CGGqD#zmD0A3{t=V}|14m~6fGj1v_&Tv)R2lb!(+%$3&}jLt>$|hFc_Z(UWt`I7$_nT@<;N&AM;-wwq0=ETv2}-)VmRhU zlnqbp_dX_c6w+fskz|2y;*!IE)km$HmAAXpc9Rh;7VcbDo9TW?P^RuGb`8GMKrg#OqYsK zsO3MuSH@pEYM6qOI8_#MaEj>olU48v)9lnTc!j*u;fKH{|3?9ZhxW{hMDXKP{Rqm0 zH?!d#os^3KBo}44)}Un7b#(IS(V_2|o*Da=IHOO`q!(u&f4`)BWhZ7iyY@@qVsdMA z!xD-uFJ+tF!qQe^nic8ZYXP>o!5Gx;q!aF-l4wE3Hb_+tm%L^W#e&1YU{vNJN zJ!ecsU2(`ojOa;=Etm=CY#?jmsK7hF2CCfSfI}8y_~y^^vsehCK=fEJ#yR04JKwgt zW|Dut*=8@Y1anXzF6;{~%nK`;5KO^a_~YE88}W2%+=HJD1wJH<1>1@*4pv=U#)|7# zqlmVo(&ZPQ$JD%CeQ}2k;V->3apO|P7JijJ1?i+rFFl#vcO?F>v_Jrh_dm)k&OAfa zxO`RrGX4BP-EEik4z6PCPv)OnMPF04J<#`mEYiP~uuE75^aq@P=G4?wgV@((P6pVd z16*?RW{bW){r<&EyB0VCAeu;w0cbMiy}V@878e(ni5E|&UiJZ|xiaHsR&U(s4?Im! zP>{O1KogM9)NG516DI(A?b;O^WbX)CVf*)|Sy@?4Ha2>L5v6T`&CN{{x7sQyDkjTI z0eUf+%nnec05eP|8OL#;ji!db0mQ0HPXnVQ&oVQClbSkSGST(N_&>vdZooSigx-KA zn(BMof2AcfG~CUK*`LUteEdWJPzq?HsgHwzuYlmH0}CUw>9c1Wfe>3wb}s0DfBWlk zp{L)siqgagVCtL-htqK9~{?PccLYcAD)<<2oQ$p78~lC8yshp8p8!gpbHBmRShjl zo-e==yV+KwZBj?vtNTF(NasG5w}e{B{TFh+wsir}s=8KTq(VQn(f`^BDaghug9I}` zM$_kTg1ln*zWG(nLv>v5w8Ww6K2U_X*ibOr%yFpN%6ms5pbdFsczu`bO4%u6V{#~+ z03qGcvSvA01#qQ;r!25h3RixDua&r~b07%pg3uHB61o{(@~Knuis`+h0w7?09d`%6 zTG}-PcqKoZf3Lb;(APU$C@M9IBP4E*M^Ci)dpr8E{1RL_z@B~0CIBWGX*!NRC~c^= zV!BbAAIr*|`~iR|+&cZd!&w~!;Kh8YY8BZy-V6von2J{ z*a;BSOnh)^7|;~pD1b@e;t7B#fKM~IGS+o3Yr$L3G<-!WSQh_35-GwbZ8)@}{r&$5 zmK~n!S2@fbHJUjG0)k~rHS>xNZaQOjmEp}OPJw(Igae$CR?RY`w;l^eEa16XnrDG65J-&&V) z7VUb~wKeq3-9u|K8EbEN<#kf+!ajA~_~m2Q{IAcLbC84C&zml1y39HCd9Vk}qu#OE z=BTSRZyh->{f(3EBM+Y9%Yf&eo<~7rjH)J)Z8}Znm@tgw4+TobB!yu)3$m zWVIn`8J~k!WGnP;!VC|H~9r^V@t0*LFWM%NF?L#P*ujnqBhUJ zSDL;>fkZkLytZCWU@W7v^5o?UfAp0F@3@_zwcg8=Km;1M2g1s^bz2{!b6sm&E2ixN z#nrEm)t|27_vdZWUEnB}X@*70+Nu|Fu0O9#wLCYl%06EXBcV28509+uJMAU!?ZGPf z9Q!Y~C>wF+iZpX3XE0+yS&zvXFm3rz_l0m;bw`5E*Z%VJ&Hb~BlRD@6oR4dyEjV_u zUEh`(w0)(c&g|%}5`$Tk9l?=9*RChL>p^Sv+K+~N1v}aOqKNxRQZtG5xE<81|M+=O z+q!xF%}N_}64{znToy$7@x;MknD-^Fr71*z&Xs>15DE(n_I{(bsdIRwxm{sdBMeX4 z#2$)(0jX^DHFfjj2?rY`zZ#4|zJ9qyseTG$7iybpB1^d6LWoV%Ox+S8k%kvxIi@5~ z`L?35bgHGA1lCGoQd28rCXTp_|85(JCXqqPIhV9I@`_0Qt-sGX<)iJ3a}1af#zxIP z>H;SsMEkFk#umPaIwYf~H7krAaSyg9S(lz6GkFt{ug9joN-5=Mj9AIi?Wv{WKFM#o z^~iEB{u}686S8%Thkbg8*mjNmJ}&@Koq!S3i45!cPAquvwTQx#kd1qBUq`!4vILqY zVUhXNS3?=}v9}Mp-$8jFLon??febOhTlbnUN^JNtvWn6N!)P>HcJr_P9UioEyWr6i z3ge0gdzX{7N^D{YEU6JX=~0sL?M6Aaxgtl;vq1Fi1cd3;vot-iM0FV{Z{#ywlZ< zh&Bo@e@JS+L$XtD52u94Ni9j*iM-6M^P%5yQ%HSc16C)0dmDW3ZJ916&E{0y({^cu z3zcstADY9q%_5D#*U_|UXVQ|fg}yZAOWSLK@g|klEI79aV)vTZ*I&9Zk42E> z5DAl~X!D>?`cbedHEzLjvf`B%In&si7r#8a627TI6D)c0qvRMqETaQ`1+hvR3 z$EGlthv_OPR#bRpf4rIk`MqxMuoShI!M_LW(1nnX-zi}KV3iDRN)q&yA;Wj}|GX9H zz$2-@59x}c4)aJ8bEzHPs1HtEA#jFCwZw1z&?3fxnli{6LJwz)YLltUb9cPg&s;G^ zS;@~_BHgKrW54z!?FyiHDiBKuDy3xE($-^{+q%;yF|yJ9}K}&=9WRYd@?e;9)wf5PKd!HaEB9 zOl|=fa_r=;c=G%HDGqF@K(NjfKOerJ0>Y$-K8J@ZkQP-z!jc^$P%_RV zWk-=#C+)&M2$m=Sx?(HAzXs8W+5oY4mF`kmn7+8wSh_#$1HbKkzBCXM7;$(iM4{wP zs<#5tSHL~qh?fCufny`Gl-WxP+PMYZY|M?C^~S2)mdl$`#O^9fQc)Bt2hw4G@r{nE zvJ}`dufkB7m^>QygB-GEmLA%7^fvjRj&i%#-J^zz7&MN_5DZ784 zPARzB53OKgCirf_hwD(%dx|b6Ql%UdH12fdV7u-d{o_NmCp%s>nRmN9TAK=Q;Q{-> zn`R}hger?Gk57HiA#q?_j?k(wdKE@fM|7#MB?MV=D%DgGTv4eek*Kw&Ev~~b9?67P z16tw^sWm1%lBE;{j>Sic=!k1f*w`{o)qFuTtLse2B{HPrEb&eyt&}2=0#U=U)zpeP zRi_|!)sbdaS9zIJ3)6R|r%Gc9rY43+%rkpu zpMfRlR&mTXF=~ioF!ju81$^eZq}eiQe-$Z!Lo$@sAKX|~zg3KWqtX`$HjqZdq_QB2 z_+H)ILBTiq*_xkc7rl;O@bGM{jfZ9Gx%zw6)Y5YeF}XUA&q>dntJXh%VYSD#p!2$k z=g-D?Tz-~*G2dgEugCu|%fB-~GtBY`-i78&cHAi~E$zA}&CJXMgprt-2w>t$K=5CG zJpsfpSzn*9P_SUq&u5#Z12971X%CPDRANq~CRSBd|5cDXb-j5aBw#8v;T4}hS(qcT zw3<9xW@l#)OwEi0diV&aofRv<9^d*xKfn6=vs2G{0|U4GJXJcSrdi|WWnp2lY>6uX z3xGzz)Fk@({d3{c)a6TnUqHELy~9EPRD!A5MiW^n06@Uh&t|MQ>WsXlOGpzp?w z762*z35lcc2LP)Dc>4W24)gO>N7vV9y+1)g@!dOc_vkOdy~jV3!a;dvrrXx{g6au6 zFrC0`C}XQ7s~Ii~?hLvF8!3W&f!r{&vun8_1)Y!>UNz7;ptfPeBf!%hcov|A=nT#? z`D3MTDWD+WLjZl8Dro^43B2h;BSBAv2W$uM8IGP*5Re0IDV$EoeFcd%4fR0bND^`I z%ujTr%42=4JY9k8VXq616M>eq6;LYjb3A1zKatJ^CTg}m8F(ZB7gBvYkakNH`33Lr zGPcwN-4u|eQy6h2`iY<*vqQuIxBygDq8rDUOa~Phkn(G}crDyU4%`pO`T=$VC6k#W z6X9;T3Zr&lkWMtn0BniX?JV@^1q~7qb@S#Wa(n|p)Xl;MTu}s9#1%?S$H0XgxwI67 z@M3trObf3Q4Y|QQe_(V#Dv)7m2cmB3miSC&Ex)>?gaBDM*LAKg7MiC@B_K=)B87o& zbl|B#=LkdsmBCfAV4e}kcE-s?UZYqUa@8*WM&we$~cNkVz-lAx5d99uX1MiJWgOiphw6)l0Td9J;m>-n@Tvi=} zv>c@@bLnokhHAw%*30?yw&s|_mqrJ7 ztu&7=&Y~>qVxn5^0=DucNuMc3QQN^g!KCINVp23ddG4P^z1Dd$OtFCIt{i;z%NG?psmBJ7*I7EjvCca+)g52(_CmRE zm7ZIH&J!6UDmFm>;t^b))-g+!VEq{Z&N{4{Sj2+1d3pGMRb}3>lc)Gq$9|KMCvL&2 zw(XmH{@mA^{7uftczx?3Y0hr@BroSVpLN3WNM-VMTmFezj=JDtwzJMJXP%Q zPalu4R%TsrI)(4sowRo6rKZ=LX1#=)Bp!30!U6_i{`$z=agQupF-P6sZr430!}Q~dZgWHD0T&O|ISQ5**(}3+z0BnBkk4{saTJBxu4dMpBOv3f zD6i4C?VrF zr0C&zw@3F+r@T>g=V-4se`jLw8a8GSzp1hJx_m+rl-$~x z!X|9Vf)Mph`mmnmE6hZd7(h*huqIU~dTg$SP-JUI;mrL;%RYz1wv`sAQSPWJ)LEU2 zG%P6B-OrZR28!3rVZl8?TL3Q9z!Yq;Z^NDc}E- ziZGiNo0COmz3FoUDVomS3x$i-WV`!RX^SO`e}b9^H)HdHJU)bdWH9` z4#a|*z9&1qwnJcX8m3_!=)^p#1A)dmMXruQt~6$@;_Nq;Wi+2z>E4TNV#1d4cuOdI zEjM2U#H=sJU*Hp$7zdwTq10|U_$12P+LyE#hr*i^V|dlpCXV3QWq=2P&t;uO$5*MO;i};g}cf{ z>Q+U!e2W@fNZ%`pbV1C@8TORyvSJ*v!_gMsBj#9;h zfwk^BoMbFVDZE{&{kzw=Q1R)z;?dlKvA_~l2E0!dF_!M#$@gARR%i@#6pIk7Vy3RO zqT+YC)9j*6iu~o#C1w(e5fxf24qK^qD1ndNV8DjGaEw8iNi^sz9oa;nVca9sr`f9I z*m44D%bAc{Qt}=ymD^Ni`X%DNYWZXjMTZl=Ermpt?BZ9Jn+tQO3Rnli zR3zMO+0=}?W%pEbTm_Xy#=KoNENHp>ND?>kqh?mF8bc9x)(OISfj28|4-om5`@CZJqSM2#Xe)EI3xjh2^LnGm(3? z%4aKOaGC+5@;!5KWN!e~dF+_EDP}7tl7seAuQ9331L zq#4Ok)u7|%F$YctQjVmYcpU{rywCC>4&36#6CcuoJ|JGRiW1thH{Lr*dJ1E*-+5;%QqNZULeC8Z5Q-yP3<$(GdtJ=&kW)ldAPPgsDh_h-=Q&F#-F5}C zoQ3@34cS8&&V=@O0QWQzWRa95rU6#yF}&g(%_%T?Mi>_2gdv z6NB9Iy7IHnone4^3l*>@PNK??O|lC*_;J0h$F+LWqjDjEF|^x(eQ7l2j2#4zD6n-b z(pm+)g-P0?fY&OH6{q^lO~t4<7IUsH)`sLGCleXw--X+*_Rc+b#c9`7Vd>SSzg~4Uyeb;L z%KCWKbNq_H^02u3rL(v=q1B3C+8z%X?Ce^h7XUVTz^Plhd z*TFmhQ&YEZwY0RDn&P#q*YC4m@GOCsZ(&spX0P78jgF3X0`WFi$EoX0K;3|>9*{Oy z*78L0kK0_1%iTttgOs&x%`)3u7P3_Nav-bq)wcvpZw>aXv+m_*ZKjX zOHWS&@V0EJYg}Ax_G;fmFP6K#v%kOpMCShSlhpvVCNEzAnhVg@RK%8zW_D9AUjyf~ zaDn6Cxq3ikHR95HCr*Kf_Ehgy=;#5G6ppsXyBRV@~}xleq%` z26jUx!C>L1;d7!)FmMBa4{#dbH^5`h+PWOf?0~BJnGg*4>j9WatZ4xCB!E|-kpl|- zr3qp{QebNyH0=Q^DHyVQ-7O$%cB;A^><@rY9UuZg7hq}tOb`fE=+xn7y#PBv!VcuZ z0ONqj9!SCgPzqe_2&y(S&~%Om&@9%Z0MO zD_r6)2df8QG6C=<2msdX@B_020OY_T0LZ*?RtL(xi~y`r8B|4JFW5u?8xHb70SCYp z*iry#K7epwaS#BXoLdd%5U$YeK)nfU2+*zQVDkVBJAgd`Kz(IwI>0Uoy;I_y`=F~A ztSsE?Y{nhv0JXqELD@nO$ZH2Y3OYzZT+X$G*jPGM$r1;GfTDLIfMUR9VEzECGJxd* zFl}HAb`B!dfy|w0903di^aU7fW-aF5Twb~MHd{MEn5O_IiHttPD}0OoXO`gKsNIX) zOLejXE_*-e2I~IZ1u97Y9+Tftu{?gT{qCdwhiBOT&Jx(PS0j1cm*>`hSa<$kd(=2| zTbKK2^@9727oIoqj(hidl*eT@^JgH;pw|6>m)yHz*(vF3(`BC`pKQ7EU(`;6lotA_ z(A1Ph_oIe(%5=SMtTtYI{fofdHBZ3HOI9Zqdr@MFi2BK=!#O2p;N`Qw3x_aUGo}!66^QdZ{y$H zFX*;T&G#aGGIZ^-a=Dcu;D5a)tTT2SYK;QNRYjwamA*H zWmpIxAXi-GX&pxm58cSw+;=3fEU7QppFwyYhFKr}E*0qb-}Nu!*4^zXTSiwzpqiOy z*`?uCKaK!#h87u7S4rt%jz{G<3FpSpxO6+TE0HP(ec8)oHI8EYB!J zpFaCLD@!nXZs>~f$m1t!tac7jt~xLed`x4rJhhSGc@YZ@tfqs_n*6aY0^C-zw6E0v&YFI zIcE1Cud(fIM&^F)oXWY(7oE5EjBedK=S;&wYEW<)`{^yFtuwpBrl)|Z@t5U-!0oP- z>~4D5GrQp{cEi%!2G_LehSj!4FCKpMF5uw`jS#ZM${_BAk@a$R@^3>Mqb%Qz^zO`f zS-L*_%x|{6JM%6y6}v21hBV3MS|-7Qun|>|_s_C5YABgtw2~~DLi!7ZdPUzIRVus4 zxCe!8`3o#29|}q2TGf?SZP*}87*e?3Y+&!dZ#nU3ZgZ?EU>)lzinYBE!>_35Yb)dcd$Su7#0UqMhU zhu%n;8p7bCf$Vy>iVZ9J3 zlyiMjD=s6?4ReCOqLhcA!Yl zjvy_2zTq|)O(m`_mXS&nXqQGHQMCUBrUnKDY&oq6B!#pJ2opiULV5!)T0ii$#Z>Q} zq9YQanJ??!;lt&$P`^Fw30_Lxub~?wAB*Y?ecVHLk54c+V5t*Q>E`p1C z!r-~N$ws)Vt|| zw;<4zDj-?&HGn2rS!Uwa}Alvqo$_l8K= zo`B|ZsKE-s^6qfNg&76px(@mh%1Zv=p190D|nCuV~WsY-?;`p0;gPx>lOjUTD}{*oH4669ru6&15l4K z;dc677aUoLV{0Mgi*w8b57l5}8su~vNqWtDq+W#uYM&zAa$iA&W;^n>q5<|!(5pH z+FTr4$l4bmM18mSuh>&rmWN!5Y($ zgb;AO`H>`d87j$v!np^1nQ-+$-mg~qr?~lyP72OUH)9pt_V(V;L2_ZI;=Fz4iUNBH zX2PaTv2sH#sW-WY(B>pTMK{bQB3}+1+Leu|6YyL~+-w3X7|XeuQ)t#&7&c1z?2_W0 z1P8DMw>t^jNZ5>r8pttEDe}dKAoztQY%y70NZxvA?SSBHGj?lK+`%t!SHf#Lki7=t zLwh1HwOuM73eA>K|D4W^HYc!Pc}_#cO8aDxgvwiuV}f{s*{9AX5xz64dOAs2dS62?ZtL~dk6q>ijgeK+Y1r~1U z2zL-LkvY=*IBW0U8Y5|Ek;QoWa%H?qZJ4z(KK(ATgG>u%BXbx>N934+1QDf_WL0{9 zOpfjBL>J=e_KFIVFPYNpG*3C=%0vQ`m_uVmc1ndJFx3P~eO8g^M4ofow`8TP(uGwa zpLHyDdMtl@3~r51@r;ZMR8$-0P<9KPU{?v`OOSS7KlQ!D1$AO;HFhepVbefsMt&nE!ES+yU#!>py)pLb8Kon5+~L!#m7+i%2qGU2&O z*p*r9@;*$$g-4=K#$8LN=b-L5Y%PIj%Mp84n7stH#$lX?F__5sR>WXjj9BwvTO6s0 zK7OF*=z5mm7%o0rb?&T*WTtioAeEu4tNaP?T5{Ivhxc!@YMo_h{7+aqcn*v}n8{&Z z0$n44%q55q^Srwpeo_`XO) zzcSn9ip6v3oc&kYs;=1BUQQpr%;sJO57B>jhyTsz)qz&iQ+P9)BdAX$-rVe(SY$iN zU;q}Gc>jKU)7pz{_T-J`eRlQ%_KpC$0A&Hk1cG>WwsvuGaX^ms@_3V3A`s{U0&Mb+ z2Yfz%;>_vE%5uO;)z#I2vhJU00Av(u?l80enh=wln+y2n+O=yEU$2e8NueZwO90`@ z1VON1P zM1LP}SAc+kgei5U0NwNF4{(MuvRb)NvpTn> zqw@toD&UJi)v3B#*3sPsFe)aNVAGi=1f>;YbuBS`9#BYBPcPt-x*xZIvJfy>fF;YS zV*#zWy7~hr1~_ddk~q+%ZfPO+=gjn+Tv#*qOWH1vtOhb{CT|zndqR>66d9mK0HFY* zf_8Wf%*KNfIAhORT-UK?pz9nLctARX3!qbyAeiAc1{n7rlY?~)z+j+S1*jFkRVNX&(u4ihO&3`j>#0f^tAa_v*4uGk2JQV1v)t2d_SxkAlCg;U%CF+Wn`U-V zZ>b-^tVizlm*!T#zLVK=>2&x&1H*n0VAjV^zE8kk@B&~SkLs~fHTOvKv6h*o2f0Sj znY9E8&GHp-&4cssG5TsvoL|O&I(-pio*!R1l&tb zGm0~4%VF4Uc~jun-O0|fF5}45R1&y~gZMM6KJj9=FP>_u!_u%K?8_KQydc}RuhjqR z`=gYNeiGAzYj2QG7HrP8j!YEXgq=Oeh!MZd{c8%NuY%W+a+CzMi~H!)vO8f%P5n$s zDhVn!R?#aZW3AM-cW3KzOhgO7BHWwPnMkQ6F65!=IHavI{3Bv_akkC5jdQw~8Hi`# zg6w^)Yd^OqEO47H)=N3r9rJNrsMVg8RCc)KZHf$8wyojd%b20dtVj>NmGD}>c?{ms zKazU4?fD~X=$GC&|4sB4qn2WhYv%q6*44;epRVhT=yhnX#)!Y&neDdmxlc|2%rX&P z%haZH$w(LcNq$FIeJf3$amOqhm>v{YB5TDVd%FcU9b9GbENai#;;X}DlkXe|KF1OX$5x=jJOrgxdwuTaV7?s4 z!@{pfV=SZHr{#{86%ndO5%j5O*Q=^tf!>;hx~S3XJ@u?u;;}d7r0)Y?sDj`O6=wpU z4D?j@#zh9^mrbVRh?)(XLLN%SgA`EKm)daCsR|Owsdc}qs7T}S$!R3W_p6SeI>TrS zL_%AYDub^veLDg+%!NoniXzu>)MQMWpdHbYsc{Owjm%OLpxqjJ8p1KU)@VnmCvAGOB$vhTqZ)xfkT_S3`&*)tfPCw~i@?|8jDh=tI^1}0YZ ztu1%$qLEWoPo_E0@*A3OEiA@iTUM(;Jy=_~`zZ4zm3v*+MnUK$3gIQ`ERDe5utH~9 z@Ai68hK7hjZn*)E+b<*Zwzut1^ynJix8#5+OQa#Gz+OD@BzaTeu#*zRcYx_Jp#$$| zV&R$ZN3{C<+R`md@Ax*ew0v=qI+&mEA|Tqp!|&p;3}kli((_+Dkl77_C4bsC6X~ST z@Ok0Ff6Rtd(Q~W_jqwbUcg5$1k9&j`^T2qrbCPGv_&Wj9=y!X3@7vEhLVB}AgLGYZ zGI@K*8J}mptSy~iise~`eMd81>9tPZFXxEuSU5@T`^}NdMUx*5$Bi9j@!tIOELE24nkp5Hp@xSKsxF||M>%3a2d@Md|G?f}Ie6zBI)tfbh@9*VOVwc*B2;YdrFuwaW|tICex0Ft9r zI89It6+2kTlx+bK`0JfUJU*ilp(r_@dLrW+v4c?u<_LzvwzE+KMT{PGFS{dsnw>Gi z!UmhL^6rpVB$z&$8o z1yhXjpMJuYPq5vtz6anyJDb$pEQ1O0ykep;eh3lIUswMHv ziu!_E;E`Lf(i?G$!t9i(e|8FlCp!_z`xq|?3HHrs@GW}DFREfhTd_G{Txs@L5tM@N zZH6a&ATxGauX7PlRJMvkV~j!r7R6ivBLP|e80??I4}r>Mus+{t7EenOra4x8by~kf zbJjuS780ZnYjO&aTtZe(I?ab^Jy~j_>5K2?3|AaByPiF3R6sc3DcdEaH;pBxnQ?V0 zTy5q~Be3LzVa?Dt8dN$=*-I0+d zkzkedpd;8k5hKI$EEZq9=5EXq#a?X|nz%LVyi;XqWqA>s`+?4uwI4Y*+DYW#)nfPXILDJzb1%m2E5`tj{m`LQ=(@$9pPEYy~>S3^SDD#bKqbw=v-`?j6| zyTSHPktG5d1PV`Q?jdW$BxfEsh(NZ>kSkTF6?Ckv*Awn3*(!xJ2n6(ZP&4noiC4W%zBUpgDIAI{i^wJ6Usl;?5laN~M+p3y=f^+6g$JuC6Y? zDdV#Y02EdE``g*s6%-VJP~lWc64=0F&tDAi2?PcKQ+ar>CU3OVB_#q5nsHnY|9p^} zJL8jXwgZ5g8Egpm|7mS8KJ|7M!}@? z^7ywQz)Jv)-qf5Lyw`OiJJ-|3F5A;<>fE)F!4KfU{N{gCfxzel1o(%7IlTw%lL@h) z^8~1D^wr;hvcPEs2Q!PQH;<>{!ogr3pn}q+eo7}zppXE#jGf2?{=-n$ha1qSrfiXNFLx6z+rUe)yFn|Z%^gz4-MFjj6paMWcKwbed0+<8n0Z16Y4Im^4 z=J)^}fTurjL&~yn;J83iZot(Mu+j_`WfxfJ<3LTx*&HCT0J{JoGvLn#*mljqg-2(D zZ90WSUAmz{G(a3ShthR00(SunIUaF#k8u zSP!HY_!+@e9w5yDBV6K{3+M@0J+R#ewjbn9EFkRUH7x)$6&5mMeX_DK7UV2}4U06! zL17ahs@xesB5lT?m9C}(paNzNfD?eF|5{D|8L1g@`7bg7So&`fV(MqPhuz$Hg0PMQ zU>Wbl|I15E)t^UKUG4As|FeOv(W8vjrIzxUwQR7A7u``gnY;Q(%;W#b2Btpzn{DRY zrmwj_!|K0mpkXOF(1@qecKdZ1`M+hn`$~IlHQEk(8qD~lbu$+XXb%l{2zIKG!3{t= zSoQ7wibcEDJ++XMGFJrnTDDvVyi~8@eL$nPP2E(_hF&n|ndfUmuhii+ARGAkm&shm zAGTvAu`1f?3pw~UJmkg=!J6aiwnr-;%y*+CvO-^nt6fjtGP8`=vbrjMXA6IOs}Qx- z!nBplS`{@~*Cow%;jiZeKR~I8tdm-}iqop2hezGUTsxg*X zV_@Knq{jKtHpCQyz>|_4Epg)9dsExEZ#p%k{#y654LPeSI0!83`QfqX4&Tlf zb$<$UYX9`Jcse+Am9gDNNW0;1*(mvY1eh4KWhbq0-^sH5)U3O`d?gLcvfZNIx&Gc^ zuV-e!%7_r*noqxt+4OCuZ1W{D!)+U6Ua{B~>LqSwMCuWK&h*cBqEbiEzdF1FBlO|2Ce<+sWaBr6*svn@c;)ia@eb*I+p5)+8 z=9WM9j>IP3G_8(ic8p;kt;_tWYIY zv$n#uU$pan~oxWZuu%gdx@C%eC$JLQNo+@rq$VxU=ye3Jc-d`-V&^U#e zR`}>hJ&@%N6$`02hc~7yRR3q42 zu>v)`s9HQ(-N~BA!7l2Uinq6e~)NZy^N$$;X_8K z8M7J!Z=0}M503LAwf$05bY$P$2-hM?tON_nZ6il2!p+lUudE~Y1gsPC8LXFeE8--~#aa8DkzP!E|R&b&Sb>pdEe`nIn1#7hQO zn~STMD_HasG8pYLR5xpFLtogJ2)y>gYF4>O!UViCSs)oA`+T4E3y+vZSD+&fZQ3qO zQJSjovBTd)VUq)muDC^FTXt%f7K-FeKT&hZV#8mU5ovZfrr*;Vy z-D#*D2hGvIWA}xfG)RdMfY1iCM`=)8pE)%I_8>CWUB8h`D97|b_K_}S< zX@hZTwHqM3btHL{516;AV!;QR&JLrdC zXbU4Wq$N4PptapP?(x5ywfZk9eB zch7jAnP{H@nUG|JEUZW~HR0INk%3GKPh(EXCq<=cqlkhK)_W8fTAs#|QCvkhgC@96 z6}NUA+gBd}x^en~09_h#pdqzb9U-uDXsJ27U9*p6r%ln2-!{leX71k7{YykRO)jJ- zP1F>JZL-a|sIGD}h=c6StMv^CZ-}&SOus(vV$n!gj6w!bR`s3q&FvK4J(IjCN&b~~ zsLeMZv2mXrN_ZAuu)8I2gb_DwO)!?hYSN6iwny&!az4c8;UB?!MMRF=m{d{#f zLAGl6Iw8D76ei`V^Y72ah3$|X$nOg|Y{U;~DwaJf7LW^YZ}G8l2oWO4VM#V}h5ejd zSQ7tB9KA%f)X5rkktMrS7Rgkh4Q@CC6y9c198@n*tb|vOLI=l7ODc{c7msd}96eT% zwpg^^6}%ggz{H&BRqJeGRn6sim?FMH&7ZK zR2FP{RLQ-PgaO4(rimyLr-!%-3Xw;!l_<+)6o%FCkDiy;$sG;w%E*g{Z~H<-R*Ie{ zWibk$GpS@@#dA=EHiM$p6iE`o%92u_hRSMp%8R}NHEE6B0}jeH8C+hL8mCgf&i!4dLSv3LA0}?E9*5YVD_!UWs99 z9k|*%0ouU35E2V6!**y2U$lll_C_k6H$+S}JRX31IC!3`2m%13Fh|F&6Tpr_NFK$3 z&~GIhzmkr#5<+rl)8*AoUh?VUAmF!eZrIU$Qx&I)LNGn0+q!{7FFVOev%Tx;Glth_ zKGo52MqUV)j8(r<$M0xv4*Yoft-70@XA?^Z8%WMRd~x=SCcK0mCntvgXok$`z;>+jLz>|43zowO&ZFQ9j%Z`&wONRAqF~GFQ(>g@J7oCjDrol8 zg)Jyy2d(aBHsPQeI9)7y9eU`Rd!Tc}UexYD<;Q4H`vbncEAnoy*EDVG5XH1y{BC+` zBJOM~{*v6@vdtB4T6w5x^(C{7m-KlGm-KdC0&T(Z<+*Ow)t6URN37X-nfK)KimA(t z&Pz^qEf$~MT$5Uu)h$y4VII{N@gFW9-%uU!esj3ZSAMquWa4AwW+BQgjJbFv=_0-%?IOnGnwf?tOxR-%*;$39UY)D ze=Mwba&q3XWa-Sh)w8`l(`T9*Hh5gx-~l*qddC(Ji;XqZNFp$?t`A&e=2in5Djn;AQuqA;8jonT_EBCHi*!a zc+F6ZZXf1l!~%q-ZzK+|N}kWIBo(rtdJ)ycHziwA76z;jpdANpv*J@YV6W1{+Bw=x zaoE8Y^a_DX!Af6|ZjXX1D;|I`&@%-52T%_rYe01Y4zIwG7{D1X2WnYWIyk=q2VhF} z4B(4+)_WgJXUcq&Q6dUN6Ts^L@C9(8FnYdrxFb{>Sj~ZzLfBxEdsav!ssoD#kUfC7 z4A{h_L9Yz$?Lj~V(mJ8nlK>?TK$+S+MXUKp$(93xta;V?h!{j+jL;ZwFNV3kGZ2gm zT?N2c4j9ZUj3cD>#D+4XQ-mPh0)ZN!te_N+SZ{xze+Nc&Mh^z=yvkVWz~c^rIdB6v zAMh!fypZ$@!Dt`I;QC&H4rUO$0%T}ALi_!FWBkK5IX6dxtx~aY2m@DP0DXb!9mII^ znV17w6`c++3=GYI_XGbm1VNkyZu0=G0WbsGa)8a`<>y<3pgB0tY~^nmOHFwD?#$cE zwcSI4_=1B_x&vueD^={hapO_Wu~| z-tPcr?fA_N8XH^BmWsyXGr!#Xw>tQKH-5(j3#!RhiBN8RI%y$@?Clo+k!-GM|fe)V!rbI!Y8iq-}f!*a_C-@PrdnDnlQTwh$lX4r9Ibrc>8zed+nQfb04_V zS5z#V!`zM^nXeAY=H5Cl==J#gUEcPrr2EDkFIV=DWiU~lB~9CwOg3s_bAGwQy@#de z1kQLMo=8`kJ9rmV6@qx$LS#*<%mvnLp@VY{(?-0qF9W8m%YMuG=csQ)y+L7eIICCHQHfPA&kHQ} zgUC3mtKBNB4etBPxV@&v>vxVaozZQEG>KqOso&7TU?u0jiQ$|5{;A0}k~dx_8xg-I z*w+jAxOG&JNd*>*>Xr3P?qnPc@Hjo(RR5x{>7+9khEX?9Byff#Ao*jq`$j>c0ucmEiDW({Xn~I1(*CY*JBOBLj zKbBksJ1$sEwyf{G7c{wEb*{&ExLQ8$%MVY*g;Cwg8c-2G_p7|eO$v2(C2zRIQ*-ji zeXBe52KGuSup@CvqYTSkhn`L)axAXil-FFNw)oB}o3AZyhP%ZFiE>PJM^*Fl%sM3~ zLi{RU$6?uM|DvLJWTA;r#!oTvX6ohdQXr4E2R;wCS^w+l`z8%*!CdO`l$jspb-ZJxhu)8IB#Z^hJ zLitkYmE|=zYAhXAWlCAY-$;ZL*!Obpoyg4W7~_NpN~(~`6XJNLYa?i>@;zxVX&XeDSjQEOE;ufBb(;3Z8tjVAkkXv7bMXgq)GVmDBr(-#U2|+l=WSYQ`kV$ zbyWTWV-#vS^n>k4j-aQjl!Babd=*n^+pmJn$#^m|QBGb3(dYp?vk-$|hGIBWC?}Z0 z@R}0vm^D6GKf<|*YSM5?R$-l_?i~E&gW#yLBy57ek%9>nCR!kPi{*YdFbFkkV^tYDUo3e#wrGP0OWc!6+r(+VAEH#ON4L|NF}X=T&mhRf zXyH6>bT2wD_*vMhC1)VSKCI_9C8@JzD~Eah%;8NVdT2VlI~XEB5{fDSIh{M4&PXsO zPS=97=16l)O_Y+Nv4&t(YXLwi3`!JlSgV%8jZIfT?c_Ith z6a-5dLy_8G_%H9oQ87YB5h^Q=C{CdsqIgLl1qgyMu(A~MTorPlrSND`1Y99|%{9ehsdF-A4j zC=RlN=+g))l%&ppSF-TcYDr`|JR^bD$5U2vp)u?9O>~?E9iN|uQxHK+I%>y?vt@7> zx}@JP!|8%~4o^m+=mQ?diO{!<+P+nVXc-l4g6;~Y=t+{42`YFRZp9piBc$S8B$TvZ zii;rHz!5ckgl4tlY@mz!QLgS!bEWGV7o+-+~b>}KXWvifveyg#*dS~9Y&Ll(; zEWsz^W}P3;xO);kW|HUG7k%FwZ{>rMcqZ{9V|h#TR7iU8p*CF4IO|3h&H_qu@Q3gL?3vS#yw=^Rx zlV*t+p*SNGm2JamU)6IRjp3clm^VS_S8tV-VjwBZoTEp~U{N&740SFKXSf%tS4R}? zvS@m7dJ@P&nqb7uB6+GHVg$m998hQmja)pZK~Zy8u?$9*(DJ%D#hwg;0S&ekL89mU z<*QXJ35QYD7=ak&gswnGrnv~Wl`wrqia5v>D5J<(;x?^_)iXR(zVnM zOpLPPK8@z@E8*o-y7iT% zT~#$PIjARtD@@Rs5Y}$FGO{=fU2<)n&i za3nvK1=6bWko3OQhZfK=k{DvmH75TlcTC>ph&Z@3ASX{8PZ{v5xno+bW|}fg3`bBz zSQ&OAgcoI#sK|zJ97OqU`TIKvEUS8DdOVy-ur$W0ilHT3LWXaxq)%W&KgJB9sEf*Z z)O*lEDV{e0Z{|jAe^;O&%h4a8D4;kyK?SS*xRYF=YXbD?PTl%=9F(ix zg-LnLp=_o>s99Y;?&S0Uevj#4bqU4n6YloB92U302PQM1@vBGgwO7mSFE?F%xReZS z-5_+F$iR7)jB=rH(xHW+4Q)Kt+=A6ep*yTDE*=SPIA@D25JPu4+2#@okp|mh^`pb5 z_PjXmG5}HM7$==SoP5`qvjo^-eDLZM6h$ZrC@0(9YjUf^<4?4V%9y^qqwulW;B~7(HIS-5= zMnXfLsVA?mUXP84NT(*7FVu4&F!Q~V0V_xk{a}e6sa_zhyl^nyPE4v?Ey_eYGlA5E zisJAzSW&`*5DZck;8Zc_U5==#sopc*PHnOR5uGS) zXlJYE(kt8Ac$>Jm?CN$KTI;*3C-;ze#lIkB(QLI`mg{bZK=OJna;}Jjc^p z)YYA|wdZB0$)T!z?Jp&^$`(alc77N zbQc4DOfWO|@bEZ#v~;HC7$8l6s8f>rQ=2vdzD-Y0=el}mYirM3y!g1IYih4o#J}fZ zWoCv>j?SZh4+6Kx%nDN=5&>8VVDn2~AAr!ALEhVG6_woB%FU11!i1tO3Yq zYvmygeYGQ^KR$vvGCauPdnEEX4P`@R_GxV(hB!UyR)>;vO zVSse(-N~&D`8#|Wz^@Ugf@Nk`7@CNQDyXjt3&`)Kp)^2ofC~fHWCQU#07@%|u<^_q zS!g|AQdt>~127eJU}#2QfC^=j(m)f5Q$!3PZ%MC=uI~(X&cO*9Ai|oOCXlE4JNtqT zC%{)=nFo0);AUAX7w~Bf2t8ZdD{9hZt)&1N#}(=Gr)gf2)+!FT$1`!Yw^il%^RxSV z`zp?tf|RqC?jd7@MeyV8qg@RprD0T6cI#Pj3}3j}!528`L0>hRu4t>T*ie)HUriFc zUjR@EU=zGtm?zDDJ%{D%%$Jz)+;XOV=1{MGKl#6Fx$|tfS#kA>J?@qN>jq(HeAAL| z;5@3cN&BB=tSzAfmt69mp7CmPe*NEC?yiWBkC)^RTn_9^-}UcVntx+#om1QSU1p(I z#J~-5;mr;8TVZckxX=W*vQx=5H(i!WdGiMNSgp)^dsB71InTay(^0b$z?Pdjj8RIH z59IqmQ!M{vj#>_uv0B3mnqiav2RlwrNU^9%v7$?@Q}Vr6>+|2k*)rljfK>sPA?3q;XTR z^?|nC`I?tlv^eCN>xmrG(P4vxr7HD~Fw<9j6Tekrdy?vSpL;Uf?(ebprCu*w7pf0$ zDjGoCOIiE{EA#3599Qx_37u0-dZbmPZLB(iy5V-Ppj*7Fa(|E_o^^Abiil=Vsac!g zSaqOvBB&*zPns&v`Mg!+saU-ypI6mfdZJbJz}d~rue^gF4A$>WgGStGml92CbQn%-q$AU&3oMD|H-sFZ?Ef_Zv}b* zs;9cZyls(xS%TOZnj5~Gdf8mD?iOmEAGI&;tGv-E;0Cc*-peo-I6@j6!RtJ{yt;1m z1C7k`Uh_7^BA%*0^cII(-X-lhWN}kXH}3wa>B_?vq-7(HJ1a7(C}(bqb>uy4zP=8{ z$qn^OytW) zb8!+|k2y=1fUJpK{ePz`d|}{GPSLG*`8F1N-wOWd?D1L>yvQqIup+YhPt|+7_j`Hz z?6+9cWmRDHdALb!=bDSB+ctmxRNK+!c-?F@=zA_U-VgIipSn@3WvQB7D|L0b5LE>t zz+p7qFR$*9^d*HU)6zNe43@e`Qu7daH}Fvpff`smM3zZo247_lB zd9NP`oO_>Egm*W|=5WpV3X|Jdd5&g?)-rvb#SchK>;~rE6)!xG~`> zo2+Aq;>dgAMq1xmO@Juodi_%ESOO4Nz+M<_0&=WL;!+Hf*(6h6e(RZ#&+;G~UB|t` z7%k$bGzsPK@qGCd2uH$%hP)|X1izWfx7fK-cNN_UIN0!N_wSKiY>_)tFu|qsDomW~ zb5d3jN1NC}$fU607zKizR#wr7bjRvCaNCs(;cc>4!YPtMgC>X=UiPb{?rsP!S^N@_ z{XFwBKUI@<3Sq9hc_o3BwuDhlcI~^fR#B85wESTITAGdGR-WkdM%_BtT4Tck_Ul5j zm(=J-=1qz}m_QJ{z>6b{dY1|aix_n<0q(Beg^mgOre2QGvXuo&1lzW&x?B22EDau} z$*W6serH0;0gHd7)=T9gBkj9ihVlKDIev)H5tDXcF-Tx%#VT8vpwGgSP$_P6)*&3YjvfCF;l9|FD;qPA+=zrlRy2Zz$w1457c&+8%8iME(kcO=rVgr0k){tIxT8)A22%QkYQQmOShm9vyVK)Xc*&AZY6CV6Jik|^qxh!gcTG-taA)T?5Q^q`$&DG^5 z-Jq&y36XQH2Z+MME^6U#Tlwa`*wS`%0!=fM?B952V@(i&#lrtE4ka>>@(&P+mcG6n zV>+h0w&PX_(mM@fy&*2jT{8t1kg^iK6Vopv>GGcG#5UXqqKCRq*mEP^q0TZSY!oNo zl!-Pile6T}WpGqe>VybyO3O$halXajS;7O!bL|Iw;?W5Byi>qPhgPEB!-dcQTjgs01H2lpa+{IOwNx z$2endl`B+)hmaJx3P)a3Wpz%}k{s-%8%!}NrAeb*St>*+WX1@YL-Qi!68|iR)Y$|( z@uAVV;EdI$OD0)Ie{qlrQtp9v3Q>aB!a^rSumx7ge+G$LaUK1LmITN9$SE|bR{SWS z3J+1GM@4t}TXU$ZXc=a7h$g8bT`lOVtTCK8Xu%G5<8g6u<-)BYsJ%Ff3e}cZraJl6 z_Q%!QR}w53upAe!Bup4?TsFaiH?ax2wp3j-36&n7lvN#8&j~S&9S$LYW7io5{)KJ& zS_bEDxr$$nh_?UAIe4HZFUeHuqs4LAI1k5*^Fi^RCh7YWuIVw7b$N9Ww|AlnRW zgNag8lTVGB?YTRu2!`V!^m*4|kkbdmt>dscDL6Z)a!{k*q&dA}!@;Wf1ksBiHyIu$ zL8#C1>JULRiAS;Ke?m_4I&wEMc=37|L7jWHFYzp1iWmb}6v2KH1h`my8PEa<3Hg+- zpegKbu30;PKcRX4?F+oIc>h`fVh4fWe10&r^15dA%6kpvYYv)1=e!wFcOm|7*--CE9J7AIs&l3hi_EM29>*8^@(-$j6 zx6)5<%{5;NBpv;+q1Lx>ve7~zah2$@{Z5>4?BpvTJNdw8 zoH=?`?rcv_!K%G$URH^6uQtn{sW=eYqBqq-PRQA^Q+aE(hxbP1sD#*E)hK`B3cLCW zRWnC_XKSF{6<+1tbN2&Vo9|^ty!7zi*%mV85nJ8H+Sry@-8TKK?a+Zum{#iwoA#YM z+cWc8{wi&c>uk?Yy8I}xO-KGh$N$Y4Q$WrLBigvEEnBwi-o0n~^Xg=<%7OuwUZmTPitj)fF3Boz2dDNTtjn^ zQ_dD-1HKy=7+AK<9PlK6nb~-tKWK=qUcGwT67!jc#+kU-*)`^q^5BQ!wB*5z=t8Zf z`TF%v{q0>D8R;!8Ez>o}4;_km%+H@aRXLr`2U^FOk?*y~Y7!HZXLz4K0{oi|A49m-@fJMe*+y*AensG?+TioT|K`){xfTD z56E-o-d&I?4h;=XMb3{p*YeY6zKzU28vtxM`f^~igEI&*fBu?l&FdV;|QpMj>l&!Dp>*93dlR3yz2)cAt;gpRtD`< zP(%d`2bdTXWwWz|Li=RULd`A}fGk&rZnfPFG$_sBtd9dSToAwd2RJLKs)OJZ_#rPv zB+pArs4NEuFBMQ1l?j331>DI200d%^|2m-mF(80JkT!ys1po}oCDmqt1Pdn~W>Y8r zf0uLgRaKSle|h}x<=mgg7lo4-hvNRn5=m_+&<28%2c9jQzy7sE-uu1(h$gT^p0jK@ zGca$7{Awo6eaVlwkiYA{EwFXZSjGB;Qhf}kmRkHSw^%b_K4r9BzK16!c`<9xz7tES z8#IC5{_3wsR2Tgc8hkS5<0Dc9)&1?&E1#c>Ryv%6hc@KmNUpb}C+gZFbyu2Q@P3@$ z{Gh+DWNF;msi+8*Yayi-4#zTyx`yfd&O08uI`&=q)p{=EU2+TML2C`XB5KU(q_dB*iCv=(h6XO+UnPge5=3 zG0%&@6TjS=`OCRP{9B4zG7ZKp@z2(CG&Xb;9vWDT2ISZdHSJr!${)^P5RyeVaSC5q zd?MY8n4u#74Ok-WM#tZ;Q>Tg$6&Ib#!7LA_kN=b_Z7@ZNPCON0b!3_iEU5@_mbm>iW0tEH4^4qH}~&mjTkQ`6KiDe7-dyh zP_YO5S>s7zW|e9>vWww}E;EWc%`jGnoaC&U=U6=jC!U2K@UBND9MzYY3!EL#M^}8v zYWW*n&bc1u9lDJgpq>o4sf^XQkZAiuOuhM#JrH|b|MS;2n}Wu4bYni9k9XiOUU!J} zD_`&Lc|`iwHFC+SS_wD8!W3si7`JXfJF|`z@7I2|3#5!+idfzzb?Hj$vc0P))NNmC zvtH^1Ww7Q`M%Tlyjb3mJpT`f}F=@-AbBdb*ju51GbmB?}laG?s!=uq*4yE5B1CPi^uZ-Bw5B=xUDpR_(nNelbzoZlrRX)-W0NjZjm7l zv~D~VQ4JH`zA^0tjX%PaVleqxHmv&d?H|cq40u+Ys%#6T%E=7iJ+z+|F8OIh6AXvc zxhZPO($%E4N2wOyqif&#$#k42k zA$|ZuSW+apWuPqJh*OOpO5i8M(5%U?x&xJz#CRHF(!RoRBo&te!3vWVBj!uL!fLEk zT`k)fa;*%nqyFMS+4b&))5`qibGOKgWm&jky->g6Ny61$*g^Z)5O}Iq(Bopb-6%mj zuTp2H(5-1(B}YL-d(4YDzp~y>0MYDI<-J%Cw42QVYA~Xl*pX;2`OM1olh-0+>(*cx z-^;IeTF5Wdl2Qm=Qi8rTYaQ_j0=-f{Iyuf)ZnjTVqXs^mm6D)%EMtK!?YTMX*x(02 z%J!+c=5&7P%Lnd^06`7H>Z1J z15`u9GvkBY&~et`Ice}L3U3u+MWqx)bx2}^`f|f@&mlc}G|@Mh=o`0i7)HmL`a|$f zpVY8mn8Dzh8)MmSs4g>lD>odb@eh?V1A5_?&p3o4aKsuoD}Z>*RMY6=sdAQSp+j(& zwfoUt*b)n71*0oTfe<6nc{p`(Hv0HEwjn+(`$@WnFlI6s^+X|pTQJdtpp71yV^Cbt z{YgVGS)7UMhT(E(S6}*w7*<7b3(>$!J}4OsI*n4Y+X%K|S)6&TI@tE>>gew*R z)Am_n{I%*q{p5T|Trf6V5Y$F^-jGdEPdnGd)PI(555cev%+Er9v`5=|?^g&ZTvrBX za$=WD11&}H9tK7oU`F=B4}D=~FX9o0lIKj5f0-03`V|}VDkZ@YQ(gW3{7uhmf#=67Q>oo!(p}Hk^E?Lc1a(eq9UgkA)K@zTW@rl51l_4Qm$Ib@s%MTR0~W5(A|&xUfY1I zGRoNx2vv=+>tm5Cliza}r-b6lnvU8`lynUvasqfK9o;DiGUwtB`jyITh4>CaLS>k( zl=mz9I3pzUaXiiwEP1sb)s_?=DnE9FTJmr>c>68WpUmeB6 zvN|hONJ)w?8x9Sr)sy^A38+D^ zvpdKANfkCCyGWb5DA!jpC#1;PUa~Mffm3MwYe)GWzjE)6i&gl`&zdgIh7VuD^OD>x zrW!O}UbcIA$ZF?Fmx`tp3N4OW$}TV6Z9DV+NoaAcZdrBU^5aSOb$KPuedkXOwtP*% ze5md`3l>v)#p=0pk3>e*w#JOt)V-wG(2hD_(v;OtM!ys+peW;u~SFmliHSQ zx&L1eB^N|~ix5Rz7M04Q0@6F{%ADzF1q25GZ#E%**3`7Lv~*S?@zOWnzQPuycp#Gd z>sa0Cq|_Ob+)QzPp1Jw-UjNR{t_X|ee+L8trYqU9Wp<7I;>C+IGqV5|PB)!8d9vQk z#Ti720R3i;mxD#K>dNY=P3|+Ia{v#wZ}(chd^un;9tidT;AKX~*cs75Efv&0U$nMt z*x)gf$)BgY-a8+!w1L!c_SNfH&{B;E14K3tdZA%}6&oC!fn9QDa1g|NAnya29q|8K zud@15RxukMwHf4&*7lG2>9en%e0z9*$kq7>D6>ACm$FPY)Bx6-ABX0>e>Hu)9{VoX7_-qHit+%}u}>0O$Y`0+R9CU%Jre*#DijGxUzQUncXLqI=O=m0M4`en6Zz>@&8BsDz%AVFyr@EsseAR7TJ3K)q8 zNG|{!=0(uxo6P~c)n}K2&kVY!V5|+eT|heckeLk50j1h8QvX-xH0N>fp@hSL1_4_F zP>jxu0kA98p0~r?>+1&q2zU~3W`MZ_uqB{JfTp188tq|tBBBZ4B7ieMr_B*8(6s%= z1g_k$dQhwd2`NY>0qM!|IRKMETNVHzxG0<)83(iqIF;@c29ia(EehJNph7z@MA0@c zwekgk92?D^1#k|EqyMIOfaU<-ftYswu5W(G4E%It7F=@z{p9TQf2rT>&-q2O`9kUF z{MDZsPyWY8EkAC(gW&&~C~K~I8oKk1LO#8^dl}3D02AfW>5ihYN05emivGz|uVryAmX)_T*U&9fLL$!2Op&8d&3@ z{CwlFy!pt_-tE+$=S7dM5!x9GW$&v|-?Suj#o1fcZ~nY-gO|F4m(%bv^0}Ph%~bLZ zJrw=Dgr%)IvE=ugbgFlIrRQv*ZQ)u+`j3~8Q4E)jH!M?6Wh`a~>mJaU+*g@F?={)C z-TJ}hr)$2zYA49bK(X(nU+?=y)wX|IkN0f-s`ten)~B}>?A%0p1?i7+FqoXGY?!9> zcUFDz=1kL}ip2w7yk~3bmtea{-p<(m^+t-23*zC`{bDV<`1FU`)CBqZ1;Vf5qh$)s5g4r0xwbyHNk?g|!}nk5FG6l9u(mi&_X-j2k%)4K6WF0?__ z?f5y*p0)Fel;TswsL%zcH%Oh&TllM&~^(3ZcH^1ikY_BMPyv>1CEE_zb-`CDgdrC<8_ubv4#PAG%H5K3__@b=I&P2?~~HO;0G}6svC=mVZ$x{o$3m z9s#xoajzGT477tAv;~fGO#jvE@%j~F0@XRdQKQL7E!@h@tyzZ50X3kDmP%vaCFJKrRPfqJR zo%! zk0XC3*R2ZBP~eOQba(BSrBheBZ|0u3St68WOdi3ufCLYu4<-ln|4@H$d1 zH8V6R+iBdz3;BFfVVmq`pJoz4AEiMwq1aA4uMp`I>VCu8h}J*`_v}6H8zfd>36MB0 z1g~~BcW?qBW|(yGIC>L(RR=H1uNLV$Lbp!RQF)F~*NPm!_lGA1ZNEkKQSY;3NslPU zynUNGw~!)R~JOtR%|C54q!T^ATP_$29rG`>gO8`|(hZ`x*9sr@~kaN14fRVv?N_@vHm z8NZ*WGlGsx5e)uvgLa%pRBLDu3^KY;%LEO3r1I$(&M-SfIAr{#f-A3sh)98S_Ldf8 z3|PU5fuknV;nBmQyi2p%Hte!IJSCA;R=1Ok#-nDV?`SKONfNT|)_~9Pwfr zeNxHn`w=~VwxJsBDrIslLd9s%%n+n78-1uHdK#hnwkx~7AzU6yBhU+P&V66^O~#Y% zBe|N)F7g$nYLQc3hw~mJlC>|SBGURdGom>LfZe$EeK^+-@Q+MHO)b)Zfqy!-UH^yD zce=_hA)+OQ9i*`9ho}i-)TNGcKHxvv4w2dL|bVSh@FW0yIyAUCR_xMuSlTPrI z!Z+M-qEw1K8mT9xuK$43W1+h+9&kl%V@G{sq#5%nw*ST;0tX|rAgUzNM6iCG3;%G1 zH>W}~5^l(Io&h6jP8hc=iyN3hS-?1?DTC>z3r4!V|IAE@%&xzt@xUj1lLY1ny{ZMk^!bQBlBJ3Gi z>b5bObV6GD_DNclwlo8=B-pSL4Es_EZ>dklsB)% zx^W)KF>j$w-0oA+Gg)!OI*JVx`Ar6QGxJ5m2gjjYPb`1e5*4Qpk#;h!8WuTWlyTEG z-z^p8#pk=(Zuk3;^o`5QB1Wa$curZKmHH2-@Plu@`SXky%i^KhwVbXBITm04s`OzKfC7oFj8Wn9QaErJ^pD z^~D#&h)@dC@SN+Ek8InW)Uf;T|ygFuSDP zH_?d!J3}SkWQa=}s=+LE9iT8PQ#Vdff3p%C`w!Y^Y+rp9XOBT9EG{0(8n!L{#wvAj z#Lv(Xqo&etT%5=knsr0eFs@4-78wWN7hVA2ehk4++m0R#p~mKvv#*wmIJs1`f;Z7# za7v9pmBLyKzNwIRnVcDuLn*2(pG3>tJSiW`5j`$}KcOFd)yw6F(k>Qc&W;Eis9tEJ<Fb^rMoy81WP)yfv-eekyvKJ070k4GvS2 z%JI+SYD!KY`)ZBMLC^wjWkC7yqLsC+191yvMSnF4M7Bag?y=Jv$3boM013j2Av>%l zR4;$bwl*W7f`-)^2-5C-jK_bfB{r9LyX6te@rDd|OoM)@;)EIRUXqsvG#rAb%jf9; zX`~<3PLizZN7WJ__Mq~P)tZW6!_X7swiW8l$Gx^!KfGFI!Z@^ER^Y#b`dd)oT1O!W zbL8(PwN|ERO88V7emtajr)Hhmj@qmNXoWae*|e0An`(|F!3@Nl1?}SIMa{YA`(B9$ zGukE)G{+Ml<|y~x0KthHP4~(B)r+&k;!jpI`d4jd=T>HmHj31S&J^a3@VKUZ766Y*|+$EHC z8io3gAVOnier4XWv8wz}r#hP}f78!hP2l0Q#jriLUfVfcQ-X6i9kH7cO&8(DHS$hv zIGfnKeemNME5;#r38;c2L@OZ{ENln{ zZWs-3wkC3V1CCVPVkLsfQrMgUn@eG`2;85xkXemE?icy;=YYPv-5pftpa8p8u-v(6 zBW#8e%p{fU1Fbqzp>gMhU7t>M?VvcJi05ZGv9nD_3>i-FcSC9Me?W?29Ou9Z$Ic6H zS9>!WPn)5LK~Je)QzMrPo4EU0dYmc@vOCL=HWvCv|Mh~Onk!3Kkopy0z7Wm;eW!x8DOpN3j0aUfvFe$ z^JkMH5g_4tN=?c4^6~=X3$wh28o;`1%q#)K0=S*+x&2~y;7nD~OhGn)%~~@Pz_E{G zlP?8@0Rjbgl0y+;fN3WM^Ro)G^K#O(+3P(3WkHHL-()?1HWm=<@3Bxbb3n64tnG)2 zOCR>$2QX`8YTj|;>{bWopB*j0UNbvCyYOXpi1%e4V!?6bvnvL4+9_!v^6V$N_DwJuVr} z4=?~Y1!!4Z))W+q0S>+7OqHRwfCT|{g5+`Jp+wV+$^)Sz(A0oIJiw?Rr<4?n0UrZ) z1@af6Z47|vd4bE53IM%89|On~z#||>S!fMNL;+;$s89h61B|xNF#(3o;hGwNjDQXS z4uTG>7nKf}l&V7oa0`+_K(FA2(aJf@TAf2Sq=7V4#*1bG#06m_;8H-X_AGmFvIqzk zkTjTX0IVxBHw4rPz#Lpl3d8yV;{(E$6mw!ZT$z9T_=|SHw1AC)y9ab>0ipu52W$gG5mp=lm2LLMxtpT8FVHo5LJT@xeQl~}?4k(Mw6b;SAfZxIE z0MLO26b~@p+E5X=c;+Klf9+_7KR|83>@wFO^r-hEuZso3h^|1$0QE_bj02`^ht|MmaY6`F4vuehXo-|SZN z^MAFUovhyM%Y;9V(EeLj0NdREg_rZ|3gy9F#yjsH@%>RpKe8ZuVWik|{8p~AAMd#R z-REtW{`sTAvRA>}0NJbUZrx(S=!i*G%~M!+M0@#V5MJ(${5HM%E=NH%X82iw)*+Rr zg5xbmHg&cCXrHJ}?p`x~>+PeCIOg%|>$5Wc(!%DFqPsfBzI&C#%`F=CA5mP4xHRo4 zbe8^By|E5EzU9WO=MS7?TgBeJSz-e-9$sClj4ayQt*A8}G#_4)|8nqMK`3CvDVG`ZBFj0MkzTe3#8{?%bZCA1KbC~3O z9I6&Y`JpIF5gk%dIGPYtg*!K3RD%&a%4_fmA;z%cV2Dwb7Im;uC~#e)R)7%I^V*GPqt_dN%>qTI&}8~v1wx%FUaZV${rS*d z%lS64>WRQrXg5+J47A&_7kqxvuB=6B30+rw}|Kf@S-iwKXh? z_O@-hlT1vYB`xI9yP+`_1If4Fba?zdyw>_ABTR@TcnJIYpSZ29p;O3Sdug*3j6(OC zeLNX$4!{2h0*(h$6Ubs+uapMf(Ml*7s!5%6Lbgab( zSKam}nBRc#1WPB-1RXMXeo}skAd0v_o1n7=)6EPrI^oFrfR`>)2e7WFwa&>F+I;GazSMj2QF^TL-@^4~S&|zs@jUAzk;-TrFvV(?1Yo zp9ni}N_Y<1q9}-lk+mfloX!5ZOaBFNVfLj3TWX3e5pZm$T75?!On1u3o!)QzOQF~$c0!1+l8w%xJO&rU2 zZ4%(^6Yn98mrg9-g&N7m2}m}wE?@dnj>)Sk^CUao(>;fwG#YIGOnfJSwoh!}r%TFS zfykd2akOL8LNlS}HxV0_zL65<&+P&rEUAkPljw}X&yFJmNDLo$TR~P8!?6o{bZsDU zIms!AAg%g+>PZ&mQy7GoVRDQME1{Tm6ob-!5|c7JS36J;$nb&j{j*uT6N^|GcWyks z_u{OO8c!-RPV*94XFf<$eoCQ(GQ#y?xr`BlVkHErFWLknLsmJTaqYrFSCB_>{ z%ODF9obQc3zO(NakIq}6p0<8Gf&3`g+Ba2?h%AJX{s>0b0N3Lf=D>vvpBZ`5APp?| zrZFTAMmtEb`*_N6BC>!TV?l$ue9&18`ujPynFS-Pluc5^oSQKzhC?`khHcP36Kv;m zJR*%A6YvyM1NlMFKhL2t2(p~Z3e>vu|50`3;ZW~?|NqQ_v1G=+BqlpalOsl{hQyFE zZ9>~rvL%M>+ybWZ2bF3SyYmF-hV%#6wx7JcgkYyBr){b#GGzZ7g1J0J+W|*{abv{9YFkdeG`_(+nLys>B1YE6q@C;|PO*|r_z^ZSfr^DkmI{v44jxf# zMtl0P^0eHAaoJ)0I5HQ574B1D2S2S(e3s>ZGY-wUBaL?yqz!J%bv0)<2H@psc#uPX z@v}bFAEB3E{v>42ibGnrVFg-PGUdP@LAe#2AOa01M~l=D;TuXafAKL@0|og~BG)G` zB{pT{D}*3Pn!1*EK9;qWiA(L?uTw@+4=$Vz%F)fv(Q7DlVPIxSINMn!-cgutq=OdJ zak7;qd1~x}g_2ZCmVZcp(FD6Nx2Z6x)PH9!BFD`$={~yZO~Up8uA?_b4hfwsE!KLI z<=0<)a4$Yo3v0r}d5VI)uMXju$VgtudJ$=&EwsmET;BXSf> z&o*psw*L*;f*S!zx?RMLf&#Y8VrLnlF+P%6YoQp0_7dYDigQZ|L%3~PzL1cE-Fw92`mMB{W%nGBW z(x4qZr&nrXi7ez(1KUgM^g{aS_TbZJqgYUxdcVJhrBG+Z2k{Wm;bL^Ou(|@|PzXX~ zrfm*6Jrfj}Br1{G0?b%rDEVE7?5{Tt-kV3@fEV&pK<% zI-{?9mg;vpq^0(^5CV;Ps^47FS#jywi;}M8Fmih7N{B#DQN?2Z zWkbcvRo5@8|8=>U&QW@}&d}`u8uUc|@-5>l%gY7jkW-o8xJCAEpBm=kEI!y1}I(4Ev$JETp$!Tic+Nt~uZEbC+6rH|~-URz*cgUP38D(t?$22nsWf{8WK1_hDCPN>CP^I zx5bOCR$AD;%E*0n`CMLJF5p}3rY+&&;l{?sGn}MTCu{8NY(cFAe4A#4&%AkomXs9d zM@9jg0sKw>_4di*heJKR{f%?`4IoJ7)9FBTfPY0r#g)#EGb6ukmi{sQsV^iXv^k8G zykX1piW)#Wm`b05#)|&AR3cR1z+peGqxB`kf3*K2=#&#hrC)M#M|*qqVf&%&Ch*?v zlQkoag6R*v&(S9@CccmSy!!~;n4s{LIFbOsfPH|Td}!MG%8pP;3Q0PEIshPmENKiA z^fv&YL02DOLco$a#d1Ul%mq*f)>J6poZEHS(G9^paB>2CiHe$m0O#btC_P{_*uVqp zCAdYw8yaPclEA(RFczjj25OlT?`{i#0-J28HANgK?1a8h06c)KbCFwsi2$IWv=l;p zn>-ywMgDs|8G{w|&{GO~2w-T9@|@fF1~m{y{GiJeKoJa}&^syuH!Fz>nRRtO3HJK!m_%kZpv`g)nsnEJ6VC!S+KFLme;{oTLD60J92s0&t+@OekQe^uAaU zNe9*h#uJ6`0QmszzzPelT=416$+BM_0cAqHDR^3;lNBHkx?SfYiLl)VqZk+30hxgw zp@!7amq7#HF4VMw%@rWh)^)C074o4_0}G@GqwIj5Fiat_QUW(Dm|&q=6|A=)u!3$m z@y|{ka2=?WbK)dG9jKZUb9FcXex<}eoh;Fg0uVi{*w^8Ch)i)7q(3Xwdpi55IFYll4%@wWu+I(f;DZh1>&aHiJ z>3^DRI%^%__fXmR)J4u*Jn_cufEp<{ltfk%AlM#Sg z9RB?0J2qak`DNIL!axHhZQDTzQW;Z7xc*>GehSo+?qPTb4R2>*P1sKJ^ooNF<(4ri z3)5Ew?YWme|31`{8mu4KF5jvlV9ta6R1(H~FPDbVp)m9!>GVs)JWspN#x8crQWs6b zpIJ0HnT;t(j*6xPpH88;YC zvRY;EWC5u@(|dOLnFgpQeN(06&p2J6(CX1}x=D7?(9VthJVeQO6G{$rij+mpoKQC{ z?<;EaK5%ebU~;t!No&hS9CnM)fgz_(;(p-nE+Ls-eckl+`{qC!Oe=C?FWk;s)VEmI zFV}4ds~oxwTIK3*xNYGYS%TKpCua7ApH*j&geA9Y6L;)!CD0}J^*a35278855WKP8 zioNs9>y+N-m<%BqsK$a0t3TEiexqa%*5M29rcy?R4slc!)W02wejGaTOy6DQP4KFu z!n66~ZvzLCv0IxLJogFQxiPLb0<(8bc4h3FLQIdcTs7{Sa!+ zUXXaGgkQsawfu^?Mp728seUK7f=m-xf1lJ5Feom$Viv|4Nn* zj|o;Y6c#L|ljY@vZa6%J_{T-tCrgBxGIOP=l5rVW1@`#mL|kagR8%9;SH-dLNkM%1 zqE*4G`Y&PCD%f(kvP>CINveFV@#ztM3gS79N#)QmrX*ygGrE40hy9*cX4+V%(MJV1 z&y?3j3zn&S^KqVP{`yAZ4#f99H_cE}XdT(vqpNSCeJ-I>~T!w_?kxzK+9fV5Z^- zY{DWWRbE$s&APMv}!Uk7Qw1Lk*^k=z2ev9lz%AW1OMb4=Jj2YX$RI zD(U8v{brpcb-|&GhqRu;4TFwxf>eVkF?8?T#nM=lgse(^GA~iN&XSWd;vBBm4!+dzzoCZ_znF)vkCaGTt|>t@+;_79wT`QOtO z*emuZ8#l-wltZxY!jN2hk|GPcoxz@^s4f)aZCH^{129r%DCm2Td9egFNm zzLFq00U|qFNL(YvKhH>p{q$pmj8R!cJ1%;Eme(n}G~pVm<*ac%7Ar4t#5MWaV6BH%LO*rYMpg~&L<@CgZHXog{kNXhk>PjUIV z_S~=C`R-IqY7n^<#l@*J>wGNaepul_1-_WE4$d-ti;~|CGC(NStG(E-%Q+8301!x~wrGwK&fY=ib^WtL0 zc{04xh2-!h0<0SQXi-zy(x8lABD{eR>q3s5$HJAyX4`V(RFRSa?Rd{|;!ZLqbreUY z;DdFJqn8_wj=2y`;)@Vw7=-7ZIH=xv!!y4o!|f`zMG)Go9NwOmR<4uzREPJi{phyO zSU*DWZmQ}C7iUJp8(%`E>v+FdI5$R|gZQwG0Q>MwMQJyuBHru4Xo)Vjz`l+%uk7fE zB$Y;$32w+gEQ>5>K;mS{uEE*&h6_6{wk%ILI>T5NGzSCr>W zA>IjQk+bUJJx)!!1SeS{m9f}AC^#A!b748ohL)(n#bYJ7#%s}Lv_x)g*_DR6f-m){ z!L`Z`9OJRW_m@X*Ct(($f^)jGsEFmoo7pD^vqL=}c#)Sw_Y-2n!n?7s?;b>MK=6nF zev5F33#t%<+MibE-GaxgbZ>Xc0jQSR)qBg@q&2(6k>tXKTKs8|$1rFNZZhewob0 zSwUAZE#R&e){2X>U4d~N5!D->J$k&0yIz7AQ1EL=Sm#BJYlOJAZu~E1Ev*G{6ynrh z%iJu#V(D>Nj~epZE?^1oDno?#87qD6j$2P^+WD~T!1XJe>A?ZZiBN;%K3Uq;98NdC z`lkn48z-#@C-5RC&))XCcDaGXBwRGvbB%DU@>Gl9&okF*{1}|XYc%t#M^-c!Z0Bd( z5Tu@ESWILsD8F8KoKdxXV|E=;ym zZ@u>eLqn(E^}!UztK=jgOz^c1Ha5<5bWEqAJRVO;Ny%>Uk_VL)yX+jN)iq~sw6uhT z-n-ZCLUjzWH2?Ch@52YQ4+O-P7HCRs9~~P04%M=E@Ams`v9Yn8Gu{3iiZL{P_2k89 zZq`iGRiKfdot;1?qcDg80Xq1srn!~&o_FE^7QMT_50BRlHC2*07mJ*uDEcl0ZL+9S zf>$DiLfTQ6*88FxB7+d#Gy5HG(aS2QY=LZOH<8Mfg8kk5tH*R<4=C^R5c=>x%qmQcwiJ>X(4 zj|cWwreAkx2%D+f3BF*^K`BZ!nvgBl6*6_B-t~w*oI@!#BoI2KIsDFdeIrw-#8b(t zk**$)FsDCCeQ1N`WN89Z8@OgdJoH6Mg3*L`Hzm4EfXSwo;$mw^dUZ#ddcu}`Z?6a@ z>w!)AHGSI9`P#=m7sdc02AD4{W}8x}V!!Uj+?tFM?nsYF)L1Oa56TUz@r>Hh)6)lR z2}t?<%g|zgPS6wK{o)^M?8x_@L-2G0Iy68hJVgAfD)#ro2j|kUrAyE2YnGDwjkHjc zO*+?E#>f7DbZ=cf*;lIjswaC$X6WPosbBvLWGj^>tr4@b~vatlT%NLwCC{?O|QNVNl}22 zjEtU3Y#eH$ZA?S;NfV2xb>Fvb zwVa-iQ!XF>IiMnG)Zw(I7F~rV@7dqgUz%)sraoJ{myPFpKx`h-;D|obN}L&~1S+`& zN^*3~U(W;2p%6pKBD0C53hK@>=^1nC;&Al-6ovWZY#OrdoFD0&&2!5k!Tl6+DbAeF z^*@82(M6nONZJC6It^v|f=k^2i*$%MzNA2L6QOZ0=lG_e>hPZ0vthfpQUNjl5D2Pj zMzGQX_DNsC_uEq&PFL)(+YvWE3csycKir<{>a%IuZb;zerSxj6hA-!}o}%`?+~a|R z3jS|d#7wKmb*?UYZFmDJ6Q`=FCjR-b`jhtxF3ae3=plMZFu5H9m;AC*w`A7uyt{L8 z=;jc6v-7s}E7KK}eUinCf4`W2_|sM=+s&XZDjpneRdz;%3|0R_2S?w??$nS`DXsoC z`j?5$GSyDGGW`EVBTr$_ysj1RTJvXaw;2o%x~=@O5uemGOic%% zm>tAKrS7}K;&8NWT=}pq_3kXQW5q-@X5I*{eMpj-xj=7kOwcd<20k0F&rMTnmKyw^ zNb;tuF=|vNta==6wO{UfExBsk82z&HaxuqHyGGxZ$yP2(DnON9;5vSo|6Fa$_P6|d zjhv2;Q^~9f5%Cu)?7HxiJC?X!WfnJUu&6Ud-j9@GyuBKSNPl3pX`f6Tg?I;_l+`ou z3zlyC^D$QC(y9#-WYyoNTVHtS7~^@59oYoMl@oQjB(#lhebl zWU8FomvYlcZZldNDVNInsQ0l=sBdSx>`kFqu}X{|W<{(vrtO#Qb7+@Jucm)}Mobz^ zC?E1!mO8nI$jszDbgxBLIrkQ*QT`GRcP_IVyRlp2W1IdcE5b4BaDmLoHUr&yH%FWG zVWjYh)*S1*^0Ma(G>zZjr@zIlR>%vNpG@nS8Xa4SJUM_S`b+P>_guQlYPukK_Qsuo zWGQv6<1lA;#p|C<_Ed)r5l5EjeOx%3DeXM8BQpJuqz}4UW?d_jBe@-pAFS%eA8x)K zfkxf@VC^>kxOIFt2RHpuCsy#_`scsn2DclyUA!**UA;#>w)rnzc1xGeF8sW1oB@8U z_GI{Z=7}+T{ZZ6ha?}3NNG#r`&H7!-5rZVwnI*S6S1n1s@F_o}@{hLzzdJ9lP8FnT zsFS;FeOgt97Lrivj=ndZm)KW!aIh5G1CIdYw9LtZj=yg`mLpEB&f%umE*i&Fj3wEd zEScC7NXF#{&}0?3X)lN?f5tz(T-UHZ#drzdK&feE-*BZEy(M?+N6hY9e+^eh-riT< z+7|u`#qBtl{HOTi&cM;0^A`#ZRnfk_z8F6{I>i;BWC>sTgy+WA_nnqExb{Z!}({eo)Re=8kOi5d0;) zk-zRAFk=!Q%Z6=v9Wc$n4~`!A+blG*)L#iH4hElo>8ADL_U>fOCI^Q9~j^OM{=kPM<~7i8f@+r4kH09Yn_vmBe^m zTC#3QFlEp)%p0#L!m2XkgGPhgB)f}d0|FO_F}5OzuM#c1qcfZK?{wWCRF7Fr%~qcmkNFSwy3Xoeqd#=zIP2BmiI?dnF2sLZu|rWG~lH81FIde(?{*xS0iX;Rn( ziP_Vgnm)SwrFOoGT!Dld`IB0(cUwVYb3|8t_` zDmCOTZRXDF;woepsOWHC(X;T`+^}x6K&8u5Q=Ti|P&nVB@PR*<9M3h&E|Li@YTr_5 z)Q~&g9lXH8(|WvUomP?ItVPk)xOL0A3M{V|$*3IF=~}n)^HJsOqt3wv*GCGhM#+_0qB`;`OR6*AJ`=u3Rzh`Fyfz5=i1Uemc^Y!(~Gqsq~ z(rgLxFLZL^@yeW?U8Xm$)6<(DqpLSlkoEAvBM_Hnsw&~ifAQkQl%;87!TbRE~j8FP~C~ERqd%lhB%$v7Updc++>=LFk%* zw#4VXqaXT4@3zC;|KeRY+?pW3gjh4c?ly(jw$Tg%$p_9}a1Rb{V!%ZU9zqaDl<*{d znt5ebJ>31U$vwBvHpqtUZqMZ|l1*{2i~!euR%Jaz%RuabH3gC;lc0c7V6S_mr@OL3 z2p2f`1L2Nu)VH#M3>tyrX-~ePxcE9@|-m4r3 z2w`pK0!w$EF6xnnWUwv5I)aqN2F-e4p*=%O;oJ&&&Q0*- zp>Wf8zZiil-<+((4<+}A#r)9Txoi9k3nuU&2?&_7mzo5Ov)A$w5Db_A=XTUfZi+W` z=Nr?Pll9=xhx;E`0>mlUMK`xIhxnYWhdS63i!GI)yak39#CEyBF(U*Lm<;C{PoOt* zZaLyy2+FF^HdhCx0zc!NeUKIe0vJF8BeEOfAg$nm8rfX2@w8o?0{}P)-70cy++CKQ7Gv9A% zUEx`uJaNsxU6^e-C#0vce6Os&4`=?|&cfoOE@dlT%lFQ0hreB?adx%Qjz_NUsi)-& z+cJ+c-6KmL-nip8?txZ%g4mSfi&EW-YTS?NIyfJBva#)t0mIer_S|{|Xa4KhOPYlT zs3XdYmqre}x@_d8Ww`z%)#9>l)9}a6qgq>cw##dZR>bIK@A;S-{nc)--shdV4_QV( zivJ15C3Q+TPKq_j?^7nny5(Ngr=0G*Bk70j@TarP9%GSw6xu3Jln8|>a_=NUdE7UO z!M@<%X74%by7u!`oQFthG-9t1Q6y({VsZ9LjXQ&Lx7L5ivFiWC*&{P7OjR&d_fJ(& zQmT2Y>{8SHp@1gawN>4vk3mv&;)$J{^n0lynVxCQbnX`K;Qi~@P2EE#-Qr9Vn55WBjrLYk=QL+tGu2*>t|Nm z_$r|xV0#ZcMFyutbHeVk-YC*o2fgaJ{QF|2`dXB==j#>GyX*t=R&+Cvi#QSGi_=~G z<3pDpyTTUU;tkusT~L&k3svbmmY%DAx5^K9ox zH^X)~D{^8Nt1XwAA56N0U$|(=Eycid5&IpEUEQyw{FSy(QI#BGb4iyH5~1WULhr4a z-(iJb+3x#F;-z7x&ZH@9<{?&>hV&EC@eLQ^Q|56Wczk~3X}?~hYIaDHBGav`aIWi~ zDKoWvk=Zoy#JUx*v#@r58D3>Yv&c#Arlks=w+AY-&p3(W+Mby`828$+=jiOWvA>;8 zyuByqEjWnaY+unud`qR`w<_>cBke0zi(ZIoSo4{PocEnmRPEU@vu|f6JS8^9)a-Bdxpm9_$CT@PjrTI@ z8iXw}i82fBoFI+NEA9Cu&h*;2Y2MVwG}`k|0c{gse`xBmEKE&irbgB^rXKX`tGW}E z>D`s?H;pJU*CdE_M7g!LwN8)6@SQYFDuys%L=SY_S1#)(NuA|psu(gzFQ29RYAfwQ z7H;Mm@FbiTwQ7a0nZ+kU_oq{ob}JtHc~`qf5c`K-R&CgS1>;JEh9-wms+kJGUD`^F z7L^;ARbO2my1po-J)yDj`&CD&Q$gIhQwG!BZmUXe5&bV3>EC=3{kP{LV!}|G{4~{0 zZPckCxT>jVILmDnYcVOgFHK&BdAE80`TQi#_5~)xqXFyg7HH)%@g|56|5GLWK--G6 zVIBhI{aB1A+d#*7@!fHBBi2Iv@jZz`y>s{kkwk#)5mbtKF-+v(61x|&;_eS)QdCEb z-l@!*WAHAO!#Huz$CK&T9Q_dlDMm0lan0&@)=vVS)~7>2NFn+uzDJw>x_rS-O_{{5 z2t)|;NbEmxu(r{;;}wOt__^X;qG>L9KtbrR%7%e8^4JjfYbW$?Y?xe?|CVS<*|R`zpaW0l4kPN*248&KT29P6`20-Tw@2Pdt4SB~RoT-r zCL85isuqV`t(v}a?Lzbojnxry%qe-j;>-`nZhhVU@c0$8!p!9#hGRMQY>DBZ+=ojm zzjt4Z=^p89`WAs+OniJXO}{T@@uk<73f_M-8q4w;{p*+)v44fZ#24<&*L63h`e#3m zK3#Hqc685Q(_fFE27iVh9KYi=HFyf0RJeG1thHcz_)g69$m-db+ZB`EUs*l%EHa=a4yx%trPNvUJE;Lo%|qBcnqr+;Mg= z18<)BQZ8edo3ezQuEq_sapTa`)K8+($Q&ecBPXP$QD^}(*#G@N zX=b`i(lF~_^cc}blw5x8pe>c1Pd(BY z?DE&dTXLxl)RfkN!!Lc%Jnihm-M(MP@+Jnd|LXMploj#2G`&Zf-Di%z=*%B5&;Q)) zyNh?khF0)>8>c?5pln%cm$&LyYt7eZu z>q--HuBDvU3cVZTTW~G(S~pRb9&gM&L}4Lifkj=f;t3A<#nDH4`eWIzBgnJt2x2CZ zSsHhw^q|PD@K|~*w<87n48f3N9qkW%tBr{pC^(^=U3@hf-%3;=M;mJ)G1S(h!%4k;se6AE@a_s~8!ta29~i$oD< zSQ7?z9_4_(cF8J2q*W$y69Pdyu1-6iCWwq}j%X|4ZF2A(dBs|8hBX$150^NNQ!qvn zyj5mdq)zH_3*Ql0Y`P9sj*QbQb$U4#GeXA6u}e+F$XSO{^{%q@sKep@`}leMus+$O zhoj+?!2?kZzWq(g-S=bXOOLJSEiw8Wa@c{6nD=S5F-@b9WQQYnGV^V+ z{U}+L=T28DlvU0W3Z_cA*}hf3bgItmFBloG9DP$U)Rm?tUsC-$8|T5V+|QTD^ZBRw zisdKdThg%!Rr7LGccA7+&pG54Y8;cBC^&Vmdcl{hnoqfp%W??i{LA!G1&@QO3Mcjb z{Ej!2jSf~#j2~RsQr3)8#?b@NJsI+?Z>Q{};?yjz{qT;3!;%97(XY7~6#Ke}+T&6gvhpFx3$B&NX z7k~h8ihpXl`vpi4z!F2xUrh6k&N?wkXS<~Ri#U2Qiv zEO#9J>%}Mze;bPPVZ*Jjcjj(82nGN*b6q0+pJv{Dgs#My9x=?a!B86j#>A)o(fjSA zw;M-4^a4aod>;ZW0fo15TlJvOn3~*kd^m@J1mKW`E_~1y2>N7#0tGh6Jp5Sj_^qnW zG&B{8L&;OJ+JFG(!fN177l+Pq2pqxiD9*1n2NnQ1LO+BJgKxV+dUu78FEG?49;{qb zB{;E_m(!p%KPn_HG${@)^nOF~AX-r&u?>R5o@(Q%s{s4nBT(Qk3ax>gIx2<%_|lX+ z*HZz41vKpg#E8IeW<9qh2TlHBE8&Y5Vi-k(ppdSLI@! z!8WHoDvhK6cbm;}X9&r>D~3_Me0@jbnV0{zCcfPJAdcCZGk=};E+2u#jsGwM%P4u} zx~8Ewals!Ucr@3azaT#2{ECi@J1S5ylH3n|_b9%1zfoqJ z$1%^Ax&3U1O|pqTzly8{`yPJ3>|opdtl`jC*k+6Ji5Jc*^>t2H(6ZiDv}pB{)6ycF zuk9H7`2`_AzRpPlx-sONCd_)lEOX(hn+3lH9zJB>O;yl-if!olYr`FAO|-qC_~>N1 zV!Y14Hx}B;#(5XMi`x-ZxHf6x{eU=)c$wn{w^^`>Ep8)o?~-seP5BMv+2GS zwikYtqpP+=q~ILyvT05Pp=4jyR#MkmP0{%@{}t$~Wexr1p_i9+r?+3?emv%A$Y#sS zl!-o-Iv3IJsa9He?>x@Y45{A~4hwks*x#%`f=oJpfVOb?(sxx7LV166Ma&lq&+N-) zxD(iw9&4PI(wCFCS|o@2s%5FOS3lP^z6x37Y8SGw?wB%N97I@Z&Sw+sZ6n$U3L;Wk zya!x4K+%;jC+)rz9c=my&jn0gMQv*IfEBJ`CXJ0(KBsuTQ3A|R?e$<^ce-CEBORwmfF2D83a$0F%rYkq z0au-vLLADFeR<*ir_w8*v7T)lAEvjw98U%vF%~2i@4#3 z8fJTz;9OjuxpZt4TM3>Rl@9$OS`&CaI&7`M%1d~%HdCnNx#Dd^^TJu5=%-(&dY`;v zbu9LMZSAF$QnFAaq&=36pY;?8S8RW4_bO5=ta+C@wsa9&t6oC9)*3bxe#eD8KMfUz z{L)*@digj(I>5hX60TvXCrZUo+xZdA>!}N@WfbtexK`O~^C!MFA4%SKOhb_w@lJsu zUiwvV{9$OzRilc@pO5~~C{g(sL>E5zEI%8YJZZ9_=YhUzX2>4Oc_ zks<}3PicYsG5Q$}f8u7h(c2B}PN#om@6zIv(-A$I9PUFQzLvVydoc-hMHTiI<#yh) zo;hVaOvvBkD8VnR5Xx??Pi4bY^#bjB$6X?4EmGTce%x^Wu5-D2HX-a)l|tO$n-sE4 zc4c7jLd9n`o6{tnorYf`7U&Ls#IKTIfBQTyVg!i`HQ#h@@L(+)Ca*zE$s7%KibK7N ziMDs}{A=@`9Thkln70L`2WY8dlzcl+TgQ&Ci9?4 z$+gF}8`s+YX-OT0-5$&Q7C{_%QiqIp4bbF5Bu!CFF;3()gS?BGw2!^5w@gTz#nV|ye|xbf zmhpr?QfR3JCSSH@)@|(VRKnA1Mh50&Crna!3L#3YIK#plv#|x&EPlNX_#Mc`iI5o~ z#tmWXQIK&qNv<;>#9ro;5LG_>I)0Rf6?I_bnZzv-#Ds0ipTx0h(g3tH0(VlZG#62sc2oEw|?S-_rGkJ(a4bnsCQDJ6!wB^?}9-&jce z#Ktd^63uDIj0mBVjjFdPbF?(LW`SPSaYGV2IzL^8rrfL*hssDjB4SY8tc;M(jBmo& z-*thJaT&ARj2S^j^J^lLkQr&3`H7Z^24$x5GUEfXvStZcvDB=j{;b13nJMPkiLTkn zgzO{qtOy=)g)}QCD?5RZlhmAjiXJzOSI0%f?e@+{GRsNnROST6oz3!Mni?5v$6fAL z&b6007#ojH)daNE$C=ZVZ>fi@lhcv)ex}IWRU>D{sT_ z+C3TZ$=58pyYtM(&Uy8k;}!-s;%)38dN7-KGi z6Dk|0WR6Pnm;qT^R4{lEV$h8YjIEW8=f?QE?M7?4vjVIVFR9B7(Iyu*1{JK2DA<%y zxQq*Jh?rYrGMdooAWHwt&J%Q7ayuC*)Mw}iBMWG7#AH}%5DhIE=!Nd&P20IKF0;51!osZ z6Mokp(`?}J+c&amCi3emW@A1R~Gt|o(A>70X@E&7h7GLsw+TOx~pzRO47#C4i3au>6Gm%iP7ez z^s!~OQDrm{_HG*1rBm6VInAsy_ttC~Z>OD%c601BIWGK9Wt;%LEr)0eDsxIJS5V_V zem=faGea2cW==`#vd5USVj06}xSWz;_o9vWv#@)Jx@0_}o#Z!2T);;$l%PVF!Q*{h z`!Cub&#A-ckgDfVkjMEsOyfug1c6#o{d}DdSwk*6*a6 z2&xaO7ER1A>T_nKjGQi84*C&a?K2siI;6N|Kv9TLN%J-RO1V<9LQsX~~;&-cS zlm_yj$RFQsr(sO5vVxhtk-_q(4yU)9YM3nL2Y19A)T)SZYw(J!k9DXCGp#Ai;RlQs zSLM|EOUv2rXX=8>`O5>(gw)4tp1oLpW|Kns6F$zvN>rwcYe*V>iW7U@D4c*Vl>E`|YrMPzNeC3zi-$7?H zU!NPu32c3E;mw)z+cp2~bohs=RDh~tu!pdjPpYa`tXOd+J_)Q)<&jYj9&{}?TfBCy z3wW*2?n5y?K0cmS)-%T|Yc0uFE?x$$WlC@knh2X#tpa&wdheb|c_m<_Nw+or{{Ay9 z*N>W+!%SI#p;cMg@#^a8sqJ1pIoug;!Bk+-^V{vw@TF>ND)Wn%SX+-rM1H8LndxYs zPD)BPG|q8$nKw`A-L5T_u8uQ*^#EJVpg)H;xwwEK%b!Y3w^%X*ZmabK%0d`(aTtPv^?!;qYF!&J(KaK|7jx^=jtsoe53#3!6L> zpu?Uu=dYTXn1nO@cUSvpI_K4sM_)2ve{5>z+Ys%rSu8oVWruB!-Lsznu=C#{e9isR#v%kp5$20$Kojk)*_* z;i)dI<$%@!I0m*QFlGUZ0rceL`?EGtnW|CHSP#4r6;lkpBxwdu>KcSHtd%5@{N`FN zC_jTt`XGd#LhG5EL>{VEkN^Vr7jO)?v6w8fsPZPumIVGRaBmHg$T?@&k{!G-76YtU z07SqyV0jYl;LsguU}pli*M(5VR8Oa<#Q$V%do4c~A~>*vR?DlG=rJKSGa?d!_h|&3 zl87SzQ9$(On&anWqNaLqY0WvzLVLj^2J~fV{b+0C8l#0z#GJ&@{Q+8^<%7EKx%!SjO0;&R|6=*R3 zTCd<{1Js)1vC%p81weYP)?o&yst+Iwplq&?ehF$z{gKm^YI-sEzm*uEDywys#yr)3 zD+(d@19cAC1JAaXKkwU=KtJVi!sF^3Rqg9JyY0vB;)}bl$2|6EI`>Z({r>A$E7i?e z?{ogsMgL26-l9*7d3VrB56szXg72G{}Q2?uC8+M%EpSm=w-see@gG!1= z+_sXPH(~L*J3`-}KB=onN!+$%R;51mNKs1FlEB?hZ{M2C{Y_JwQr36Qo*Y|9c*OrO ze&?MJefS*;v7aFF8YSa;cs#Nj6sIX?2wFL68OZx|Xf5_TxMOG=7H5NZdY`o@l!V8b z44RR&Zthvy=A%0o`|*BLdzVJ`Xig={j5GEUY>I_Dqv$v39}DTG^2MsVd!=6THlEE` z1w(aXtitLCf+~gG?F{2wk2%AY`{MmxyU(D@%2Ez5pI~EU4Aj-l6jp`uKb0()G4fGg zR|sA7>>_{Da%@9zmBtpS1TUktg+Wr&+HoC>yThdem4{`|e6IDdT>G?aQ%%F&^7TRF zRz)w{FXm1fTUZzwNAFp`N*d4k-skhp546))GT13Dk?Uw&MBY9~M5~y0kZp*%w4(wU zZAQ1++6ynd72jXDHRItTSi=>jUeco0gvvi!4z%>D_U!k>?g<4eJehPLq`Axbud3_M zHrxQimFDXUO|3RuHlCP7Te9Y3$zq$LdhS5j1b)PKi&#WKbspTLfrx3Qn8soWHn(%L}#!-z! zk3H@4UOwi`oZ2Bf{NU_mXY){IHEmrztFqD~@XJWIzt*y+Z*KG)(oyvYU4+OPbNNo# zEtOM5nW7#C(JeZ2c4NWH=aoB0#T+$_swPW>*@iV9V%Qw>-rKM&t?zoM|9g}dIP>TG zCY7Zb$c9EPlJ26oWiM$VzjHzO?vU>jUu~jKw`ra@%XQXbJRrZ%QkyZtXu*lIar6 z;{8eO-2-cjIT5)*R=scVZro+H*A|jZ9B`#~0!#>KTIpri)6haU*`4VqZY>B|y`tx* zSZ-zcV!QF5rwFdiZjDD^+^ln-zVzTIt$+9%rg^@B%>lcX*`?v5Klfqv5oe5~^?tm# zjqsNy;f9YOd#c0iJTlSr( zrHAgp+RV1e-M>YP#H+L4Nd#l7`}ROPLa&UjS1Rs_X=KS{o1&c?4Uv@)6WWt*8PwU| zI0A(jWbu159!+r> z`;~V${LDJE^8L%?2X9|0eoHJ)M8>FN=xXU6OvUOc#AV6Es$6J_QpXr1dM$D6!+ble z-ugDy{;oXvJ0@zoo@8ye+$wTa)bHDGduH{89pfq~nR1B1$n7MR+IeGPr?$Ow{ksDh ztyU-M&3uITiX-oQnDp{?eOIyl%A_9!IOK1_WY&$IPiNKRd)JIVik%T(G#H!oMrS8( z%}&pb4nI3QnQSomVL)!I&TIO78an=Y_non~1vC8@cg^(Iq0(=wXMVmOo0_aU{KYMK zNNYDjK&R~4&&|S>y4fBbuDz$#rzGJwGub_IMA1MDv74>eobuKrQ72Osv!PoYv)6n0OFL22sh=7WpkI14({ zUVI8&i*VMurFv|OD!2w~Xer9|oIigbjx|epGY}JbEqO(KYHC{g^V8{TUt{D*h|aYL z3<>dLvqs2aTg)?7Xs2us3`+~d7`s8AAAYS_W)v^&Yd~gaM>J;uyK0Pu?h?z$i8CW+ zwGR)vW)hq-p6$>01-l2(p^Ze#+GBjjvYrQ~|1`}Z@pitnPsA_ezyR`Q?W`J~obFGd zlVZ-9X4eq`aqWQXw))hV!BkO3&Kc>!liN67G_y_xWj+nS%P{a5X~a(ka$_L<9yPB+ zx-;--;*Hn2v!ospc4K=>^Iz8IkJ!g85aqwM z&yn)--(St2Vid@mqvO)Nt>y)<Y ztBB)T&z0}u{uP}Uu9b>oX6al{$aPEh+QX4(7yNaPC?Op!Mq}g0*kL~f*;{AbqGr62 z4|WHaHXL01x#-RB)V|T!F$zbS9J7mwSvnB@T{EnDEX}E*V2ykHGrJ>AoA7R;NM};E zn)X4i{h`h7$6jwuIJgDB42jtL8fQM1AF5U0>|65nRjL{#(wd3UC&v&-n45KB;br-$ z^*h(li)eylIcPl+HipZ%7O~ANjBzRYrZ(@5MkLiYR+~k1lH!hE%e0m|RH#$BQc5&* zi`>P+t|rGhQITb@BbRi9Rk@c`XA_r+a4T6@H&*$9ZOOm*lz^CT&$(++*#3E^M|EOuV5)Cj8crT9<-70nT3AH+T=C(AY`hc+yW)1x zwYg}Ye9`NB?7F&x3*r;n%}!jTAHHGE6?E+yb0{1d-!)=U_Um`m_~$D9@%(q&_;20$ z((%GS8~BQrIkM&%U(5JkI*(ios{Ue9Jt@y0_+8%Sz}K+MQuWB0=t{mHbkZcD+RTz= zVVQk_j%JJRRT-YCo@h8>7;-AQc^5S<*D)bo*)M!S5TD{#Xcm%d;#YHlxAQ+4kAJ*h zGq^Y;6T1)k<4jBn3i1Io7&eZV4@FJizgJ{wH67qTZD|r@Y}s4GpLTOuw{HEU-}YO# zZq6jemOxITzOKfDuA`$fWlx#OFF=!Rsgs=anX0P$s~npg9j93=KR>^d=46Qe_e4a2 zQUl%U4i41BghY^drb~-w)HP-%4?Zs{K6mB}2q|9=hC;3RtNgNLlK zu`wbda;mW@EsZl$TQT$cPe7IFi)W@sMrV58fiDdZq^70@hM4=%EsXE096!98d)S}) zIW#dEHTvoO{eaM^tsXOSgt>MDePe(I>Gu%|g#v=m?QWfrPZ7*EF|hz zM=R(xpahL3B|+5yc))(1tbqDBU<)|YB^&hMwuLjB2@!ZhD~d90E{BjW9=zPlj6}(T z+QB*2u2*?0Vez?vd8Up%=-wrB}1%QHwr$2Lx z2ml0-1T>wZd;zcq1R&@;JR610AjkkuK(c{l|EIpd|)J2BQ~H5I=G*o3dAdx*?JUSrL9q9N#WVBGEgyBM9z$$cIp@ zLjk3R&@a+RyB*v!eIv3Yh>}231mYb3L{WI0qTG@EEYPXWh138?NC!daVFIX$&V&kX zR)~C0yqOU0r5)Ys%L8Fm_@ge z_#{Pcp>ATR3))u>+1YvK=7)mh1C%kx8X)UT%tS?DkBsx>T-Rj)j#aV$CF6Wisoz}ZSyGADD5a#} ziRjT+$Jbq}f;NH4XQ$`Si8X8-@$Cxxi+k?=#{WOA&O93G{{Q>4*_RoTtzwiIlBVUd zlo(RRQcYd145_A4Bxz(D>u2n13?^G*>_a7W$(Cdb$yHMcNtzI2Nkg)mx!(}$QtV8~}IdvOa%^lC^(!!^* z+bb_VQ@d^GHTk*LdrDNtsY+G}Y#sZ*J3BuE{9U^)h&y3ZlsJX9(B8`BIiS^yB<<$E zO!~=fg?A$?w_AKLc5xfoGcxm}S(}XB*9*#C=50?2w5eikE*<6cSMoW2 zW$9O$xhPUo1jfSXtBiAP#|23E>B`x#t$w_GlGs8T)_iF15?1N}2lg_4*Lw~^N~AyL ztJIS#?7kSVa8+olG4w%IPM^u6Na-A-jHVnLgBZgR3qSY>=wWl=w>{vJJjs}i@%UgY8DAz2rw7fNnvRwYET|W z$*n(C0c8T`1KxV?>Fn4kLz!7_D$cy*WGB#V=Lce(C_)h#g7cI)0JXm^IfGjljYM-ct5DFpr`tj`Ta-R!{`#$ znFMpBSoaEyb@d6Rh1Q*Zy~0!WJ?w|1Q&nISLd!Cxt>IK=C84HD(&h-2E%=Hp8rv#DYg*iEMUF0h1UmVMroxj@cX%Ctab4hlL2J5A69iSQ9 z`2Epg+isGCx*G$Ik>c3SHJrY`hJLM2dAKlOcWwP``Nv5Uzqev6li#1rOQC-jhJvMp zn>7_3F>%eg6;7Y2t=1lA{kt|j`m{L0_^OGQL0GezC4a`7JZd?WnYgDm@|gY#Z||&4 z9l>5N%(x-v_0;kMopH>;iK@OKxkq{!1_2>d=9^bakwA&G6jka_=~dJIM?bm^Avwus zQav;GAGZevOI)qyt}P7Oq975tqIjG3(~9(){w!nGr}dR-bX)e2(1cBwxp_8wqF85Y zmEy0@!(Up3X>Plojc06e{w6uF<3ovJZ4=?jO~3VD7hu}Bdbq46N*7eT2~v=5DH9Pc z`~FdkSdvz7+3N(wiK>7TbBY);w2o zKjcP_Y7T~{NxpBDfzQTm-gL>Lf>Ih@6lZ>@AHC)=YKaS+y>ebTOk9wH*ddOR`khZU z&u(hpQ}1=-p5TQH+H?gpZ^g6M3`jg_#OFzu3rO`%5OMub_pC7=b+mM{w% zjKJv;2{;e_@_N%ObT(6epO6#N^?NT|E|CD!5_Xt^mR}hD;&g*pEMN6G&>k0jdEwDJ_L!w#R)P*Zlp4MD{LRT19O$)n+}S+PHC^0WqV%CRmZ7e zm77ua`UrSW)1-w%i%F+GBZOemGCyS75mM2W%u6GGv_w)@dnOX&iC=v^NgzDP&n zL?$!*W4*$0yfC3JcH98n8$;iLgB{@qZ%GaJmb<7|i!NCV-_jYPUmNt+3WFok0y{#) z{jh0^o_|qpLWjxd<#x{mhsbXoAxy6bF+aZ}B+OyA$PrinKZ%jr#3-xSo4;65n9e8x zR%Br@$^aMbpiGUZ@jl6g>0lABl)%Uk>&rxQjFBWE3I;4bHwA0 zEJe@vc}^W4Etc>Y7x(jO^jt^Wwc6-y4pBO^NNGb9w%_NhkssD5 zBCs^^H7yD&9)tk@Ey!py+)XXz=zE=sX$~TTMs$5%@He;H@F$cg^N{UsVVX-J3s7&| z1s?d!$y<3b3*<<&AHBnnE=5jW?@y8uWpuiRA(!LnyyPY2@E1x9Nk@8eC&NfQMTkw= z+DYFWkSwMWzEF}fXcfNJAFUP;71T`CS5B2Eqaz5(+a?(OONkF%1Aj4;j|eF-b__%T zJ7{hU{kBwNdMQrSAmou)P#shgIhcV6sqq;c5B&>s^NwNAH?cUe=$rE$0qn(~A-5P^ zB_y13Q`$kqB`Xlw!FWMb5nD)H<)pvR#>{e%)`oCde!|1?pogw^6zkG4edyD8#2F>z zVN%=*7NNuPKFW()q@^PKb{HF>b(&z*4DaC5TbuC6ll%~KoVS(^l!iQZ^A{eupMWsq z`0i~&ru5M^QN34Su&o^Ael9W)9x8K#Kal}thRgJSoU1I8elHL zbauQGSava)79ppbzbQUlmv&3!TFz2wu9^*Vcrjl=m8ICFbmUd&_Uv@*z(tI1fl7aY zmixWKi+MV_g+gNC-oV?cx=ALgiTlgbjob^DXqe3taga(Eb!lfQDciE0xE6Q4Dmp#7aQ@Cf3_pUvlU5sdHK?9q*2lP*$J`Jp95XXrk zXlY!xKcxpy2CKH77*kqWW}}5Gh-a>6r3z@?=k}Sbp+uR?^fzz1yG%{|v@|bYz64_B zwY4<@;t^ow0(8(58QXiyXP~}qy|#MohWko5BC;U4gJY2Hfk%%Xtu;l5wrpMgHoSo%6XSy1BEkFDlV|J%^=%7@k%ITV3%xx6U<6+W1q;)2 zU~#viY5_zSK!eukhVzMUPn{g?=2b9(>fvML!ZLt@!JQBMS4ov^{8$%WY$7X14;=Ot z52pESYJYF%*d(u~rEQHj2uNe0n+bv*;Aa01;tX;*OQKr`dHp@3{fr7KH%E`h8(iQo zb&ig{0XsztqdcRnKwjWWoA5`cH*R@FoU*()cZe{*wv@ye1zf;4NrV#JJSuaj)m7cx z93IQG+lOqz%g*7N_AD)M7~P#9E+`gfBwWJiv4M2Kc7r~Yy*FWwb0GyEp+pw z6(~f;FvJ@LahU%1{S+T8z=rmgN&qyhna*@w65oZ%GqF!fubt=f(uo+(OlFd%G*Cg< z-A(%A#2NeJ=d%1lAA@ zunOQRWyJ%vJxveXNY$p8_LhG8({>)E< zp>_ZQ0iXhC1TYCe7l5$;Qp!e1eR2|b)CM#1m9+JtN24vN^T+<5ObP%K=~KA};{ITLc}Ir@8AP=Xmj>c z_iYDH9C>BeH#NS&EWOfb38u!0C*r|-^Fj1{kEo3%-b-g5clH{h@P{# zmMcpPNAp1qEJqZKHH8txJDb99A-BVmO{Jp2DzAjW64rbl786BKs^SfcAdaTw(;T}O zG&WXwcX%GLGa!YCdB6$@TNSR2MsC^4`i45wws2SJ&@r9w%+TM&EP|Y*v5UoSPsTSC zLc|Egv`@b_mUYq57$U`=s^Ya+=vUziLxenTTc+C>7;7>wYfVC@P2e%1O0`YqQg9TZ z8Hry*wjvc!9E3%s3=eszdbVt$Bqx4Uo7E?yP?R4d+Qb%P7f42ca?bLI;!MAd=y}!Y z`D-lX4QeC;NyIdv%LHlVV)wVtx73x@($s@cvAFu!U4ql{k^m^c1;9ds$uP4mbXAtvSEg zQia%zClqM)nCO)&#@cZ*j<-zy`sh*f+@ZJZIH6ShSNIKhBO-w0cOQ3J=%x20qv8ip zLNb0|OLipZqc%$@Q+C6Tb$hfRnSbl*yg2^^g8dN?qjMJc%hIlV58hN%Nr!L8QE&xu z)q>q)DoXz+VPk+3CJ#nn8ezut{zyyA>`3r=0Vw)ckQNHEZ=3NB!g7YyHP7 zkA!ZqH!n{)T2G3~SWo$^xyj(zO~EoDi->YR?Y4L_-l>sSkfADRd1zTJJQlnhymr|R z4Le}y7c)Sk2D_s=lQ*0{X>Fw}OViz3@P31SB^8Uh-_%yzpH9Tkc4 zqv?m^>@=)&*R~Q9Z!B9^ z)MO&My;*GKSH422xSWC!OBCUS@PHn0RC}AW-0dict88NXzI|J?IA#(3-DE7Eng60;oCryBA|5E*``oH# zlNWP1F?XKvdTs2)Be5QH{oiFDj!Yb=S;&3NGj^893sRr8<9`0$;Y=YL*s z4gS2^xUBK^9AChz~Yo3$EPtqW%%}gwmjArNR8Z;1$E5 z(s8KW6`HZ4FZ%IU z;hMD}U#uVmJG{>!RJ1=_Ts%UjKX5;pZom$ai;cjtBb0~{hjGw)4SGr`GTAWFgdEwt zh{kZjh-5TaZ<48vK=+5EnnPm!!+$G8N!!E+xaFCl7TAP(<#7)Ff5$}v{|E}~d z!NtxHkuW?O`53*7L9Q&Kl^OEC=}04f;@T4GeI}aPpJ0?8hpLNr7xSIRCXX*d=>2rW z_C*x07NuZK>oM}>`rme^Ar1KO4kPsPlCOkH>H#4ge$pIm%SrZiKnIF3!f2Pb(?D$n z=!8TnbC9VuXk`lBr5|=&C1BU9)W0KBRO-UD!Xl*!Nrypal_45K7g@w($fPJRy{vof zj+G(PvMwCC7j0OXID&%$gdC(C7ITsemnWkY9pm@n81A@RzZi*{uoO*BB1s92VL_;6 z-+8LvBU}V)JcuZch*?g=Ho*+($a7@GaZGCP1k}@?$~30o81lcUh?UOd!xD%$M4x#) z;ukvvMomnO3)(&I!!Gl-#ip#sA_SGF%4O7r4%io3C?rQk3S3jp#QFwgpqKIJlT^f} zvea3A;EOoqeIv9il`czX)(NxZU0nU%FQXJD&}Pd%p%dr_b*KwsX-}5mS=uxYE5Cr4 z>_`WHJqdcmBI>SVvMeEy%t7tTqPy$CtL*L>KO33sdo3z~ zx&bL&Cnx8Mii)RR{!leuFE=yu#EBC}bq}ng zL;<;g-stu7=RJ2HC@d^mznj)_$r*Gn1J%QLmwqRM85tSX`=mkOdUZWK46x7mhfn`m zh+Svp0*=}V3cEgiSO-b_&h|B%W9tnyfTn=#vl1L2BO|?<%Di;RW&Pb7usU0w&MYuB zS%-#u&gdRkYiscI^jNdEuCA^E@fxRtmI8VC;Y%C!Tr(9_1GzbY+x6BaM~8EAhU1xl ztQJg7z+npjr=p-p@MHegEgulG-%wwMNA>mf1mFZ78WxNWE{u-Ow=~QT_6r8StaSCv zRaXHmXQ3b`J)H^MU>i2DIcR<(PXkzYix164 z8qd?jf-qc@~h@2SNuRtifI`w9)=N!v(!rfS{^MHj?cdiU@y+tK7sRkbx*v z|Ddw7y&p781G>SfZpG`mZPW!E^x-R0+;NzttHA|Y(tw(PL;{MdC|kP$QgpuOgA@#) z3U~0iCjr!8fwBQIG8|>XEn+YT0C5HyfD{E%@Epi;D^N;m+iQWAROLwm`VlkRcN>Jc3@o>A9tfGkHC~0p4jp_Tgbt8-~@KV4v{xwfY*?zQHL61Do6^!~W zuP*(XLI&qVm|Zx}l%H&yxPw`c%9my^~*a9=h}resp2;dCI@U{O?a z3H|q0FO?1q^e0Ch0$Rk<&zP{-E@o1 zriNCILB~gMb`LlVItEcPCQ>m z?C8A%MQQIJbQ?@TddHvoS&Jz2*7(Pg)Q##HrDzt zlwE@>UaZ6P_|l>hSc1H`wh5`)?7&*(UHLzqM^31A=>2*CZ4EM^nj=7?Y>U{-`}^7u z#}h4H;@^Vi=iuJ%6HSInRgsliyS6sJ)ss42WleN__%z98zsx>!tR|sZvj5mWzs&5d zJbu3>-vpgo%R0|bY|cF&Ly>k3rBqfUW`*Yn14Ae5jxvw7-dOtfw(QUkUmYerOh&Z% z`hwZ7bkg+mE@*qj^4M#gq$yu37{SsUnYp#O870y*T9bL9dwHtTEdAQUi{HxI6i&tw-WT=rs(Wm3nd$l z7N&t4h6y%L6}@GGvvk|$Z()^-=xmmiFSaUv)w1a-BVxDs1mcEGzT}RD8m`;rHVy@Wn?(kE%!mZ=Vo3uPANJO25?=2E$ zDv@x4Y?NfiBX(LOS)#;iFUwT&BjpyxQf@y$yEnpi9sy#F>Rzi&mRQ8D;4sP3i~qP2 zRPuF*;)G1QV%;6@BemE_!Ugr(eQ88OcV}l^A@`IPMw~xSLxX!)o{St(`y1U*a3eXWYbtb6 zlxi`2Tb$#X{7uEf`ak!2In!>tB*h7n(X6g?yRk>%IPYizi~AkEwj+ z&8Z95o*P0zONM5_AHSNej9Up%>B3d+{(<#n?GQX3-fIX=XSl(X=__KPf*AUOL-1HB zy}>H*SWV~~t59?-BySY9KnjzI4NLZi25Z8kcwxi-ZW6@s3M;x65eiQa*L8z!!lHN6 z=zB85cCf>TtitG*!agav;n@*|rGBm%eo9M_t2sMjUncsPE8VK!)tViFTtfe`6d9x# zWz!Eo&>x{L9%ZB)c90gjuQsZ0JUlQu>S8})8zIuoKm5FMIA$qyi#Sr76yxU>gQCE< z^+y~t3iXMO{-Q0SML^mVU4HtjR!8dU!<^nEeh5|d!LZPXl6bAfgpR9f*%!G^3XTen|2zde`RvR7C z>56xQsc>YMDq(nj+;`T_@0GAOw1j$Pggi+$)i9_fGd`IegYZJ{qlV%+aHmUXRoLxk zxZB_9w400mq3LvOF6_~JUr3*d$Wul*g`?`-5bueIaq?|pWo#+V6-GlS!ua;cxSZDVryf zi7~Fdi-?7J`Rp|-! zu?g}dA9(`oQZ4Ko+rJ&hycTeWtsI`$=j)l3phZvCVkOwQp|?>(g)G=vp5Fz-cy|fL zf>P#w6~uR_KS2`<&os{XNkI7Nga|1xngmYaRVu+M{)mKYgm%FG3C5UmiVaCtla#p# z!^vXPXZUEBSCRX(l7e4(m+Rzs8PEb9W#u^ua>glv2F zVw~lfuH)^GPH~VO7xL1YtZ3iqSwz-OMGm3|T1Jyp?lc+4UGKQ(k?u=V3Ls)r6eO6* zR^r``^pYPCuAznVo;hG1k62q4$EA?<_0e2W3#iRvwiI|3eUI(y)lkG*XR9%0p+Nb z-!rhub2}4v{L~%dL4P7OSBrc1PAp0TADgF?C6OI+Ebyv>%}$xgya=+7tAlJk8~%Zv zaWxjBQGRvK5mU?y*cF)RRhIAp7jPy%@T_~G0}i88j=C9`JZ5x9@l~;ZeRe=^_TP0` z&uf!ctqad|8ncxqQg;OAEtjE~!@~83l%d+nK*C%PzmsE9?H#rqG>Xt`JMm0>b zU#}#)_CIJ*efX;UL3g}QhfNOs%)^iM<$Krl@sUF-_stGIe0#7WB<>;P7+Aq8 zXAv#$4-Zr%mzNW8kE%+`zUbcnyZm8P$)oQB70j!T;8K;ygbK1@MdsMUi!qPxwpZpH zd*t_DQv26G_Xdz!4Z;Kw1DK?4|31)8P+woaT2h*jkU%6@=IiMR5@SICN1&sb==WhpBwy^m*}Jb99#wHpwbpPwJ-JSJ-40m`k{ z)vQ%kzA-f!0LT_e7dSf$vhRQ@wE<5b0Cdr&mO7eRf-5dp4NN9J_Do&B)|kW;q->0* z0+a)ex+)@JviyNA=r`!>aBy%CY*rM!Z94Xi4}n4Ui4+S|mOQCzuQo$T3!MHYoW1WE;ncHeb36!AOICWB7iagUE%ei4Uq>B7BG)dE^WBZ zfFBOP6Xi^gyE_y3-T+kr9Gh=%0w7hG=b7zBrG zE|CG30Yh7L0~=tMy&|Tvp$%XmF!2GRN-Ajp7Bx`GW^;xC3~Yd+0Q~?|0?s)=kFg~= zfRg~YZPX$FOq<~Xt;*nl9pI;{S7`vn07C-f9`NJ=yP&%r6~G{1FD|6o1dM{fNe5sQ zpjl#KB}K8Dq8JSL6&Uw``Hp1d;-iS6IXeS715z2FPf(V|nxxN@DM@W@BqIedC}b~5 zupxN>@B%P->5^qq$>>I;r=q)}nh9vLf;9?&6A&Em=%psQRb%yl%a2t}1$26qe9~#rRIp(Y^>cSP5-fQFcg6@b7 zn`y4F$HeKP2gC0=ZLi!OOw%go6_AbJCCQgxJe4K3Bc8;OmE`i#vWRIc=kE3fe6yHZ zKg4a_WP#1MJoIAk8g}I4Dseia|&8JKcxX z0Jo?fQ)utih8f8Pb3CZhXEPBK@L6aEK6mN<55n_d`lCh^Qzt>Xeg@6HfO`W69W5{s58soCfr%etuHns}mpJczpDj?Oua7$1c$#=Z+RJjYDdpWDQ$0M< z2aZVT5^{bJc94ZCx)O*_7|$nEB~K%-TOZEU5O$0|pJ`wTD~n51PUsW|%vbXCV9C(O1SSm-|gbzkP6cN~$p!veQZ2F`#Nrg)hBWqp+o zJMXfkx-t!%{YC@d(E`EO^OiGbM*JQhzW7foAAJTQ}l=yVV(^tG1hn7FlBRnorrC^PP0207n>2RCb%RmO!99Xapf`+ zW*2ET-py{uG3a$X(K z;IP$S>#q7Ij5#ryzr#9hoNnzt(m4tlWWCZ*c1cZZD8lV}RbIs(WBM#>;&hC=&eYFg z^Mi}^T$hu{@8{ABs&>}A!)Y2K($8v7Kwq!ixj(wUX-bZ7a`L@qs+~mh&TG_=%t$re zcVdUJjnp#(pT7OhG&+nrji%W(4Ey^T9p-+U4f7cs!3s;gTddxoY0{R%yJKqgzvWPA z{L9gwyI6htlk`{^Um6D^2Y2!hkWmBa-cK?DOYOM{ion+%CC`ab`&V^ zFbozZLwdrqzxnsa$AY91WRvhG>56*%0d1~|5->!{Vt1rKTo(X=3-39|?Be*SJ(XCVH=s0pG@oxm6>JbMTrTclpO3j;DC7RHBp! zkua<^p8+OT;!@n>(4 zVP)LYHrXwNsC!FscRG+F1nPW~?3K)T%|)+tGL>{DaHR=l2TN%0kNQkT@1(}YyP`g` z(QEj)4@9qz;?z@_VNcs`pB#_sT#}U|ME=90S{wOJWddY%DR#XzO^NX%Cm|V#JTdqU zHkyz1;nN|iNJnx8&E>MTzg7q8A`q7XV)!hE978025$(u=Z*fH1@@R*alA8KmHoc1Z z-GowJj@`xq$$g}DlPt;*_EbprN1Q@R)-qgclOLc`bhEq&H9p5{P&8sRM;y5ggWOvg zyT*d6FQZLZa0!2Jt$a;wdAfI0 zM-t9DLqKFY)I?6hkb(UPh7Rd?eA*5&`b>X1qB$`w@{Vj)>e)D#U5gpEtlJH--kPr7 z4CL5 zm`^!=jxL;K>ZH&u?pz(JH4DB)f@+J8zO|V4<(lmqYZq1#_2W`fN(bt=V^Uv@Y*A*6 z?KmWrlKS@3y*)8r2L9=n>X=Z`QtCENu1r9xj0Owoemew*Ir>WWcwCBVd4f&m9pB|# z1=YmM{^|RS(=LC?uU_`W>gI2c&#>u0+14en*~vb21z&XvO5!4~#$_LnOf*m}*iWO< zK1Eti-c6V&G#f}hnSM{j&}$+#TD?BPS~bP?AoaLa-f3N?^<>1KQ+l z40z({(?cZo_VvAg{}E8jzI_M!Z~2@6X1M!o05oezk*KKXhK2^vZ$Q)013Hzp?g7Dt zi}i;NUbt{UV7PZRA~+VOyJ?dGI7O~qyC&G9lb4qp?g{y%Uj+%G=hD*B0DPW2sp9nv zW+bNwrY3;4C3yODy`y6=J##gSxthWp0$pE0UM+xlMn?sMUn?pe+}Wuu@bMf1b!`gr z>+d*%_J&kb6W)0;P_$NpLt9drK+Xa})}cctK&`4iZ4aD!K;{A`GJdxnK&bUI*3f!i z51_1}p)Z1Wg9{+o{$qabqVw3~JP0R^732t>Jorx&+!!c~^Sm((s>9|M7j97(hPkHt z2Y{*t^eISIvH^`T_iT z=!%r67%8QlPT~+Dr5#;r-CxO6t7un6$Ul{C`WM*X*jF zmkERLuw!B2cu~ySKM{VkUx0|dnx*(Fa68xc6Qo6`B#f9y8=fTfLZ?p=0@E%WGg_m!j?r1>Uv?XOi`7hL-<1+`r$xi`o^(dVU#De(G+6*Q^b|SsE+f}TSu{U0z9&^)$EW5Cz7D1WdsJX=NLzCSZ^5gPVCM) znzkFW7bbRrx_4)~T#w^8Vb6APWai;Y{8)&as4kCnpzM{Fv=s)-rz?y5l-`pQS15{^ zeM%V3i@XY&3U>cNg3C&MR6&R$Mw=#}GIoiiyv$}Fj63QOL+D;!4hrC=j>!0M!U`mh z>P|gu65Zt?Eu*(`1SYkv3y3H;{vzfA>2a||m%;TPPmh(PIQdR*#zZndXlY)@h&16D zo2o7Xf8Mf+>L5Xd^p0&&{HDoVdTxCLQ8K+Sb<=xBbm^p+5$Q2Wc0rL}On^dDmw&cm zlA{OQ4+=i$%9>HXU50ImtTcxejXBQ1$dT7Bw1I_E$0WpGBshG3H+DSPv{$M?YJd5I zUvI+y!ZFY?)TXd#XN7YIT0|9l&b=`){NdwVwpVU&^N)+2%{ALZXY&c^^-W;&)f99_ zQ$A9TD45J+MHQ#(GUlVc%R&kz5iWf<{LirWYM>;<8idq)b*Pt%F#n-@!HeHw&7LYM zD@uDci%4xXG%`nvmlpPQg~8p1bNo%2lF3r@;nxvT^Qs{}K@}^LW-5={_#WFkW%UPA3r)O}Jti=4akw^>}r*vvu^Pf{wV$!Y!0e`r3R?%mK-l3g^X{eG$3K zf7Q&^YFQyNs1LOQGpLZ}1?bMuNE`0h-kYbKqc+{om)vdY<>@$hDS&lR>TK-nVQSE@ zE|(@X$LKg*&xzXly1#mnKC2k3mmJ)AS!y5dR$|KZh(3=XcG~DwnlJYIj<*J{&N0GN zSX}g-&epDTL$etf4C zRNu~yNuOxGvg7{p({M#^1PqoO+*Bwo%85yTH|^GctbUs$tEyOqf@-S^z>pnv_-hoVjQFF#K{eO>h<)cDl>yGB&#U?zte{q#Z5@$1@s5i)M% z2!-%&C+*fkwRzevGv;#-Xt#?Kc9|1nx+3S2SJXSu-)m5l@dN(nBTKbmE&nu!Tb=>V zhd!_O8$8O`eI40^9GulRe10;)GkEIm*VhYA3Eab;VTIM)$sxm*%>s1v>(7HlQMAUs z+x!sPS#>G&Qp554vl0F|U;YtR*S7BW{ONPkd00EoxA>mkt;C4x(XCK&orETT3hD{w z8s4mH_OAHF6gpQK#RPO8)(^{S-J+%>7U-JRIG+?mA9pfcaV_dM#qY;_r5v^e-FJ(a(p4Y_cgFD zX5hwo$JVdw>eDCIhKo-)LLGU|Qnpn3nBj{689T~Q#D!;9c0;$Y)5dR1;{JZ#`iAx@ z^}Lk06#_*{UV+%5vr*csuMbtgk(sb>3Pw-UBJ9=z?$)V~dLDL>c_f0tX~6M@%`ztn zBDVx{MRCLylokvQ(}YRdu*HN^-d`8Kympczkiye;@`FOfgqqqA0WMjMhKuJA;9t>Z z=FFeuin|nP;nkpdn70}op$$i4nnD)DU`yk&^DI<+M)2`(f%X2>p%N6=PkuWWF77Ha zPn9Qu3OI2QG%oa%Vc2Vju*!6QI1W9}ap7}e+q4mQHf+f%e5Z1lJUK{#9Qrx>8oVD3 zMoiT+(OaNc>QSz2&tk|t3H_TzBl(A$WQLpeqpe}LgxJVlLpb#e`V8Jnx6%#Gj+pCp zskRDY){u8vVJvXaCx=KJ9ksTAJ_-}j&PN|-`?bf&yJbelJ&i`ZL&GXVK4+jXFxNR2 zyi)r*LmM6|g!YKcZd~rcHwGh@!ET9*A!@lHJ0C+~U*v$tQZzD=gIg%qWRUy62ee48|S9ip=4~ zA!ktqG`ExF_!3$)n;kueO|&7PJI7@!*{~UU#5~;GpHl?H5ZipJ_L~h>KvdBKY`}2~ik^ zDp6kkZr{XGHH0e3 zpWMh!z35G4=o9SJmtqjQl_#rM7COfO8AZelC0Jivq`@f8^f4o<_{wKq+9s8#6BB9u z>99rrK(;oTCVD3Ycc+vXWOD6}gJbl?SGQk_!;i)Wu2Yy2j2MJ#x@*Ag$l}14{u!>y zE{g`&wDI0fC8)o}VKcBWY+Sg+G|qYIkds&!e6^QhDZw084D*kR=UmH4+?;+r>rSUt@V%5**(1h* zL!UB+KV^@`Wk6$f_jX-OuXCii8Rzm}<<1#LG3s*L$}+O=+@4v^Ny>5@D9imFmmad1 zH(8dK6UEBWNrneHN)ND7-B{}?`Lu~FgnRy|F~&YCU-4krLO`CJJ7zh6H6M^K;a-rt zoIm)9rqGqIKIyb~z)5w*X@`5E(D%+W3r+N5rfb z6|DJC*W(hNnizIHalcJoxd=c6+>7hu!w()j0BQ^%0YPom zdd^+J{UV^F2$Ylrja33B^QxBSdSI~Nl6`x6PDO5x09=_vqkuL*I%s96N6_6l^lfsi zq-d$T6O^5qnwmuF;ea1v8o2K^WEPZF(CvV1}osdq%kx z<q^Y-9{i92hW8GCxazGde@QaVGU3-5&(2M|00ai;oh;4u0@TPm77adD-@&U`2 zJ~TQXM?7Os0O$a6K|oUhIJn_~n*_ZD8J+Pf2M1;+4f$l`}_C%-0vOLyUnWH-=_ad zAsf2PAGB)cfk1L4J>Mb|pVcbg3i0o4XK zbPaYL1k*L3hWgm^`b$4Pftb+HKWDF9ctN=&zK1XvI~(498>6jUp`=@hmMNd&*>?eTJD{Da4(|cMo`U6hqo_Y2!%c$_bYGS z3sDx6<+Pkn9Z}p4<8mVmW3lQq3(F-@YXR47qImLxw2=(~<-jVrp?QLT0mT1$`CVb^M-4Z<3jNnY&k+{EEgsg4lsUlhkQEYx7!`+L*l^j#^W>Ap_EDhP z0Cw`g%%ShOt0(KHs)H;c}i)9#!U@8N?->Kf=o<}=M+#^_ecCqHDKatN9xvO6FGc>*C^IZ{ITa+~@ zOedY<6b7%)76Wx@V~Hf$ai?A1UQb7m<|z90B7Ls5*Z$J@cnL2tHQgY6L>4Lg?DK0 zoXbO#SH%iH-%A2tifB8+O{Gn5-r99=P{gc7u92U*hq(3?4jDDR)j(-19Z6F(L$q%T zb@Ry^5w`%j3S;L9v_@>hH^d%enG>=R(nTYhJdmz3)|d6p@@^O#Q|?3T z=V^-hd@`=^t$5Lja9<1*^Ev-JS1fSGwdT;!$40-hpRK$z!e^hRa{XF@LPR}(uJ*4= z)7rm6_xJ%{n}$w?(_Z`;I_vhrWbEUch0fOX$)Jj0o|swS^Sse*H&2@6{k3Q5-Q`du zBd>mRB*}HaaA;wYhCou97C)4#%|8_j9W&e$b#IH=+eW45bJlNtznBT%ymMWjkJ{tg z|5NR^&l`bo-YPlh!|TR3!|E?aVuYza!C&7@I6%-?@zC00jQaA6j28ncr1g-tp(?-T6=6hg$q4!srfJPQkc;yKE5@P!QkoE52O!)u*|IS9*=1>kvBV{D5qeIdha_Y3C zLaHS(Qbx)lY)&)hIpmZW$th`-LP;Y;<#Jx-u_^TO)t|ubp$x&90QFL7a)F_j-#D$&ZBTwNB zymtZX2lfZYPlAhTErG5U+LagC3i((e#O9(^^l?_Svly|37`%l7%^r;22W7g7ndilr zV}a3w>}W0F6%3b|RRXPT_E{vdB3T$F+Acm#urwx1VjW2&V&!?v)r`vuc=$Fh zB!>m1E07={_4z@;%QyQzlk6lZI8{*@AzPbDi-?VwgM^1DlXXaG(q7|=-1jB%>L{N`d`P_OB-6Nt3<+8WG=P2y!S^C$R` zQ6akcWFZ^6jT^Kbl9XitQ=rK&(vp@+lcEioun{|iXN*Ty%sdf3DaOcT$NphqFyw@! zYUuo9tQG_Qk-$`bZ9@xm@2=S@B*Gs`Y9I)<6r0+(?Y8djHZVs5?iU2E%!_?w2vz1ov#T(eGVrg1 znH%YE$xeX>rJsJCvN@Jb!ZcVMrb7E*CrL{NObHCR#5tlsv9oT!Dj>MH?>50gOn7eGPBqz`}HjLHwU&w z1XHCzkLzT{sNDQemeOHF{Aq+mJEyZ)*9|#WYO68oT!`hWJzi_$w(l^ViaH>xV?s>$-1g^?)i>VLF-Hyu9DLdte z^KJOZ`H!_*6Fu`EQ8O0Asl%Ua+>CGUaJngL3_mcOaAzddq&&rU?$&q<*!RpyS4k9> zate%!eVv(VUN@iL`;@aJPKJ7BhI%EQHo8S$o5PV-Wy53?(w^8J71}v$%`eowbu6w_ zxxADUY*&<%r`%I=sk6+Yr@TbQycX`Cx> zQoZxUuFNx|qB8D|?@&dnbFtqO_Yc8$RC?~@2j9(e#yvEy=pDV=ZFeWux%`uH<)Cq8 zFTLlM-^P+3cGO=o_qv>^zwPd|=TMuTP}4@Kv8tZU!S4TqaDRJrxd7pQz?PsfRI10) zRX<>$i-?Gt4W}=jJ)5DgZ>_r}pHsAStEAhTdSQ!xds6zM)5#oQ42?^7c6J2P1zQ{I z(&BQ%T|2@;LzdpPu3EKvF^!)3vgPeOCwE?2dTHm5y626+&j5h!LDl1>=M70o?8VO= zJ;gZlS8Ga+}_6ZGG{v{hd913*OYy3hojxNZhSxZGGF@ z+dCS?*s^8I@^gE1EM%AA(m&msbo8E>TmBp$Td1o7mAa0OjyPQ{`r{{cAX{1z3c-W^ zJGf>V__pk)%PRr~?mSI3VR7#C@W9gVF`&L%7#}Ov*Q%_%2gKRqqGd>%>*xkXiFQz& zo0w{C?^rT6nVTHDa>ajc`1@pQQ~QVBW&gwYSbKXrK)cDub<>Z^K36>VPjoG{yl;T2VU2>18aVYfCzXf(Jy%*%dM{ zD(1VT1IYqEhXxc5;&d8F$%NkC^ua+fe=Ha19YA;m&@!Q-2?RiGEmK(uG;U)N-%`y> zcDYX2J+Ry&1X74VYKU;4t+cTPu&1b0DDIsSq%*9e_MAAOs)}fZf0{5|0*QHSTJ&$oTP zK6CD_tlD4mulD*?&Fa&&1oryyOT>CG@ z9T!%!E@}db+vxg~_4U(oz3x!mh1zfIoA`!jw`!w@-`)6SbF{}cUBCIwD$uTbI`eDY zF(t|DfLl}2@CI{5*&_oBNpgp*A|J!*!I+S^;m+x>^VYFbn<~hB84a!ny#aFq7v2;y zyAx=yajNd^c7y4+UMf`IloH5n*CLZ)+bcwo;k!kvUn=;f!{6Ci?*n5(#8+7zQDTSg zeTr{9g=E&=bQ&kNJLN@Tg5_$@!IX9Hskan7UCx??W5R7X$tQCAE!h^DW#2PguIiBO z+*2a^*9?`3zzz?RGn7Mz$`*yA5apu2HTx=#A3tzh=YWt6HHbRAQ8W zPv@fMsfQ$l=!xj#k;A9{yfdqA`_tpS`^Q#!TZsh;LQF`+mDwLXNV#ugDbeu%%#b>* zQQv!e5ExG?>Ha3kC?ZUKA0QOhtC=)nRjL`)Q z(#kAexU3rOBpX%iOf>)cz4SM>Xmc>2xUZ*Vgy_}jJRVG2j{u8y7H!g+CSdPEdsHGol*wu85+EAuAGFHJ@l(Y9O@@dC=9wyDDN)jA?EvQZi=|rQp=>y6FQ& zHnYXDnlS|3%o>2&kU6*oLEH&FKHWQjj_P9+$5Ld^Ip&FywGS|)OsL@q9!En6R;z^Z z?_%>v>$dhxBsqCnAPIQ(cAMek4ULJOuShn_^}55c$7B%ZInEi5kZk`!WXOOftV%kUVLyE?ottpm#wDnAtb5z;yF2u5>jk`i zlfd7$rP-{|iRQHW#PnoVOBCyf%j*N~t{bw!G^<(0r#5%fqdDDC#YY~$etYbE^;UtF zBP^2`W0_4?y%EEcIwU%;;35Eeg@%+wQPfkjbw#)Pq_-HDK29qK0;P%yO@oVy@QV zrOcsoZ!Iw1H>NC8Lp(5&V zO#e(}pgIG;;TU(WH|SvC>vg6Ral=o)9-TU7yIIp4q;rlH9 zczYyzrvtsSt2$IN9mEOw@ZEexNTeSi7u z{0${~dqBv-4CbeGFr?<%oB^Zz1mn5~J$ojUUh$ZYp)x*Ohe8d*WeH)c9O-W|!^^G0 zS5X;jiJ>p5838A*truTYCxplcdTF-MCA=^>QMe4%YpWq0))1y74lB!u{9%CGL5&nz zdy&M~Ovq3;H|ju3l!D-LqXA};9Chm|NQdC+{Dam|g=6?=1A>=PDXK*ZqS|#(LKj_L zYaLy%F@gkv;7QQu0nmGyn4LI;84tCE4ByE`Sn8L>@Nrc%p6*1z({mnuosU-FhiBq#Hp~MC)r4E1|9AZRfUF-v*fMuP+t~=&=0>u zjcv+8R<>X+;G?AjXvb>8mB>(X7A7c09!-N*%wXloa0PpKg)*vA49hVH=rfGh2@Hhe zlPvn7Xg+j=g4qd4ESSNP@QLR#k#`BnecI7efwTuLbkD8;#Q7|Y3M3ZIOFB~>A7>CL z4~d&(B>pD&ei5=)412zkQczTZD{xbns2C#%6h4bp!o#){V0Y3IPD>0^wVaY~UQH#W zq^6-^M~TQWDhAI$uF=6M;t+%scyl*<_v^G9LurO2c$p!>f)u+}aM=`+_6r{c7bVY8 z=>EH`eUI3t?okQ4Fq3u?0xPE`-a*5>Me=w?62cemMogTn@$*o*jw`!zK?FPHff*EM zWY!>0E;k|LT%;jqjBq3}bW1q)@QIAj+O(r(R}L#(8R20Yv!LBASg(?-wY+qR0BS(S znUEuUrKHAqnVGQ}*;f8m9suPN=uKIPCfZp=u_zBAl0?EOQP}CPG2eK8_jRsc-{luU z_4mp|xSj)&jWl=t1rK2QyIxz<*~*D^S+G8rcuGCd1uG z@Zjo$VsgyJxI))1oL*1ijtBDFTjhyz1%^P~hePZjq58|@52+${vf)aqMb4$smZODw zFa-}ojS)KKmfDkB3Ip(+0;oE!(28p^V!?K9@<_d6Gwkx+qla5)@wExXtu zxbWg=u}|>9lcTp01@fw1CG)i<>I0%8dN3zkw=}ZVv@oOSY-`b#z!En~OmJY~3F9&+ zFE86TtU?alpggAZNiny^-izbs=Hpyf^x4)UBxrTMHa1I-KynnId?naRyFm2)2X}v z$dq>(SAKP_+_Byab>lpN369 zW9F^Q>l>SvjJ7T&B`wiIYU_B5zO)60{p#v!R#sN!ckV9cWW6dXU38^v+_+(eWi~8#Esn?CPM=?Cr@GI$Iap-}vh4F@P2nA@$xv`XV~PmG0{H*e?Wwk$r4M z8jFe&x>MaWwdUpJ7k%6S(_Ovl4-%cF4;?wiCJ+4l-AzpjH>$P2?_{&tz+Db#ATBOp zX<9rT8P(JCRYpek&D*wRvisBv7Lq!91_1^F{+y~P0wg%s*#@|8XlMuwA%VsqC?m3)-r@+!|YikD}j>+*U44MdNXR1jwKH$=>OaOQ@G$d|)(qzJ82z%R#>%GU5Y9i9B zG!4~?>(hHO2;IUlt|n2Hpw`%yE^Gt-s*@43gM>&8B)p3-HVjgJSsZtyj zmC*x2@!Yg{YR-R11iqq(v@Ge~8)Ylfxjh+!808&YQ(Q*j;P{go6H0eQ9xI|Su%#8G zfR^p9S>hzl!ko}qmee5_Z0zkAXSj@;Cgix`+e~RFWyPUsmn2=XvmUjjha_wQvPOnF zk!phHwItN!$Q~G)6E!x8a!lI#Ogj3MLvnV6aMIoC5)xST3ElK*feevQ*;F+?rbZ&C z51KkeFkM;_D3f!-?p`s#y5khJL6JBEjMF;M#M3t7oEmmc77C#}p63P(7#W2G63u^T zl0VL<0!qO?s+y~JE>IqdMczY6Y)*YuZ6o$R>U&Q?U-0RV z&nNEvoi;jsAnTr>IdOh--ho=+Aa_~+=CfYl!@8ENzkR_Sw!G7IE>58v9$o0Hgx*-z zTKxQ6dhFh%hNlK&9S?k#5l?)otL)y?qM$8)l|ZL z4lVZuPnqeQkKLI-`wpSKQW?%TJp?IOA=k}YlR%vY%SJZg1Xl(5$Fbjm*Q>m=5bkZ% zn7J=5TZ;p<7M=%bX>h)^00e z!JPyRh#BK+xaZ22E1EK}1D=tMbhUswjTf*KkqB`F!X`goeQx1!R!}ftyvgu|WaP#y z+P&9{b8mcFb=-QlwUMMY-)vh!B_ZUb#@^g($BV{(zcRPpyz`P#fjDT^;Rg0eoTLcp)2%LY?3a{e2HJRiHuZHmYn55FVdeMoPfTO zCqgoj0gRb}gda$acu7K?o*?2Jsit(q)cNAK+yM2iJLYQr;cvs%@L&)a1yABduQB~O zl-I2P)EN^$-t^C#p5RTD@Oz(sjPaz_b*?y^MGi-?be|G#70K8RrZie_Sv=}BWV2zV zt4l3u@{Pe0Msn=Q&#?TDnLhOTL*$G-1Iowhb+mJn>T#y2*YbQMi`#Gi671d3ONz|A z^da?@!&Kd$gt9O(ST-^%yfH);NT~@RihhhjB}mzRWSZHd&a{Gml&Rr(*|XNidErv% zD5z>wFG)T?TPf5!ikMJfr7VIdEWu@$j;NVwTB2-g_cKYdnwFAokrh-yS0D?u8(^X3 z*J&6}#7Z4miCmJ?RI6>?hxF7`tQK4TGgxA@aeH+zxEw2!jDVjds zx76M!S;uzxR&U*|^BG3pMRQXsK^@ud=E^-m$v3?ZehzMJ?0kf16k&r16q!2pE00dR9izM4Fk9K1A%#$b zgwxia{D;%&_xRmK<|PZBx)Q|T(e<0(gFFiQMjyw3)s*m~@$)NlrW+sKsAFCcTEI@R zBM?@hKH(3at__h3R}mE?U#aN-cKmd+@rQ71n1h+Li-c3dLxzQ4^>A7Hix;!zgT~|) zhfn<*_6D`W>;0~|-Wi($+??u4j=HS zMlk`AA0wdtDukUf66r25tmdnKdpJ9$$#Pvnk?^#fnMU;3jRvpDJ#GyiVhce=Fe z+3SFS-M!ZiiSF+G^2;m0Pta^Cez2zg*XhG1X-dg|US+QR7E6avewL~OZERje`AP4wLW+j*u?a;yIz{D5`==w#QDgR_( z<&{JC6w{pr5DT6^Fg;_Gy`nT=3M^Dh^SPe^P;D|qn&;nc?Rkoew8w*wp5Uk0NG}oQ z4+nde>-$5>t%R3WyAu)A%QT99~4FP1FfWwd>A@@;7 zOEIrYljjVRj)UB=1{orZLh_^hyD|G|?6v^V0LK2}BezN=;mQ)^Ut{I0Q$k7*$|^9T z3PeQ*nSX?hOktBG2GI`!Q|GDY3=LA{n*;3mG4xV|9S@%72-S59JcftP)myuQci z-1->oC@0m0jWprGFLIbi37K-u@Ix)BM~Mi8FH{Ea>EOxO=$Sd7d~SX7)iXHXE#f#Q z9uifPDQ7^B)nNE~>)_5aAnO=GiyW+0S!}9GN?`2eYeCtk_{cN-M75GkTkW(U0&J52 zg5g48HjMMO(J7yDd|F(umu3FKXWkblN*LIaI!LAp?4&l#iRc@pfjz}xUiQolu+1Lf zV2?>kGEuCA5eABi%R8=}c8aK+GI8D0FepbAyoAR}=ft#&493{1C*96)K(O zA`cUykK5)y6z8n3j+JeVm5?tVlS)q$!gF?Aa2LQWZJ|z(Y;+DsW;6$@>(^fke19;g zDAV>+l(s5scPz)$DIb16pFfMV=c8=1Q!HO6s`V74Ifd^m$)z#FMx_Mx5r^@km@Z9akT_s`8B@ETlF@sWn-BM;xj`g&1f@4o< z(p+hSncG^!GEM`vbckVPRhAQMO-~DUyHQ?-GAqk_QkL6UmjA?i-^TLH;PSOKZt<(j zE8@zk!ANb~`6{on$H8}a8-1!r&sWK~R~WmO2fMR3y8Sn3(LvsZhJS*__~>n6n_GUo zkv}l-eaT2?exKz+;mw`8`nOB&%p*~p{DK}PYu{GG_7DG<)6Fe`b1!X!Uc0aV#}Azk zEUfM_B4T2g^GS&{PkG+n7ndGXH#D^X)A~Yq*wT}yi+76`X_o-8(Y16B9M}&Wf{Tu1 zU?HrxI-sScRbNeZH9|k*IVCqEV#K2lomblatpf}QeWS&D6d$q zuQxjSb4ft&S$I)*{I~-EDgy%pAVOUD`2z%W<6hpOp&?^YtOpMtFTH)!)APmI*=32} z(ekG4)vMQ?^-W7%9ToSg06`@sCAjahT>2ych6^iAy>Vw3@Yr4$`VP{vxwkC6khmm8fLq-|Vlj;YkOZJZWgSuD6^9CkyKsw#@o+&^X9Yf1B1tb=rXlSK}n_Cdt zQ+Z-X*2}1(0W$MeH_TuPYFe9EaajP)rbmUR{Yj!E762JQR;=>DS1nZ_ zGmB!nQT?;Jrv(7C#CcJt9oTV9uE;H`7fjBUk2N-mk_hBUkq`jUID=jV01IFiK%k6m zcz|LVql|%3A;|jxvAOBVg2JS*S3Fcym!T;O_z}QnyE6krB#h390Aseh*#N)|Gh{Kz%~$qB6A zpBd4&H}}F8&rE+4#Fh%l+(;SG{-)xa!G5&{U+K$6bqYoIZp=F$a!96ylwvTYKU$qE zTo*Jn%iDMEXZ9ljxY(i&IDd(rNsdNU30>n?W19MxFSfoV9^G7!Pul#1(vVDY7DPbd zi`9rEo8_vc{w#YSN?lp7UdrLP(``1&EejsQ**fw)lfta!%NS#{ZX+GSK*+X^PLBOf zg63%t<@$HVo>MyKvX!5%76N&Z&nSQ0pkyx7(Xa~IQzk4-urg3~Jc2H|C8Oddh#+}2 zl3>uCT4Xp>3*8!y+?N{j<(%fOWdfW0L*0|IB-!qXLZQQTWRd!tk>w^u+QP{b}ax1n-{ zbasJE!yG%?v9I&OuV=f$o>tjx|2r9H966 z9Vy_3{N+>n_w&=ur=(vzfh$yPf)cBoxMdPC?alb^!ji4^r+&@3JC8xE<{3l^$B_R%TQ^T%#Dj*SlW4mcW9&54SkTz zi&xE#>_1peg2+U@{-#)DFIM!&!yP)^xK^S$!1L52C%_L!+g?kxuJfQOx#g?;i34ab)^FFT9OdZM9K~)%*;V#>4M`unJO}Xxn$W95T3=} zm5bW+iigR&J1-kTokbB&8l2r^8V_EDUomSGf!>#uuP?^zR?s7t6I&WrJAX%QCvjkP zc-*&cz9DQPVMRd8i-)2YYvq+8N|JK6#XBL_D|VznKGWuU@B!j>7k-wjVq_knDK6Hr zt8P?w4E2ClYC6GHy#s&Bi?wn(tK5Yk##g zo9@y|Zg(nJS8cXkryWLziqouC$n%rNt#3)+Obv5%{*ak5b!((g{wLo^XfJ1-gt-4<{@n|v%{^Uk9_(?Nh!KQ#qkrZPRaN*nVAkU`$_w@D#S=hs;%Hy8zz!-Kl!|M~DLKn{~9 zx}1AUdI@D%t#Qda_NYt$YLA*1@Jl|%3Ti79BwwpvZtnY);#1ds!8E8<4l{XuX8!Bc zMx*9$dcTwJg?!h%SJh5Gn>3VnXJL4Cb4~e)ZBx|d-fz~{bB&wG7mAM!R<-YjG5*>PYkxYP z*xgax9>BS__>*$tVebl`%i3=9KWqDHvz6Y7+4HA_DTjAw>YSO4pI<}&9kAth^*@}M z(%+}>q%93!J=e}{&F_~rU|Gwlk`cDa&qSpL3t#W!u%T7o{&)~C@8-)T@AU3R9_Q}) zJbVauBa`%Th#|EnI63L6V}9FDzO_jk1v$9s`6SXdRPxWSt&EXP^K<9a!%T$l7YBcT zn=bKLYP}(dx_u*3{bQH)ANuE%uz`nP=YLg)xO5?u$xu`vL#h-4=g1Fc(*NnA|L6+) z+8p?2n7X>fYXX9u;L=@-!z9CDA`jo)9HdP%d><{`enMf0cWsUaUr=&aCxk;;{<3(K zF)3nGHQYT@eu@uSiHGV@kbB99pBu4r3{+1E9VZS~p!#AM2>JpEt}VJOp+U$k*y9|C z3fCM|jq=s5y05*o&gd|`|RMMF?$0-Qtbl@jUkV5CB z5?!vw|K@rxuu*yph%*b3`U+-37bU{(!!3ZYoRg4K8a`T+#8*yqxEg=+73=^n`V$TF;&V^*2JD) zI}6)OyLz06I3N+kgrS*mlFtSr>}?4g^BU{OiG3!OM$}1Lnt{8~S)Ru^X{xyEs)87> zw>gG~$$dfqhMFNGBE_jTv0=wLQ>r{X_X%Q-%)-28VMl|Yoh?`yJ{;K((Y8sq8o74X ziG6%1d>MQp)CPjZnfc^PLNFTn9I|sN&CyhE#8>dRX@SB2g z#^apvFg=dE2R{4mNKS4bdsGVRKt}B4CRBgAHe!P;41((6J(VCZ2@SS^m_9*8t(Mq^ zw$|nzbq~F-6Pg;7)Lu$&lEOZ$j#I)X>EY?nW7Y9+5p1l#XxGbhL`w1o?#6&FS648uHy^4wL%A z$XL#SY=n{sw!h2UfuCVZV$Kfd4+Z7fW;1iMvO8n5j?|`w8Wy^}58@m;%q;%b z?5&Hov6Sw(xu8r#)ijD#yaBJUIR;^`ay=qD_J-qaiD&$Q^3W%qSr^JO`!C(d3JVKs|IpcaJv|jT z2JhZpayq(0XS3zT9g2#p0e$sUR^(V&*VjMy+pKS8Werg3v6ovsL2tR7_MsEN6!*cS zrKW~jTWfoJho$zm%HWVZUBZ*Ngi&tk;_X6k9amHPbSW~_-Q6urTX*T4E4U-{t6 z()BHO8v&S2)`Lp_cfemu!24bfHn1|%0Td36Pl1~^z+=-uSqErkQV8-PfE`}O1W;P^ z^QL7mdjSn`wTJ+A+RbUq@+JTrfG_~#fJ6(>+EA}}JgLgjiZUt^f~zk;FaT}*g#cj<^|p2Qw2Wgc>43ffx!5~+gH&mpU;}b0fK>x+9e~pS*tz-BtTy5t z519ZcWH8u&VUAky7(iYXpuHq3MX!yrfaL%M0%ijTYYe8_LT`(gKhSY700rt3aex<# z9;ElSO}RL*+ugDNb4~Y7?V@-Cj1n`_Gw2`#oD=n_GT6*Of}u(7gF1jufY2C8fStrH z{+58j+En#e%+l_mW$FZEiX-YxwQ|KdbxCeE04f2f0-R)O$yyzv0vH1*2?(^Pe2lpZ z55~3t;N`ffRn&2Zx(C&XAoWV;Rdh{GNKI`6@$g6+K9#wq$m&>NV zr)k?DG_&^`j6bhF-18qU3;M9Cy5BJB?>KKWTcUZt;akl2H}ovJh%5K6@I5}s zNo*bW5iI>?JqW7$d%~uE(KuRKVWr=X`iq*;-~XrlST5gND@8bCN~umA_{(KqzDNG( zUgz*{`B4TOQ?J89>XuK~3^1za1rsPm7ZcpNTlI^|5HDaDZ-`1AmbCqeavWVn6#y=i ziAKu*l#cognLG~#b`8ZQL|E4mK7$U#bVzx`MzD0Hl_7i|v2y7n529#-*N9#v@4$UaprQy4k@=Yz>+K50=fMaahc0zRgD9^3bb8V(w3G|+oQPV$Q7GoHIOh* zW|VU9Ky1=Yww3OPQ_^S|G9SJHQp(w{*y@(ZTDnEJHhMvQIwvDhyH|G zhhCG*g+DVAY$8JtydaGR#S`8WX2scfGbtECX5Xq+gJg1(BqV6!HR09`CD)Sscm`x` z6jzjjJa&XcuUXhB(o5Ev8T*|@z-TqRS?f(KNI|~Lei>#U|M=TGvi0Wkd{}5f1kN0{ zHUIi**R1U^l0bA}hg;@FSMuqaO!F0+t7>)zDRhb-$?KpMqm^7m-e8<}jU)@kfS-@K zNjf+KgzuV5yha4FRv`YSkFL@Xuufd64I;VF!XYON%UgOOUJ}}@u;{W!_>gKkFlh`q zQNpn&xcc*B??WNs$g1JWYcyxd*2Zz3)E4Jo9%!G1i5Bg93zKaIzZQP;t+BbcI`;c4 z{xLa%B~JGStV^5z5L|uaKH(XR?u|Gj=53Oj@Jg=3`KH_1Kj<4R$kZ6UxMlD3{nVe& zlr#eEUz-Z&vHoKg>QmoiLVulPFD#uxeNMX2{jFCj*CL}wneY{4Mz<kdy(X2yrOZOZJHJl%UqD(7iilJS0{=5s?^GoG&*HnON~zk+(05}oU@A+q|NC#vdZ z$r!<4Ch#e%_+jC5S!mE;HJ^Td=y$flo{^n&#)+i9hga7x4j+1G(W*BjRs1#Nl>MDg z9m)(|$DX10WX^uvtklPy;-20*OHFnfGxjRo!$r4tOE^R85mCY z=z_yuAyvpY70xxG0ApRsT!)J*B)ClQu_9XJT|>kxL&SPolqMs>fP^eV!-dt5b7(4o z<0HhyphXytF#ZxcVUZLUZ-X2lBw4c{B3hD%GBkxinG`^$GoZG(P$2_l$Y6@NiM=dV zpG_Q^mtb9k)Z}8k#EDIGLxe{F92`1gAW$OjLf`|W1qG-rl3%=x`pQarlg0EBW9BFN zD#rA5W1k758d(rS9JGvz_?h7~!iRefU$qHL-ZPT6_fyJex)^&{n3BMXv4Ef`-1B57 zn2RAI(vW>j1>1~_hC!pZOUIufFd|RHxEozpuuW-y$+V7zb6GLe=4g9L#f?fpMYrPm1#q*ys3>@J#3Elce<&r%ACJV{OlOIr}nq?D2P z&MPb>X*%`?KUtHK*LECO)AkZoN}8+ZnWs+ zet48ySC-ozo7oHw*FNQzmtB8fo5OU(eF{3|?TPymbmq;v+Oywm^Iof*8&)~jt&=@! zgnRrcuQ!M#s>N+mIrZP!k1NQ2*3;oN(3pb<56-TRN1E_u_vyu7cc zrH|gfUl|s)blPFm%Nv+4z6-}c^?X_C>i}|%B7K4t*ypWzwA9_T*bknQgS&R^0NK&P z@3Ex>CV-(u?)_0F3%nmcbbelJYOpaeG1*}>-q|rfG1d3=OVYL-^?4OJIk}4;-z=_> z1t(VRuiA_?wU!Xb;9WZ=>4UFP9KRaFE|4ZJSTkLU=dZ9zc8Poiq>Fj-#Q9k1hf7m2blb#LEkKF^u!3UDaB%fs z7!+4hZGgpGuq#AlAGNH-nC8EFRfAT?Q*ePeMarwrHb0_lC%ECVcLN7w!mO<2k>E*T zApNwh~b>nsO+ z0T|?OdW8DdsF5jGr?n|l@L~;$Zks%{tju_DzV-j<*&R;Rk3=onR+avL%8aA==C>+C z>>ic>bI0-Tu~k`X$ZTiq+Wp7%xwezAh^>*x#fFn}Q5`A@o;J3)zX65i2ka>dFQJ23+M( zZ{}Az7?|p3E|%?BZDOrA(;F<^BLd2dC5lCa6!9!_&5gH_HyuCwf*i!5$%D(Fk1vY)^W2apZxP;U>AB2B+a$fH!pZ zO)-vrl5Vlx5Z$SEWPCIgp*Rr{ld<5;QYwFFJ~W*ce47qc<{~ zaZ$&JPY#v;&4G;Dw{w&X)X0M>dGrC*Mg)|NLrO!da1n??V?1M}yBZ~0>9mN5eIP8p zGfr>aC51|XL3}S%LU+i$d^VFxgx-q^eySPrJ?|-4)>T?K`E;8acc1bKEi((m#*Q`n zloXGK{H*5$&%ao$kMb5Z<73nuGm-Mr4Jc_XJ`d4pb%d;R#GiMsU{`t%y;xOq7?}IK zQbOP3OnAx!k2({&c`HHoI zABJsE{Nf8GyA=n--?OkuTzVsnz~y1|vv}LuPJI2mPfA(x?H8b`8(?56`OEla3lct> zU-MuruuWkqj+A{Ot6{FDviZ`&ga)0Z^H7R_k3bWivIBac{y1KJ{fy{c^}$0mYZ6;x zwwOM+ce+(i8Tp5IR~k8c38(x`X8)LYs_Tr$?7j2B7H0H5)zMM}-H5lME=ISi`xgV< z_Ti@JzM5Kv2Xd1*Jip4CZSLv4Z*!yBD$|dIU@cK3zUqBOAiHchT|@Squ7V_~sM!8B z#ndY>P09icOpSZ&7vcLA)5);a6^!FBf=!Mjs!LN$vbEdcm%cKyrAgqev->dKT+Ry* zL%i4Bx6&9A^=coT$=C8_9t1hivCA3vOYv|O0!)#_&qLJS-@|`TNe?{7TRyf*(YfWQ zFM#flZ$OVgBk@R`NO7QsosHV@wG%BZR&(dK9p&>BRRkNPohDNa9V0i62-jE#Po`bU zmfe%YW~vcs+ugVaFB;xjbI4vA99x|~=Dc2SFmNcN+Pv-!HJ$M0^jxa0|NVIVfY~>$ zs+Ti#?xz!9M<|_E|DDZWuq9^NTDw~P>%mb$Fcp_EPZCji1w74VrD+*-_hdzgNrY zXw5(~d72xp(@}@lh*PizgOTf8S{kHLv zU$1VIj>1JMv!3?2aGUkhUSlr}Yw1pBH9W}P1HWc@`^$K}t=+&@$O;fljCbGOeTW9r z580q@))MjjOG@gl!INL7&@jkc78F9EK&Fdh_H4V9Oovh+5O6mq1;ItyU7YXVDY1Pm z?T=5+c=H0H!sE#v-v*a;<3aQ@V=!!rUwRi}vkigKV#K%{l)!+Qlr&2dh!GiU7;w!k zytdf_Z2rfnb=OOqq$lwxJYxvuN5Sh@#d__2}wm<;nge-U{`NHvEX%8#mz< zo1UTdl_EQiHYTg(e*R>`UHE>mFi3-S4FbnSJp0+eDD)7(bbMoQl)abyE|~qfqb)5< zf&6USa&m=^84TilC>$IR&zSQYABGY`=mM!TT628sKW917=ePH+#Zqe}C_W7CUQ$2z z>E7I*!>Nn?zxrkcN_(B%MLxMr@>`6;N3b zlh#-w4YsyBVnew1b_fk!8UciXTOsgqhR-fT`PWk@BXOvSF!Il13}r_Y{)o;r4r@b$ zUEoG;CHNTOu+zL{c2QNrZs%T^5MkG#8E<#Np*Xvec%XH#@lX=0U;Dr2^YsUOlT70VzTHg1e67zV5K<5e?-fL7{bE{xCv6s zr!2TMR zv4~EVp)wjI=5SNLNoKHHrBj8LY3Q>F8&r}_327!H@}{0Ra$uBM8N*lw zu4H7f-8RinDcS~y$jpLmRmN(wqepkC?gI!%WdLT5_j2&pz9H>b4dmVLgO*PA6g595$s6@PKRRSgO0+AG`Z*$rj zsq1C2$$nW_=jJN}UhFjkxS91;6%mA5a+Nx9kye=fkq~31Sn^!fDwja zb*m)z|FHG{;Y{%F`#3(^{2m)dBWaa{mPSj`Vnax7t&*fwqa{f~k|Y~O(qgobTN*7% zOVX008jU2kmfVu$9!X1Xjifcq=dqse=j-+Uem|eXKjqjQbIh*uIU5^sfw=WSjXx0!Pm10$p00hja9dIjSTGv|NVPm>DL zb|Zf3VSXpCQUC)a>i9ZP$+!@%N5i zcgyC7CRJ?IE1+5A9~!+zk4z7@xDhd05u|q`p^ve7OV!yE7B}FpZ|qgv*mybju~hpxIR*4iU5{IjzNl_9{VJ zgP>E%5Wuo>B(AqR^aR~Wx1afOdK+&4JaoH1`*xr5wsiFNkn8QgLaHT6)i3Np%YD16 zp?WO4dgbNYT1)P%%|?Anx}&$GTG?>tecv5b(rw5i6m$a!))Z*Xp#CndL6HR&7+~}L zZ`gY<5Uy6iGBwUNMnx%i2JG0e9fxD!=5p8^Z(q)G`_reBfP{7ANE9G}4UZZC!>se! zJhv}!&T=7$yO{g)Pa2Ju5PoRZljQ5`qY}3QU8<+>@?5om%jH&7RE&&H0%iuRdnX-M z3-I_mcdAv)6jpkAPINpVZ9TPu{r0PY0#%#D0_H!!0J_td`7SPux$6~t2mH*zP(T!& zS39+|b!^;7oCPuLjZa3RqErsHLH5>N3Gu)!2*|>mq#JO{(FP$1_`qVZbK1I9Ad#_v zJrhM&85y;3sd>H>v#$yoIw+_}u6h)$~{w5V-C(f(8351i*<_@5esd_pQj?Qw6v~w(Vb}8v{Q+&PX&aNEvEj5L z#lTcPGfU1CO2ku&DG7QhS~ew-62%O8PCdcO%gGfLMT;mXrCUTY!<^#ft|*xvHp&CX zb4}(tQ0n**(t=@Wfo+s6Lh2e*TEPm5>TtuV7ftq=GPg$#kzP$(C1O8=R6Q>l>4>X%bi5R71V1ua~@(4j6C&QwSJ0 zAd_I}4)DhRN?B_5_#eOFZ`wHvWJ#cJ{U?eMa7zdTqB9Sf*DbVoLtd=j-_mDjfB&?m zGH!W$;s4+E){6E-(uAp4yZiqqi19M?!U`_-b>g=Fjqpfo@u?H+t_}M??!pH#S356n zIT_IZ`#{#q2dnouGGXT@{u|-p7EyP>d_#06tttO{?I+wt#)sa!2P!VSYvKK8zpJD6 zXb;5gyEyx+RZZxly2)XLbbaaT;(@;&J^1zy|7BH5{&hd3sXfkie-5?fihXct*5w^$ z^*_G$-aGP5*?G5U%}$y1`~#Zj=FIP(FZEKY(*g?Clx#c(*1JH2$MW~HGtpF@@pp%A zERX3x=ZQ&-osH{?QWU=8j_Tg7Tvu4T3p-Cd@mgZ5gc0lR$z8lM2S`@{_lI@fKo zmFg>D>xd{Qs7@B1V*YjK1Z!bX#m$l8s5l09>o(}A*nW}`_T529AjYT_7U)9pDuR1S z(~LuA4{S1nK8A6(9CaR*U5k2hZfD7H)tVMl-)2&3sYkp$%LqMd=fN}Y<$-lC2fZ&< zg1UxsK78kVU$ed~nw*OAXO-Qm_Qx1Oc&E^b_T}@o7RYPWHn+xV-(SznFtzU$F`($h z7>EZ1sbl0#4%JD0M&cJ|n@4x3&lWeX*S~E5Nv8a(|EFFor%~!nsnYxClr{cjcKUr` z!|O14lX1^L@yZAOl9{dbiZF8ZQrIwx44_pAtVihehR$qN@m`X8%P(<6z^F@(pY!YgMaHhcFuonaktm;zpb$=c~11a zuVCJwLdOeTxv8(EN;y54wRO?D#EtxzX5GIBm?R@Z3Q5Bd4QIx8X)!`1>86Kt;{Seg zt}xoQQ@k^kY`B8-8d|v77+p~W%{xpsJ;Xbu9B=&GA7*NXa3pKsVtlXVFLHiJFxxgg zKKmVYC$`mGqN4FKU%aAvrurosHegIVKoDa`-z8ToOgM&2P79}s;}yub{fu0Qs%Gq!Zim9nry zST+rA(F-w8l;oRY2lc4~O;AFN3>CHBD$Po`qt!Ckz?P}OV^}faxHE@VSTeP)YTbup z<_`Yho?&pT4+0w|9|?ID3grapZuF4C2;Id!x|rjO!Ik$4k?UfTFB1+YrSE>3t^tkl zaI42dT_hF;FccGRU6Z=%4zssqU;EvEymC!t2Vex=T3FESR9lIwp0*5%Dy>GUu>#@xiN`$mi44X9Lgt$5-Rc+@2nPD zJ_e^+SgoPJFp2xlx{9SA*Zp(O-9?n@68zYZ#wa2$3LIj^`z(Rm4>ltjr17_&r;e(8 zAN9SpI#D8cJbI#jvfwi)AYNs#V;;>2PR#WEnYnLA3thFtMBz!Z>Ej9CMD9bW@U`8k zFh*`;A8hpx7iO7$rqAq$f4C$1q+{(ine_C$+X}vR`WNK> zGzNp8^5eGl?AK$)Gw+UAeXIJG_WAfX<%jqDpEtG=KWDs38uI+0SpDTODdp+x;0E`9 zC3kcuzfa7xd{il4y-JziTw#^|^3|drqIuPimc1R)nn5X*BGEz>hgVAeX3sBm>3Yi~&rYyjl+LO=Z z$Au@qO>Q}xYP;>kHnT%k^~P_sv>dT%y*_F9Z6~(eFrL68l@g784>Xi`5kZQ)_KUE zHBhQtb3+a6`OvwWH;@5%B&slu!OYBFnuk=7kVLsAotE^Ahul|~vX_VaUU%$a<#{YQ znn*gI>BIhh1G#~B5bTI`D2$HPLcc@K&tos#Jd{r4vE8yRyz4b0|I}16O{JBIYh94% zeZt{Jhdx(cnBwJ(1+&kuLlP4&IFNIHWaa#<&-te^_gg(wRhc%4;Y2f>IKPS#XL@rV z>TnP@jV44F;O}x~Dv>(t^YnM;p^Xlm^1gsPb@IH=1*4OPKJ^-7&GRdQqxVbU${OPh z(i7WVj?(Ax$QN0rNABh4_2wJrAq}3xke{XNV8)$aj)fKn+aEL+%%8jznBCh|LqUX;LM5^CFnG^vGKq z$OT#Y6t)ocImZ4=0cyeq@(^mp;}WFNU+Z9j4~?~-=coNbxvxk0+G=>MK$?P|EL45d(id$tWscUt~Xcn3q`?LD3M} zp_G)PZ!@)cW>Msyc@JKo2)*#m=_nW;`dyw&egH8=X+E(*-SRHtTrM%pL+aN=8OJ~t z)=A+zPK76AUed=y-`hYeM2Fj6T-o&kwvtJQ4|4a`MBvQh4S!yKuX~mJuCTkPV1ry! z=Uvg!FIP2<81buLWIIs*@BLdR%DTs+6q4=uBZS38xaoNj= zGU$@>WyPo^dga>1<=@+kE&9q9jF#)RmpNADukpLaJ$!AQeJ;qTcWb-GHNW;rhmQ-r z=5~(n9?7@KzGiip|KVIY#jkv0$n`C**H?sG54KQKC!aOo0v_RC0!1HseN3&?!J$f%pAQ%g!px>;FsnP-MZzN)G#03l<5 z*owJ}?Dlg0Tuq(Jx^+OAQ&)ff+DQ4T-_>t3&5HFb0=$b03>5{Ojiq3APOG@Wq{Q#`4r$u zK&k^769auDc3WGAw9&1Z33$?UG=u48Eh^>nI!24+X;cT7s1C7O{u;1kgDX|}zNpdy z+n{iaER9v`f#yFE^)z-wP=kk+^6;dX?vY-pTpkh-GdwAgBM8I&iq2rmuq3aN@ixGj zgij=Z+W=Y-XXR4PV*!zlmqwHG=wj)xJUYU`1qDJVfIh~^4vzpb7ho;&G@+pjsXU)6 z&#w;&BND@-V8Z5BGPBi@Az4Zi#bpYh!zcy~#-Wt=TSHLe&J%W2g3efX%7K72qJy|lP- z+?xxCo3oRDT>+05p4e$g016~vl7cQ_U=kD1P>eNNZW|2jih?I4-O{N_9({n=`=6~X zwMYllQXtPwqJB$vz`ObTm=*}WES#V?U<+dqHl_^3he~Q?m%;ywIDLMZ0v3J${e16# z<+wLD{5~K|EztiX$K84>pf*q6$|LhG+>1D>BiMFraUtW_)BoJj0>nuvn8;mCUc`ib zwQcLUGw>|y_hsR`e=K~r1SHyeLe?^E}Ag^@RXus`Z`#*cwi23X6I zrdj8Cb4kq~V*b%nJ_Ku74lG(TW1UXD8KukdxBbthJRNr8>{Wezoaov4)pfxwnPx>R zC|cO!%8xn3>4*=J|71v;JshHRqzB!8C)hiO!x!!iY#Q>=kBDfB`y*VPeYh{f6S)CP zYJvua*L$4W`q#Y1{? z#nlvOh>Xt-Djq3wvTbjM8M{Otyvhi%AFbq%CsvY>me@@<^ge;J_MFW5kWqoKr(xjc ze4-H)d9p5Kxq#;v`L#xDHuLV!AG@WSOdXP3_gy`xbA+L`{~akb*g{YB(AFX1VVCt* zQHC$C6WiRr59GM&9lhasH!D2txl3xiiXM$WR*c*-IcyI9+yuAi`1LQ;z!yb=82NHO zUwe7QXOFwXmz5J@bULe?v;s2w%J5}v@6hw1PG76zzC#gvT5N9!oV*sy-^LcK_!MKAVt4D=6?ewIzjA->6Qt#eGlH9V2h+$4f35xZpG)4|kKn1%u||%P;6r;S zj=_vlr&vRCy9SPobeWa+MBI4n@D_TC>1pQGd$vFJ<+cJZb5}`tU0?Fg`MpPzVSkj7 z>$vw@E#EN@n)UphvToev{>_6+9-f7pP6Ih^!OCD7%kJ)_U!QqMJxv2oz8vnkBLmp~ z4)@*5)rg#eX@3>Ib*TLMGkD`8kDKowOpMykXcRKbt@9bRrJ;*wYR*RNJ)21Y$7_NV zWOOS^(O`_pD}*JP3=#&2j_!;9+Ta+h zp}(tM`{)&#rZu&xzC5ED1B8wh*j*13Lmkk8oHTTlNCSgs#{V0O#Ih6g5tR^aKTevl zElK!*p?PPo+mYN=F-$8+g|_Z?2y>+*Vex_(Cgcf9x|#}ks=R;R%|k!KQX$gbkB2eO zaA3GBGaXD8Iej$_vb^5msZr^9H~x&PCRM6yk4ek?i<9oy4}(A#Qpb3ze9S0 zRd8qRuBjzZqlnOXM9e^Q((@V(16Vy|0XRO`Tod9*CBtcy@8A)ci!ma-phOMh6zSg6 zRBZcxh$!g}s()#4Dxyj=-Oc&0FMsIw*+(VZGZSL9q~4*6=X;++2-GxuRzX(~BP$K# zeOuEgUfFY1>x4;yf!4Z<8oHF4=k9KzVavp~y3M9A-pLQFJs(})?iv*8l!N5z_vyV; zG0gZk^0dVfW$!u-*9q^HBk@^-ntM>I>h2#!V$nI@&$KVNk8_<|)L-cC2U_x>B5 z`116?RHom3gcqkm|@ z=lIsEwXw-}WtXxufyuK^sqg1y51Ks#zF(JJ(|wbYsuLYB z5zW~1>G1f&Z7Jg;i-QYg(@dywHZLk>HTBD8y9Z|F6u4&a%<#5dBK-l%i9-h-+mRRx zK#q7!hIjg$)t+7ti&mcI9|vZ~d|xXUT5Jrd@u3Q92h!e6l%6=gC-oa;{?SGRCoa>( z?OW!tDNP83X&I5ILx7N=Ju8prxvOj!9*ft6GeaSN4mPjXsoN-!XI{B8`+bw{~FGXGj`40lY^aULH#+iMaB0fuiC0vw?qW zVU4PFP4QtQt$o@jw)>n|N;@&7&2(;x?+%Z%Dm?DJjxqn7X%G=D(>mdLGS;l^48wUv z?Cf;(qmw5W`I{s`lLwKQW-Y94dZx)2WWpuMuL*C3w83_ zp@S!MGAR(vB#c(*yd|2T+)I*c*zrQ=YeIi++Vih02N)dJlb~VFa2N;D6m;SKLCt>KaQH78$U9#e zi`0|D5iuHCyrk;m3{CNJ_D{T)o(Qs)1L;YizO~I;?6`LqQ&UThywbKO`%u2^O{3?3 zXNT9H+mp^ayNh>P4M&g19>BH@t-5YavTV0OReX0_3I+zD^gf>6#w$#5+EeZG0p_p zZUit8yU%16*I7a1`vrhf&k~{8hBT*{GN* zFE5py9Y{XtN@nJ`5vOuE)3*h4kzuNf7o1k&4%y+{mf}Wg8|Ur_RP7z=OS*Bfv8xN~!9(SXGigStnqC!@1!6lxn13#V_};Aq>RD&(#W*;ZdppFV#}Z zNpM5!flxK@kLtRr2}M;Du(UPl5|x zvSC#@SCtSCT1F6huF7F6`?{4+gv!ihRr6D2QnC_Q@xb>JqLhq!p%UEI0u5zPhjIuk z$#CQ>fqWk~n=Oz`_4AAqTa%ayp3nt>m!t_?YyuS{ih2*CT;3+{nc5fNU!GhO=ZaP2 z#3bM-#R0z3ks_W;2S_GYD2G8pdhK??Y!;_Y*a+g{B&CV94yf{+%36ou_y9t7ag2-> zB{yVvMFy|}KrDkw!DCwoI0woC{Uv=<`*7GPNiUC%kvEJh`;A@H*jX&5${6yOg88ySyZV~mqfVw7@)+{RaCh~crN zF4*Mkl)$NkcsV;*!VY%9p%{uriHj>KpMYW$s69!XT3>WFola_JD&*3swvJMQS9uYu zik_8Zg;P{_D9m)^yu@-kQQE*(=vdc!P-QljvT)z2$apgcW{^XN%q=j^22r0}BJCzd zS>YlB(7bM@!UmBafR_7Pw)RP)a9ED9ufmJ2Qr|P4RWZ~{TeE6uq_0~A-oLJn|1|rc zvj@r+=<=0A{i;zA$N+l(F%|fC4{$hjs6fz$+N?LF>giU2r2Nsb|LQ1~z8v18bRB(r zYMXq2!&%gl)<1h|hMKc5D_ZZh#bR4?Q5zDveR4~mq*;GCH>@yZSP>bTdz<&%L=8PE zn2W1^|8UJA_ch<9GSD~g*fyS;}psKYIxEN$TE(jCep>)G4r%Mk043zW!!xO)6nHGAqKNQ zd^jfauTdKMu9Q4@+Jqhb)%vXzsfXcG(BDKITvIxTgReXVRM+ezhlfat8pT4uO{BZWXe?(7~WQJh%^jLCc^9E!z1 zTv|jno7&|*Ex*U`G!Ei(G|?+9?=mxB|Jso*y0`OkHi}*x+M5nLddeHJKyD|2E@$$V zoOQ%$l&3)*i>{E?cJm;{gsd1cIWIB-hP3AmKD%D>`g@KA$#y=rleEE5!%D|Hh62^r z5Qr>~kx|E@kr z`xo7(H0fJ0@GX}*oW4Kf8jtoIAp9{eiz1m!6K;#&Y+ZLW*G%5+Y1-xL&dYRHP3@qp zr!KpVf-kQBp7T1_0PG5enRIV*RVHrhYTI7Wov_IwbxQIgQ78SA`ViLDiak?1I{ zz4ed0g3&PQzNNTi9A5SMt*b3wMI_c%2!4DXn!C=QuC0l)!2!USOJ~iNUUgV%J$tK6 z4FmUTgKTh0`Pihl|J?MLN~AuD4qyNjlga3)IX*a%*be|^y0iqWf`S-S6$pw2DL@wZG6G4WI$kLWOq}ugE&cp-rAf;}uDjZEYYwH6EK7 zkH9M%+9c%>pg1ck%V5ud?4Ts=vM^kP5dpI?L0fdTdHmJbhKp{W{b(Obt0jWg9 z0N(BzB=izzOPsts zLLOcsEwYt(#mD1NQev+kHomHwu0D~GCgeIZg5v?GJ?WJOTS~@6JfcL1Csaprz*!AR zn;d|hBCRMo0L^wlNQ;Jr+X?kKTv-(xRPgd*prXsOxBJSv#PL>y@<>_*E2eZiAv?Q9 zQp1_eOyrSRynd!6h$iROE6N*-SS(>RTNvptZ{ub;kmU9#Nu-yM7R3M+9PHt$3p%Lg z4Zo}Z_%MJ3CCJ=q5UZ6;Fu+N?^Uz^3l$XJQ%3q{V|!epWPj6H)MDqrdJgSb z7G{2Jf1Z#NvFl*5jezIlPXvgg!f z44Sp_)hbsW;}CM+kFz`87sZd4)1PhQUo~A7BDSjw>(tGOn&`d0@Y*VykW{^I7j~q6 zTGS9VB40H@v)=#YMCFADjkG(yb$5dmEtX3B_wZMf9gCdvHM2Ef9%(<@x;B+uT6*H= zizhzst@r2pHphN}SSFe+Z!)K@FC_rd)No-E?g+12!l|MsJCDosL>Uq;!!&ajEIV13MF5 zc^Y~|i1k*&Lz^<7MuX&ymbD+3WJ!rxImG1<4oL%BlC>1=O?^FdUTeAdFPA@3!<#kM zS>vDSEZ;0=Ze(Z;FUwiKXzXIAOFw_Pb>25-k4VGa_A>e6R`2x(FYO99A71ZicGwWM zn)SuQnC@Y>{8CWZ;jV&cB?kd}1HJYmds-p350a=tgzAJ1sFMV73dy_cF{YkZfr-o0y- zy8nC35-lwsOXjd9^a3f(5H2G%-Z=5D#kqQ>K&9xpn>4@6IT zky?!RqCy#@1dI5wD;i$@F`L|7yfl!;|MqX-9JNnu@iLuDl#<;xc1Nu-(tEy#^07_!_E-!J_(1O{{MV+vd8T;fY^t2k+fHeaRkzSUe0##kfeNnr^i84{Hs>#K)c7 z`$|5(K4=lTvq?MVGn0glKXl;1hj^bRnE9CS;K!4UeK$f_JN1E+Ujt4fE^iq+@7@A4 z_S4z4-OHei2hm?V7L%)IkKYvZszm=_)xNbytx0+=zdjh63GP)l$fCYwpj=eq;k+%Y zG6F|ssn=vwGWye})82)euV&;J)5XbSnn15mJHLLb7XJf7l4kLC8{DsDSVnEFaE2CG zp2?aqLFccqUb}L&y`5dPzyBUvhwOyp5s^sgiYo=at>i@Dn#%U`8i}C)f@}4J(ZfBw z0^GbBDg-PdN$E~}bFnbN+kYlti}J+b<16f{)7X*DMAfxxDL98JSHjGZP*sH>+yPe? z7e78QJePA`1(LvCi{}_3@pN=laR_y^l-~ocI|0_hE%;u1*~5)k6-ifJ;mzF@jsimB zM3@sjiUx=S@THhL1+)S{Zk~&kCli!OtZBfF0D&3#r0RO58u&0>E0_k6aIKBgk%0gg zmH#0sL;Xrn!+t51aq+6`v#OLc>Y`Q0s8@CVr3BB+%$Njl1){mLvQ=qk06S53b*Q<^ z$&)iF@k+2^l$r`aYO+D7zTgWAU4u|rC75C+%PCQ6uEM4&`=x3wfW|5NB|&aA zoD9H3!J-P?g6Y_J(7#V5B!b4=+Qwf(368=cK#$J=cs7;A+2`U?N+$wRB2N&2-oCs} z2$;rfR*@2{4&@}~h}x`hI9@kihQ(Bi#uRSgB(8)Aeqw!x#0}FYY7BO0BRculrU|B$ z3IG>8V~RYxMkXICpku6EU4#z)fTBplFn}{jT_jR;vb>lYXX6iWbc!MFz#wpPw3pn4 zg}~ty6qhPCRhFHF!Nvo=0w@vil3^U$Faf?jT%p__BcXD*ZYV%>WC<*ZON5+GRER3& zR5lTTQ)pSsT>Nrb+;spx@vHU`QSIr$#FPN#L*-=p{zMcK~An);vIF{tpZ>=5+yO z!9GeK(_4ybt0{Yys$*h7RMdpEWc_dor$*ep_Ut6qv;DhoZRpdBwlBCs+dBuJ6z+c_ z+v0OEykqt1@AoYqPA>LKni@O!0(!mjb=huam*=}TpEoa~yuZIkyCQPu&3}0op?-1v z#^mWPGP#Sj*bGbVs?dz%Z#J>s)W!Jm=3VWww~VbhG~HU*KbM{|KK@HfJ^0~b>WWiA zji=$h`fHuMd`l6?=Q(Di9$oJHtrMOn=ekS}$I*R==A+Ral&0bz?1h&mR;{1pXBj2^ za!p&Czo6}~k((r9!lT6H(%VZP52nOzIQjgPuf+pV=#Y1zlSf6wTL(T{uh#{ChcSPo z6E(OY^}9g0;e2{4!ZD19vTYN4UUG2jHi$apeN}YQXi@xt`4MdpE-sIrWvlL%SoD6@id60<~ABc!z02mowQ2+`5$-4c58_n?ZX?E$-)wR zvyOJht~~vnl)-ewDwhfI#_9Td45TNa@4z(^Tbx`Y*DDy#=XhD1Eu7$F2e!C!fRZ1*ILghh)no0d|^WL9cH?dOR+IMS@GgJ$>?td%Va`8 z_FQlv5ew0@Huky+TOL@}Orl}$F3&VCzcFC$?2EmTysW^Mr0c1(d+mgLC7 ze$oikAu}PGw_Uv#tjWTnP!9VrQqq3BBjh6N7_L=k3AQ|XjV^WO| z3(_~CY3XOgu7`yOS~jluv@8P+OG1;OG0Q+)xv&5I&JSND28?m>$xH48NWU(X(@gx1 z*(M%5YvQ&QvyqvweTQM*-R9wox8UnH+a63=zxi7Pcia0v*P-(~oH7HFzGRh0CyiDe zAKpg#4KTkiyZ;ZsbhdX7L`G$Lc~!d+-N1E)QtoyeyJ9!5S^v#;wvOIb)^jFkP~eLh z#r$Y*e=sXk?eZT;N$$+d0#mX%B4HoSfoo%(Y->MjX+BfMkF>?j*e@AxXavXFr^lxN z(x^Jbt>yf_D#6^X+m!)<YPy&OIr%V8j)m)L)hbK zIIP?yN?64$xAm7z$%$6JL>(L^z+ckeUlqa2j^is6W0c(zWq+?cvQiGFR6!JlxL@8e zWo?g=X9deCF}#$1HJCA(5drAp6lQguEF1uxF9}H1Idx)5eT~c-o8y62irb_q)=Gs! zo>fC?XE3c@NIX)Oye^CHj0PwPSPcf7JQWj>%}K7x3?v2k0+X;DLjw?(9Y@K;p{EiP z%c}%H;iuqyX;wIl9$w*xr?^-u5O^8IYc?}kk;qj~^HQ)1ff%5dw37&o1Tv|tS}ahM zizL-7wynQBk_BK%=0alB1-SqumGQF_F8=Z<0qZo1OTgjF}pP--k!O3eML@S6zI%5+&DL{q2*#&2Wj{^pSvMy832ncGp6FaOAA0uKKP|&A|J1+9BP$ONXwH3k zR`Ym99dLSeS0|Oxo~>s}#Y3P$B{7T0suJ3!GXtqBtWJ$=V(nv)d`W2}xCQ1P-O%oJ zVpEz_dobn8<_WQ>uMWK#`ncsY@=X63%uu>=b0u{H!Q2sQyqQB5YX!+i{!9)6p{cIZ ze--U#>92*uVNj09gZ}r6lh9)aqDbPHlFQZ}+FHUwIK!Y@*Y2u;*VMhYCgg*Gf3G*e z&`3<9-g{uuPa%z#wr$_8` z^_PmYjp2@7NC$4@D3yZt(yS;B2;6GEo^mWUKsPwB32stu#=BMRNjgX|JSYs=w&7nH zMWVxKb76d8izkjUFBdAIAf`_F8J=~A~y&{Xc8@%01EsA#fJ|HtY_ zj;CI7w5NK$rZy_tg|D8>j$b@RUaMY&hB1Dqew*}WO}-1CdJ#?;d+WM=Z8=;R#9vw zeb(1Y6-5gGYa3AbY&x?X*qti))8oT)m3Nf()*d$2s+Zk!ckj=ooKb%HqADp?UE*$c zA}Hgi(~2=w`wJjj%uUNx?DNX=nW~;QGv%dV;H135Rn-W<2YEUrUZtf!4PFPR&dp*l z>SieK2moJDH9S!F^?C^9w=rb_SJ_antb3>)c;vG|*DtBbQlwFXaR{()5Qe}hd!(SV zEposE1}3+lDcFfcEVdjRRqdNfaCHGv1;-`0v8uk6!&d6(@VuCExd;?!9?P01!MQjE zf+E>dkX%mnpAt)!GHm=6wH*moxTRJ&7c0`#h?L`vl2E;BT+lpLjJ&T=5-;Gfq!JIR zJWc>cQ0ihBf|gj2w%hniSyFjT77yjGsAvO|E?HWZjGJYKjjzG^%51RV0q87eJdhZo z1Cp!T1vw4krLHcsC2VQUSdllu1)CU#jW1v^g5_K)Z&XmnV##xA%pBTy4Kb3*USUJM zq9}P*+$$OAkg%vy3Fz-}5{?i|q@)Bj@b{Zwv_)p2F%s~5()sYh;q~Nzq zu8{;-a;ccW0IEDFhDYcSQVARfgrb38UL%lnO{tlZlq;;^%4+Hv2{;5m1hW8NP`@*a zxT+_O>V_Q@Tu@R$Jq0)kFcXwifSF)MRVP%BmjK3s;UTEY>S_xf1E}Aanih0{ks&C= z;3>nZCqi`v2Q&^m7jT8X{{Jn<6yB3`P2}jxwwh2fBM~*YktM5H>KTXm$5iawS^g{w zdZqF7gI8IbFD_fF2mg|H{ZYzX>xVzrn}k12#jWxfQyeRKc=dCd*4$yk6`OLYg0Y1U zny)@h@GSRRWZd#aFE*?sW#e*jv$^3c z^wLZ3tEG{SnS#wZGPsH*~sw*65 zI^yEO5%I(GiuWrn7#jp&=Ld~6&a&brx(a9B4(>OzXSiiWmF1n;a57P}!ljJ|X})9= zIz}-x3#A#oGBlpu;dPkAzqaYj`d{$@Fef^v8D>PIbSA-DcI0Tn@@hKGKKCErK{i%> zOwB+h$5@?(m7OJLEh|V|N;Y<`8FJqkPw6xaMx!&&67nOKdfKUWXlO5sr_nfYbBuSM z^U}kejP=kf_*Rqkjlq)4HG0?Th`GH)G?BMUY1)F+k!ZeZYujsUcqAPfA=IvlPWk*F}<+ptP)PTq%d$xOX>g$dCJ( zzaGlth~3Sp*gfz?*8Mb?p{5swrI){RTk{EqjcaTmd7(~fnzmlnPjMM+LJl`>Aou<0 zvsMQnEiN%ZY@)ejiMi1r1eHO&bqf6kz60?#1G$}2R^6~2vTc*gkt@edcg>7_Z`R)i z!BR~3PJLZ%K8Uc+H42OQ;R(^#0W%+HS%w+7|A9v}#hr>5ArKUjNI&4po6hHpuQEQO z|5&!Z>2C-)Mv8*2x%{#FCE=a;Z<5CBGbU+u_rfBa&Q6VY3s4TZ<+X@!vzna7EVbA{*{|XP{><<6GuJc#f;R5Ulbyb3W zz?_S(>t5R1^cMce*WViv~iz5=-E%M#DQth+<}nHq+|dUer{lS zuaWCdQ7ypyfWe2t=`tQK$KHAb3}S56(9oL6`f*F(?M58;^H*1KSG)0%;e8HHNv^~> zz{-ilOb?<;AMs;&c=lHH^phv5Nb2MZ#`9gPR(Ixehn{q(PRGaK@Lu*fFy>K7+Lf)1 zkrvi-RiOA!sqi@Uya?3oob$>uK1jR-Wgl$hP2antx>r4WwM1PWz|LLTnK>?d4)oH- z2-V~dAV$vt=3h`U4Rq)B_Gt@C041u0%tl5<;j2=!>sy>j-_QK7|`soY=K07N| z($3`uW5Dzubia~zIlvMy%?|+8UdR&$pr>MDfVME388g)@QPARfUMwD(BC7yvEyq94-lU$Jq_*T6u6>fO{c8W?q>;Wa z-KXwZ{gH_L)q(@jJ?4ao{MtPYgu}#Zhtjk*ez|kuVcgf=!<#Q&Kk}9^*?arQA%|@D z^UGKEjfHJJVzGug)V}J#@(Trbr$?_`FDeLolz61~I>YE=rU7DcmeGpcP0P-kC9G~J zI{h$a#QgX~BggR`^o7oHU5~RiPS6+VmGs_E8)4t}K0l{Q5xCo$34T@o8Vo za(qzm!}o@Nd}SN|)6!#aqg#M)I2Lu;ZSEX;MQGXvu&W#9o?<)~IzNziP!F+uCtsWz z6>?q26 zl`?l`fmQe#0@G7pzcDmTe<7j%)j4DYsmWv>r2$*8fmXC_Q_7=eZNrJFuNf)uOAGvHxH4YeVuB{c=3a(ro;#Qq)u6k5jo`!@i$u&wy=HtFKH^Jah>fy0(_F@PHA9 zb?5!TEjhw%9^V`eM|yj0R3*l3$qsz@$uQI~ec37a5fwP7lO8m*#V+SR7EbRjJ95-u@MCL_iv{ zZLnQ{MS~CQD>38LN;^SfvaK!Nak-;9B-s$v-P|GJ35MFcTdNyYK5p@@E~*tvz}hr` zq`9MXZ{Se^Yv5_gt!b=D@X1d)GB@@Gn4@yMy#Vzf+7eV`0vH2PY;kiRKdHdbr%9|z ziVySfSJ~r$5lQvpRZm?bki@53+W=`$F)9VB{_aS7+>i1yATz5fN`MTYthqA{^veb@ zNDZ3=_bGaY=Q4p%U8kz$&kgs3d5~&As?M&e7pg$`S-~Z>hpPBbRo83fkDqF56A&Eg z9;iAy!PH9$`dRS1K50;um#cDE>PZj~4?v#_o(?dlmGN63t>7yPM9vN1 zJk|v#BUs7`YNo{XJO@cniCCI|4Rk;O2a}|)vDO7ORbMYn=vVM+fJh)KVlt`{x$#yw zc91`IslT&LV4WapwxCkl=A!VX__-#_tC(`HDCr1C29%C)Uc76vo;{A2U|o{}W;aYT zJ)F#+l<$X*cc2ufaN~)n*1loT$~Ppk)J&qyHVENAWr&hRQj~0_oJGlYAYhjwBnf<} zgQ&E$UM?3)80E}-hhS;BOfDLWr=a6)5Ou|sSPNWsLZwv1s>S(MB?M=c@=6@AU`Par z1Hg{jK(s_uSw-hcQYcfh;Z{)x*qaB))ml;`0m*2Vgjx~}Y^}?%Scw@)&a4Euru;pL zQ#A|KumIQ|7|8*JTYZIw0lZJYrGxBbHI)F+4`w=GmI&T{^?$q73N`>2HI7WF!37L` zfb3Ag|1Y3)_)vIF={g3+9fh1L&sZp=EB&oJRGejE>JYVJtMr0h@Yp%a!*|-z>63k{ zI@aC&P`m*8rdR*?or=Fshh|}t8F^hxwwzrZs`?(AtBZ;E%}aX`du+wltK;2sk7BOr z86gf<+d6szKw08f&Hw1ZZ$GcUxBH=Ik=9CAMxbP>Xu~@FODTR`q4l;BAM@o=P|11T zwU|MjLr~0%(|5BUJARs7RrVPQF+l#%VWYyB`ykf4`g%8<q1&Y>}!UJ&KOn$MMH#on`PNF zWSB>Lm2D#GKKvN4z^5POVNB(lY+64TKl%mri96_dX%F!u z`6}2pTvJFo^y1?iuOM(~5w;lEurO{w8My1l3B68Q(DpHBtN!koX00{Wl4gUQy0?y+ z_F7oq+@QZ)tf9?VEMK0tN%yFT47DjbLh*+Fe~xb)mO3g=MJr#5mD>V9siZm+GyQyL z*y$nO{=P*2HbG6dsBQKzbrjq^4Gc{2Af8<5cw_~kCpv08lcn;&DZL4uB_-|I>}+e> zXlKH&^!S-&mY~>stRgVNfph0LZ3F~a+~k*JbB2In#~kxRHa1HQR+Zh{4mQcslEI|h z2}e-HM3uXF`P<{cB&Z@Oe)a-eg){=q`ONpR?MrdfTn?z5bH$fbI(l>5f~qu@+V4{? zn2w{*-4cK{4UB}Qo5gcwC8{_5V78<3BY;IO6@$f?tP)Ow)(!}`pj?j1R4roF#1z|sGfWXJF;i0OhOVue+`%oI|!B}10(^rA|+od*}fUy85!Qhe4#9)A+Hk)?- z*RBF4@#A9(VMl>qF!0GJSlmFMk7ij*wv%M`*jh9LFC8udnThg(V2LG3)>tp^nwk>U z1DjA?pi6s6GN_86;(^XSi$s#sFv>2;6dDCeTyy{m7jr{UtwxTq#x4K>)5-%r3DW$#gVKJ}*`C*f#&LYN?wPit=|7?ZO z4_I8Y1brp!5-TjPiz)3Q%4q)b=?(%81%~6LDK(N3p`Q(9YE~|ZFA5J}0w^H3kkk!* z0kt42xF8VCb8_LKnX+lQqN;=EETItsfy!F<|B&@H;7srT`=32~iqSA7O(_paQxX!} zEJ@OmQ!3R+lB6k>B-@zBq$QaoO-Yh!bsS03NJy$xj*x01Mq;#>nfbrhIp5#Y|GK)) zbxNJk@&4ET_9l3OHF>1TfCQ%OX8qBC1FQ4~=^8_e#`UlqtR72#234 zPL0pb=5Rpo6d3UGga8h(t6FG?Q^gIjff8Lp*j8H8-4+E{>;WMI_H*?Qu*?JTmZ|2{ z)$T7aWWg5&7`|Yw2cs4|!r-TX!2#>LnvZY&&%iZxVq7IBXrShF@dV~|NxIr*84~P* zwP$d%=k!{NfN99UB(xfBYYbO+`+hm#mii=m|ks&^qG#O(3HiA>Mx6Gio_7i>c!CliQg@GuptdI|fFo_eNZ zzozN+Z;hH9%gVT@ta~r33*l$&;vVCggjlC&LaV(6^&%5q`as)NzV!VPcnZmxg*4AX zIK_Lt$Qqyb?V;vVjuW)@8Ai)Oc8EAeM&L|m%9$F3KSTB(-qM)6&Y&H4x%x+|=J+)8QSYnSo ze3dpo4dTBjg0v)m5lL&-Mx@YA*iwTMeS!l)JmkV$E+TH)+UmXgR^;16T`wXD&P4vj zd{~?1~D6c|+>G21ojps=vFY6Jmb-7`3x=khQj`vN)=q zE}2-YsH;|{CaXSosxD?IYbvLK>Y0B@0Y`yp2ng?S5TpxwLcnkYJn6f)fYAWccMRC} zs-CLa-YQsmqEyy&e7TNz zL4?G?0oY}vraE8+6yS)WHktHmJuvAM#N?{&Ib&V&yUZ5gP?4LuO8jVGpn}n@=#%8| zbHR)Qb{i*`IMEJzHU%fUCddvob)pf0AqLoDfPJRiffno%C$0oRL;-DGB3WfMAb|Kj zso*t{dxuE0uregJB7-9jBY}Aeo{5}{!0e1vVE&QDmVvEUo}LQ~KHza-g7*XTnTQ-L z>tXyFAQB(>8Y-zG|7O>%L^~HhB)@QMfa!@Y+DsL86a=~UBA9&o1(3}yi9+Y5Q zg7XS6CBZ-ik2qjN06_wN3PxwMI-E+qw}Lkl{31XlV7vkh0)Q7-W5EpW8-kes<{znj z`_=#W_8El7DcFvc`R&97)O5Ud@y90nT@B}E#?wq6>4h|$u-a0y;udY5VeF#Ms9Tgj zLob>w62D#YEUVe=61hnH=elewH|sT(*;WUZH$JvmRqSL!`O8M%a!Vv*`=tH+Cnx-d zoYSuLu1)`Q{~lA52fa+m6xm^C#ujEjou^W^3731=M!4 z>Wvo)pZc_mDGv;md38T8xN|avrN7h#>JU%8G&IXuWS&W~%6?5zt(r<^0p*wHLp{j}RCv*orc&m^%7u+n3WA zH;$Q(DV7Ln>p9}g*|-PSuO=Nm30rIM-2zBHsIQg_r~`3}p3gRnzMqLU3E9Ryt}CXa z&X_l^z#f9{A~9Lfn!tKU-WGzbb6HzNLb{Q;ji#<(-kKTMg%QbQ-@!zxmW@!bR&Q%~ z_9ncxD?-k}3mR+S^p6>^N~Z|P|VKroC4@CNC773G!cFqf4u4$RIoN)#R_Oil);S*ta^p|8)jbDh?rUyRsYy<*lD_H9KO+~nX8m5qbS*mycTsIIhZiH&{x>(+#LmcONK-|H6OUj&;n9c->3F-{<; zDJ_>>%8LYiz}+IIdhevzHrG^#d;2RBIDZV-i|L!^uAFc_bmZ7N`SZ)h1G8p_GZ zo_^Qj3x3a_OxD$|8XE+|Ty>>T8GBrX)ELjq7-K#t2Lv_Pb;e(}OkFEd-n};t5T}-o zDnA>1JFCC1`v%l*lF#j`;@iLquK)~adZyahR$8j6s#5?y0gY2-aRFvkfZ3dv52my# z^BjP!U~5*h*U1@bC;jIx1^5-PAir)&rA3G`D;<4(mYdp^7cjZ&@9~KK1VSc8C6x>l^9pveJQ2<`jDU(;X?)G&!qC+h3 zq%##IB}c%pCWOf!w8k#CJpz{BOfhi!i2?$p62AO%Q*$y`B+1PNtaT07Q-?^i#U{s< z$*P5Nx#$QX4rj;83E)a=q!j@X@?4hKsa{Yw#BU>tazaE!siK;pQ0?c-Q zyO!g=bZ%Xfyjbl`1SGqZNsE>?WJ_~HynTI=xw+*9A?**U<=y~Vw@bn7ZtarAM~gG9 zz~T*F3=negX3U?Dc9@v-P*sX%1#F_*nLDO;bIo)ngi{4`4t8*F4ZVYk2oREn2}u z54_!Q%i#Z3E4}!$s2LRh{O`)!w^x@W!jJuT)cN1mt+(J$J%4yt{9CPb`RJ9M4}WM? zocf+~=hMHTbk>FszrDV4c^ggo=;7&qvK4w7XPPfgeaK98IraxrRQs{oWS8NwpTn0f zxSBlp9d*8Y*3W{2Y)RRWVBO=2C-VsCs+z_s5K1RZocO#{kh&&L(QCc!uHGKkPxq2Q z7raHj z(Lo+Z-)Odej{7HD;pbo5kVjVFH@`6=HZeFl#N7Kxz1^a!=}*~& zxvgBbhehBmvfB=&y7Jbs3X3rG7jtz&oub07Wrmgx6bDCQZ()pW1tR_J(G2UGpjv4# zVIzS{f-g#)DaGC@UQji7r?Stc%kYrW!xN9SweY~_be4X<-?aGghfRI-ibTA(lQk1T z@gW33I=`aLH@R)|Cv%+X)=P#fd;R_>)`bgz%b!RwU3i<^P8UatUj6ia^x9yo$I?z-?NXN)3z_7Q_v{E^#*-yJS!3KAh~zY z`}sl7S5I_-hzDY$?FvuRkO+z{(?(*9PO<>c&>BCfc$41bkl52?h2NS2Z_s+!U zQyd~p?~fck&AEwM4iXoC4p?? z?vKiVrgh6sr`gPty2@sp+^5I8-mF8>zNFkfJ@L@|yUokrSq$YcUmn>8f zv6sQH_Cpi4`UKXAr#p?1sl4h?^5x@iFJELq|Lu3&3f?JOgfA=wyf1BkcN8RW!W>HDpztbiy(<@4si>6wOKndsvFr~D$pJB?e%nL6{oA~KY!=&A+%0c5!hIK% zXKwXRh>iQ+_=1@p9MTyd=MJ8$(BOvb-0A43p|*}>3Y8z=A7E`43%c`kv5F`4A5fUi zbk67KX!UE=Kk)foOJ8i92ne2_^1Si6%GhMO`cbD5?lYJv%ZYiORF$^gXE1mYPAdZg zo10tuYU;tmRHv@S-~wdv>&q7aF~~A>AtfMbz@t`B01kw}HId>wkoCa8>{4Yh&#Uv#}lSTS+ zB-z{tJ`wzy7-^uZB%KTVGV+EpU=IhjKDF>#RsuHb^_bSUvB=RA#X$S~Wl~oHwwggdbr6QZVV1W+cl7R0A03CU7 z9C%sOtV~u2-?0^73O;y8)8p>e41rgZpH5J|7V^`(fDH&(@_{BR3I^^Qfkc0XjK;hXDP3jK*gLHS!McwmOc`HuI?zbU(vPS-YiVW;|Z> zW5I^k59;UPqWhV+36Fn6fZnubWPZxF4bH^bE?E2$cS7QDrr>usdxhb>3%ut(`U|#d zg`eD3ztQOUgQz8YUROW*d3$}6&-&@%wP_ABeFv^u-l*698r;gASwB|&y94lX_Ge$d zq4m$#8JFDMwdPnOK5jI>Uh{Nj21194a59`Z){yBf{}bh=v%I|l@2%6D6c67T)}4e; zUc70waC_9+*&dZNF2 z+_k5n<4)k9Mi0t@A3UZ_)TsIojzcD73b@W}1dVR~FAj5GmEIGE>gQY=lld@cV zkuKQGLHyw2{3GusB_%~Uoq1{%&RBNTo7tP?EaWA0Z7Jjy)H3_o>frjxE#>ME zpluWlB1L0PL@gV3U$sSVmRY&|H|>44_lKWC7}GzrT_Xr^gqygB4MQzrA&vL*N3Y;j zS`nkq@!u_k=(#vTo#ud$jl^hWx4?7*quHK1R9vm+bCX8fpDmWhT%p;_(fmS!u{`4b zTD*6?$4?Q}cv>IAM$^~o__xe{jz65Qk2(=K=g_ae16Guy@$=)v&-Et)$j{ruGUg>3 zP2jqpyC0@&7S0a z)qzQKrZjeg5TMm_f$*)Z5ldd32RZah_FL?*We$w?!#D!mQvjKh%dfLsM=4U1B3+icz#3A;=)kbJFz-4;Uk(R z38l+`2qhJSa5;4RssTjEFt+8dKD-SM|L^-QA6PQ90<{~K^5wGoSWU}=dZX{K3>x@ z#J>hGAviYv3~p4rzp8i{Q!iQ-N1}m2XL3-Y)X`NT(9`#;hew89Gwp0uAAn&{Hqt)` zB;?_`^5OV6)r-dFy84OnaWz9C{WWHU125Dt08`_WfGZlWZy0}EqXMbj*NW8;EcfDX z%XhzOaA2&hWlTEp<5Iq|uIU#LI383}+^A}YQbTngAk@Z&#=yhX`FUIkii?K8!P$5Y zGao!>fI%BCD059^)wks4;W_nP?Jf9-!Q7H@4PtUYbbY-HwAT(h=Cw z{Dy>b?+|}nAkB*s(h^F-S+JO%cJ$#fxiYt8IFuA&r<3Q}+KYF{`O0cYpy&DHb1FE) zyYVf%@nxyGI13uljXso6p6;4aPrx_u!xR#^A}5!)9GgMU_6spph=iqhVyYIA>K8C> z>*MMq(y}1P>ZQXuB>^GSVV~%LaC!uVKr^7VXjqLWfiU@bvq*D#0!QU6Q*__ZQ6bOjDj@Y;aC z2oOS-mpwQJ691Hn3h>b~MP9a|q8j9QD}d!wq0agq9##U3Je>Dm3N7!Jv8CfInZ~{1 zjcmuGUt2T}7xUPOtBjbDog{j55FZtlwO?+q-e zMho_^pc!k*wK#pkv6_&Rvnef?TDIMP`A=}S{O5)>3(>D9mi3+{A!ZGTq_r3eXcVP? zSZJQ?rdVs$&B3W(9s_Utq}gJaIe+egK*BYRNPMoDzORotD%rMzDfxPa*kHAH`?hc9 z=oBc6^bCc@MYA<9Mx)Q?F!JpiOh#Xo^k(@u4uJaE1^#;vI{J{{sY_^^v1oKE$s@rk zJt`z?bIyUjOJT*giX&GVh#@TuGK!qD59g2OMaI!lxP$ffeR-_k@pDF6hI4#U?S&dn zUIa1@@4q>TdF785MlDFW?XFK8#t#nMyLV(HF?KY`-6A#$JI}d=aQwzibD%2T39NbRMx2LU~Tv^ zymP3$SDo7}QSB?8?a?k}&qY%^?~t;#V(;EzUMU6`Njd)g9&K1Ufz}_ciXx-#`)MWe zEJ_v*o2;2u=g)16uwQ$~uA8K#or*nt1$i;(Z~;j=V3}onvuv!{c4X&5L2c(~JqnKt z8JWGuPQoz)dfLx7B+QS2KlbKwg}SrE{5p*J9O#)25znZdtpNuuNq#b0SzF)<=8s<) z2-7DBEm(q8UB{vYmHgr;;wX4}8kasiy)&0c!MI~#979a!Oi&}+0vr4*HcATX?n<@1 zEB{*5;n09bVuj|oW2yTe#T=8azij07xk28~PqA~^?r8qvZ}+>i3QhIPW)~{vB+?u~ zsNRRjsUMXuL$;V9DhV{xJIG+v?4g?a;oTk|ee}D2mKm}I3RGTz%+4LeH;#YY zaDHXh2JKk(d2&| zr0YFyZ}c61aCv$tY}4b;i6zuDP@)WJ1N^9$K0$NEtnFUFUyPRS%`?vrReLEFmbL0Kd+>$ za@#?|9LH^*!|LmrHuhM@`VfOhcW~212ecY#? zD%lH6P4A^mO7l5;KFdLj+BIhGw^dK&Zzif|AV=ZpXE9F|lf@cm;;7 z-(;*4z}CgH@VV^6_t~Tnww^}9Y4ZekYJyoixk3NMJG9DC+&3FB&Q<`u?TtzM}rT8gg&9E9$~48<5Y-9Lq|Hn7#eVW5#ptP z%BtuTr2`BvOfe!s=@WXO)B&zXKqN{MW-y5{UYnMZZ0-3F(?*0iD^Jy8ATG!w>(;Rs zwzF4NZbH&vadHSjKwQ;;FT=vFOCoQ`6UK6qM>!B)kTyq%5X4|LSSSJm{#SeC!+^9$ zF=;f4muyQVRQvOx;1#pg^Zxn70x~D^`gYQ-kP;aBrwk+I6H%*3@VtrK zg2_w#lgBwGkS04f-6XH%QeJ7=;iaS#y96dVC#im7I}H(hsW4K`Pdbbz!oh*=aTpntJBe}@$EGS4o-OoU45H!3X2tR-r6Y!Ww zD_f^n{_UHH&`a3x4uqUrxWMI_#g1!>W3O4|U9+jWW~;c0e}r-*AtGq-Gxw>*XuV)Q zdhSi6w^)z&*3N3Fx3@PYS`5>MptD|(jQ}zuVFL4t!>fuTI*TI}#f&*OkGR~VG+&>4 zLKi#x#73mvAtHt$)LkUhO>imU>?lc&ElJHQNv|r&7~qkcF!LPKcEGQ>lu{tbR)9Ji zgR+Gn3bFLMR;ggl?FTNm%Xi$ah`n8zce_ffq;WQSkN(=HgSS5$k$KC$T3awXI? z=%WnOQa-|kk6lhfEN7sOO7HBcy)&%1E1h$1%;lbJ$G!2`d-8NN6MHpo&RYE~v!A8k zgM&7podWbJfyQNl)~P#Tgu6>c;LqM&$v|mG-E|=#*3d7rM0d46-Zz`NPni2)!PNa{ z>9aTdPxB{$7R-OJMOIdZq^9`8ZX6+1c%god?m-n5Rg?x){oa2M7Z7LlKo z-CuIs-fEeWdrpBszkKz+Z>in1=-uGy69ew#@3V1Z%-#N9`v*Eml$xCUNSZ&@h6s*` z<%t;)6(z1X5->Lsde$3k;m2F z=Q2%|rWVr!GIjWNUENq-E@0PG9iK)9zEAIGD5F6yz}?A#-hlzxpk!$5ZuMYW>jev5qR3UeL)B&q*9wucgyPD*g0#R^oR%C#vn1Lfii*sy`_~HQ_ zcEpz>JHi4f*UQapo5j_or4dIKcxCO*mKHPkuB{>qny)XedAz-uYAUs%eePtEaCS|v zNn8+a4RVy4K>~QPc$^d#2B;=%6hwk!tVtQ5f!080Q!peD8e zga8^?aEKaLL`DM?0T9L5pi&VWsBQ_)0k}d5RJ*Z3fFjgD0;n~L;Al1Eh>TE!K!psW z<}XXj6}-Z3OOl3Z8t`ylUb&yweR+u?v;5ZjnGKkSvNBFy);M=vi~Ks&X{eiieB5i z-7A0RlRRn;p?L4hf5@!LqX)~kbD2oZCC^W?g@YX5|_Hk z_L^Pmb(f%T^~_xGt@+Jn-F~=n*PdEaZ-oR#zFKq6&0EV+|LH$$mX(<0)&0zO?rxeV zMfW3{P9-mAi4zUBa)~!nEJXvA1o|sx_mL8iPLcTDivhnQt&R32ukqJF z!jLH9eJ;m4e~TwJD*O6g9^-exY}+FdFDQMx5T*Tszb@}!#bognj#0RzFcqHK?@oeX zOft${_9A6g_=ADaYq@IKB|j(mCUOalPtrUn)7)f?(Ck!q0Syk`-rGH6g4D#6$@!GE zKDmQ81mlC>?+MXMX1jf>AN4fZ91YSbbZk3%-8EVCMBRAh-T{7H=WxE=x! zx-G@uM_fQA38C4W%_clEKQ}BHVOGl?gnvb@Du<{rM}BQR4rNbxmf;d`{<%9txO1dV zXVnlf2c7f27BjybBI~&E%@JCf7W~>d1SxrMlCk6F%!_)zA;rB91qd9XHZk2%!ftrA z>I-i^`GoYt7=RQ@%OidqcuPjx`j5_yb9DGrenM>6`%~n<4Uk!}%ntw8rs$BqxhBGI zgyT^mrrT&o0&d9&SGBG$Vx|C;2f^*D2#jd3Wk{ z2lA}>I^0_Jfm-uNy;0?FLEc?gw!AO@#PB3#zH(vR_OR`dCwG3!Ep+L;`fynB{e+&B zjHb7@ejZ$TD-!)(Ffn&{YGiAVg=>Y-_^@*Hm+raQV=b#j;wqXCs+124<1B0udM$!k z-Oo(rO?4nAB#}|cgMGDd#&2n>HTz6Q2%K02(rdkFCIB`k&DUPrN|X? zVY4>2H}X)adQNh>_A*heP9OOkFX)+t^So0XKXci$a{1_a4(u4kN3KbU6u#J$q}@Yk zbZX#5jZmGKjHC-5T`QW{`XnOe^S6788DhAx4k`FuMi1mJZv5;1A@{iUXPCJ&^Vc=5 zTQQ7akTH4VSDh0CD9wyh-^@npjPCw$UqSWKbz1dGCxeU3`mjvfvx(iDI2<*f7_?&g zJ>=cNCqLB4t8{0h3GicOlwl*wJ%*K7$lr=Dd>NuZGT`pdkYiRzc9r4jQRKh1i2qW;6KQD(|i_dLBzb%^+}Y)jW( zlV$Rjg$-j_hpYQd5Q=G3yzH#?6P52d#q$z3X4&D>!Mo2rZGWjEmOs7vbvFEXbN}@$1|E(>vq4Q92B^qT?_Zp&>-V2+SVi*em;)R4&twfU;pB z>U)@$T*yh__0!n>*SZZDE@a1L8)ISnMNAf)0rwRm>3px*8t#Tp8wdhW(~EQ>z~{wa z4ft?E6NDipAi`pEZ*HLTVJ5i{jD)aD#qJeAeq!Wm2<})J)4Ppjl*&o~IxYb|dIGx_ z3tK2g+7XcJ@h6=E;vco5Y$_3J00+WFYr@d_EEpjdTA1p!NbY8d-@x3)Wv>>)HsfLY z@i0>&+!8{V_9w5ZjCIc4a8v?cO@hF}2u^^HGtjUZI$|LaekRQ8u*5A&V}m0%J@N7L>_Lpoxlr4Y7PoMyy_?QA;v1c}zGq5eMl}j6Ao&g=X$5g=nkGf)4*nfuDO z$mK%R3If(_(z{2Bau8!}oV{!;F(Cw`8~=d&diTTPWkDoVq(C?9Qcn1zoQRH`NZ##O zhlP$Y>oKGlG{p)&iwl?0bGas$vYanvZ@-iS0+laa%A3pyScmi!BNl0f9^xY?G`J%l zRnno$TlQFQ9Ug1c#X zJ7yTD7#4;tT#{e0noL42r-izUb$J_8U6#5kt#IG%KV`XLg}fVmTpx>bdyorPwK zLc*MD|A2y@lZc&kE|3(E`x0A!s$p5pH|Fe@{ z&d!@gX$*b(`fjsdO+{bkF$A1_`GELjRXtX@=~4{O!{D*knKeMeIAyF*bR zG_)UFCe1bfevc^_ymmuzBucT|5%gUKEVg-XZn1Q+-O%HwZG}bC@48%<*bjyssC`;D z{pO8g&)#>ow(1mz{W78d< zzI^F!|IjL(ngm@m1<4s7?%bEhF?YMUs*0|*z5P(I+n=cl_5XSO#?%&na0%SE##QyK z?yF?zm*wJL0f9XYjY=OH*y-Cq?3?$-P(S~^tX$chJF3`->FvAacDAylB=!C#?rkV7 z`uV(Ws-jHQKQIZncu*sAF~8Z{2Q1|B?w+6Atm&kVE|t@g z70iJ_g{9@>`1r4i3WaZ=!i@^{bwyS6nDm$OVY%X~Y+N}7{8?iI^0AR2Wqy$gTsZ(! zI=Bk}CtMV&0;CaDJOzmZ3UKEJl2*rL!|D}%h@nNG5aJk-Uh?XpYh@(ITU19gAIJBORlI9 zHVo#94Ok3Z97Tr+n05m@mNc(gepkrH`}^6o0Pw)%`{R{Av>6@n`?C?UB`IPdx$*f612H zyI)oPbucMv*5zB*_9v%&e7HZ_%}4Rq2ot!VwCDR)SB|DRekpu^WZ@Yzeg9PK0nE)S z(fSKYIc-@ZpSpU)&(6%u-=tp0$rld4t=o>&cV6rxl{YSQb6ZgLXBfGEmnA4nLxXi3 zX=IfjyTiX5W;pikEvSNV4cK&gfuv#&a|~b7ooxDh9bas??dTt=43v>;Ih{!+2bE*z z>vw!&>25V|3+p-S)CU@7;AeAD2HT+JdvLRH{vq0~P3L!oIgCjF!|w^IIWImxMnSAD zk&?_dBe5hh%!f`kTP#@d%=m!A`fqs=6$5>j83v2qtlkOaPc4&d{xgbQT|iRC=jYbI zn4n(AbzeO~LG#7i;TlZs!dirz{TR>u-*r5pBuwLMD7IEZJE=A$i@D=J>-b&k83hW4 zmW$y!Hwtzf;QzahpUSzmy@ixy>Po7$)cY|MdrJTq{vYM74G#VESb`L(w?)~rC>K^F z+Mn@h&CVZ>fVMnbrStq3O4kN2C9N@H`bZa%VS!lBHH*a)H}i(jwo)PT=^P$negs%u zH}&d!o<|PsoL}nG{D<^8et%iiWk>r`sn&*E5e4sVah_s8EGM4R%znUqZuBkg;b@D) zhlmwyN4BCCvzozLo2XYB0XJgB@GqN4s?C4C@>%sm_Wphw4g+aB1fjIwPs5md;*L1% zEIjVD*qC+Df%m*G-`H+Wpx=5sg`|jQ=BMW!ApiwHm;P)B zO1@+NcX07Yu$D=N>;n` z9&kZzJ2SoU)5H6G3p<47=&yQDjFIrB8BaeC?lPCR5lXcYks_WxSupsJ_()rQt*!>1t?7H0bTWpeX~sSAW*36v7!q_CQ#DzQc^1=Xtdgc(RqnHyi9va~ z{mi?k)4y!lq=*+P<2F_gZ2BU9Z7KbE`%B#S^?HhS5A?5sZBKq!Cr*9%9zT&aum&Ea zrxd?&`*mZP>c_dOQ@u;R*w?ueMz1nYvdqeAv)`@~%PyyJFgg&7Hq$sWPgnS2$e1zJ zj3c3PxzH>czY9%< z_T)l3LKxf&yG;n8=tw#Vom<3$*R$#^AR_@rFBeYWBH-9~WG<6!3?b(=#ntr3HBix8 zND2Ey81Uc45YXML&{!_y$w!}NLA+iz44F`CfiUI5_tDVS5Hc8xSdEWY0z(3pvkyXO z1g!VeAbDx{gzym-CFr^Mq}~+l9}qCtXRYK;SGV=i2S zfY?n#Rwcq5#PA4>^r*0tP1{bb*FbE{MZ$^czaC=E84xoD7A{V{Er~s9mH3Q`UdT#; z6VQK!ovF-4R9T_y!cvb|osRbMsq@NUuEio|nWKXV2xo{BF3Pwh&*(Hh`>Yow2tfM~ zU=CPB6xV7V#Hp5Kl(om*#rqTlpd(q3UuEVjb3HwXQ>t;UM&qo|$>&UavLW|e8XRWQ zgv_;CpV#i5-@d^>jM0lhu3SG{=Tan&;kVlZo zY3qlHD53zRW1;85M{vYGr`k{JNaHc)kgf=E*#g?k!gOyVMIP5Pr6C8TJ`Q5YmUwx* zUw5q#wNM&eIH?=MK>8EVZ!q{_0y=^S_b2Xi)S_Zm(P7TFc(uK#Vhc6ETuRf8hRBvP ze8fT;Y!6L?+Y~kUs9>n0V0f}XYI1e#5hH}3*nAQjpL_P_qpQk}tE$PX(BM_Blg0`N zy_tnxMIes}P_A6$LJ>Taj#&;Mfc;zRrA)#gYBwQi{&sA<)0yQ}*IhfWyD6@d<`hv} zil{q^@HU9!M2wpW>IYY^<`OBI@32AyUr5-WAUzO}cVkD@jlj+uyA?O+onbyK`0TJt zaP}oDAu=BO-$KCQJR})HxN^~9p+{#^4Hr?6Opz{YPRYMQfYyI00pHY1{~YHOEev0) zG=c;(6v5V6WA}<+^GL7=0;X`syn_ED22|ZI!aD0fLad}A zP6)8Na}f@#vmrvgL6%_7o6+BCXQn;<6&Ys+oLwf4 z938BBq9A$3$H#@+Smg$X04xC{0!KUhp?iN`xxj08bbNd8u(u5{!OgWNETZOG(a^{4 z_fP8Ei%KLcwrsVl0)=_MapM%fKtT`re)(!!UcO|VXM0!o)I9U=Ux!BDbsgCn=;=y* z{rdg$lr-k}j)3H{ef7@QlM1Xv;xA%_o$b%&=IIwrQ=+#3ny5-{ObbetCE1E#pY+g> zQKjPN#T=FJ>27a-*(dSTCR%e@nakp3yKQVG%mLZhkrQncl0xzgT=M;>Z<^w;r?zcT zD5n&leJ3~H&dfq3=^q&x>XQs8)~z3ZQVlL&-^FtV2fnw7+U4Wp3dNB6Is=^Z>6(tw z=@M`zFg`gxHL1QKscY#gE>grstM5iUeH7jfW23UZVY$l9RdJfB$~vd0VuHwtEJa26 zIJjE`=Xs7!DsLYJFmZajN^>gP(qjOyP&qkCov_|!#Np+fzN!)c14IT^094>;UQ$*$ zAov^nyhNqyC?L?FIW{JeXyE{60H8!#5Ypi4AaV^5`QfsI^FdoB*twKWRsnu2c~=ua zFrJHPOyDWX?_?cW5XT71kox1KtUy|98~`N%VaQv`#0D|r07V2x6YXf83*wHr5~TkA zeAjk>9~2ZPS@lqtpTDmimcP{$RBi$=z@HQFI-Kk1=aUyk1(F1iAqcT7pcRNpGrraj zF=A=2!@Y3CreHrjz(Co4bQLq61>lH)6b)bpfFL3psv0yoV#oa*dc(QkxC8(fdTbW} zN&tVnCUN|UEp2`P7F8-qRu!BKRcze29~B@6fGz;pKkiFa!x0x(1%RbF08{{UQLS)u z03bvG+FGmXfhM4e1(6`-YD@yo%{`G+wdGasJ=uoGx&SvuJKVZk{OS^~d(~P)=C0#ClqYKaFNe{>FIMpvo;C9t z&)w+_P@?aDdzri9;6DYI*b%n^a#i%%#uMb<_~ZKr!QPj{?UfA~<`fRGgL&nY*V#E) z`~SfoJxv#u{T=kYV)(RYy4R|#b7@=?;l+brUO#y}F(N+yeTEVLTm$1Chm?+Psc*Vy z-u~=A4x`&HtBz11cEWb-k$S@qr$>|BCl`T&OC3jvI8i&ue3QPkMCeIgfE94`eRM{j zhhTpnVdR7@VD4WA`hYO=!uVwJoK(R&{V5GtpsuAFe*ih)`sPh<=@g_sf%}{?jWbU< z>@5A&^AG;;UoOi=Y{sSuk=mLxYRXE70so63za2(>6WOR4tTh?4>j**bf^RYKw#M|` zvfRIEJDF^tNf%M_$3@P41*wZm!4U>C_LslzO61#h`q8%ajlAS{?60&(bKI%%yv4k0$@1Wr_{I*93b~6ROp4#> z)RPhWR)oy&gY4d^vIs2;};E#&6!OvrX9Pn`0@y?ZxA9ims z`2>5&CokFto3(v&qfz*SB$M2m+S5%u?4K6SbEiHgEePz^W|XW?*n`0=0+ba}v<}jt zvrY!^3X64|O@Q+#kshuX z5K^EAV3)kjaK*#--7rJ|tm9^)hqi={IL2(y z+=L}%ZC-_luO!SHANO(DDq=4y%0$=*U_!+3p*U^xV;zo&XRD9u&6OZRN>(>AXGaR8 zY5V)kB8fsbzZ1I0%dYpB%{*;c(>9uUet%c5)h6fQt)Gu%Jqzs1EqwHH)3&h-J%QhB zzdRaVgeeC$j<`=YA#q_RTFqqktxuT!F*DD#q6zY) zTr!?QkL%S2^uL@nGcREol(ueW(DzN1@j5}m38$-&MP=jo*>hN8J^?ukq7GgaK_=c$ zkG3|hoe)82ZtOe);zGq~tsthk5I&25Mr)k5lQHvWvv&H!kla|b7`}ze(urc)(qK!l zadxaz%c$(jd)dq#9F(wM7fFO)2u;w2B}}kTSV@9G6UC~;*(P`G1{y1v2H9)q+cNY* zi3!6}K4^ax1WLWD2n#x4;gujIw=wLoB*VUQ^?1^bp2icOlS<(!gm1|P1C zm&CC_OxPBJzPS{!ke(WA6&>7vj826M_d`dlm|1wZAtPm&o06KEw*O|@-zl*{?d%|e z{zN09tR(qn>ao4idYjwfM0vV?6jM(Uw>{uYoRg=!M3-#EG#8!O&w@>*pm==nA;A1R=gB0<3LNAmBpG!j-cc3@mJt7H*Jh(0^fjC1u92$atRvc>r!Lcm3 z*GcSy4<}7XsLduGTSyG21ecv8XbJyfr~~R||HYhbki`n@gH=oj!OB@lh1&>_>#bb| ziHKk#+E$#oF9bm*LBX_>dLrngHI^)Zxrt%$7nA{D9}*yKXqZG3mq8YK7av6?@Iw7z zfh1I73NJ(xLeVa)2thak?SqK!&2c$EN6cd(SFrN-`$G^5bzxGE&W&5a!T2yRa6a-y zor~U90cM^6X$a^IB5Dg(kJr7$#*W$Vj5^tP23^bABG8qa@Zm0eyBE>c0oa@V7t~<=R zK0$;V3NSnPC?6@h@PJFupD15G+FFVX=3|uHBJZjqA71iXYfG2#8^NNy=i4tCTch{? z$7U40F00eW^-@D;^9sQqWwv@7A7f+a zShT$mYcEAOLTDHMT^Z}HJnx>O>YlRmp6VYEv2%8!;(FPIkO>!o)?hc4d#}90m+@FXoyFL4VATNU_wG-5`!BJv{lMk6IXVDj;z{+H$S(-r z8u;`4h5lD>hdafwp&?^8ZoPc{e&GChdHcIT=9gYo?ekxoXib9hzPjhrFIxHob|_BA zQ|%lki?dY#V7zSw7(@EBK?T}yZr=mS!}ObXst=!5*g1?Qrfjvb=zmnBym4(jAYjc> zqG~{*d|K69P?WbL5QJY3jw{vKM=q|a?IFr-TUBQhq=G+3DyxdK@_{HZ2=1+2nXYo# zIM6I62PEU*+?)}r@^e)oP`^lSjrC37N6bEn!2>dbQRpnV>t~H=qltOIy zTn$!zMVDM!8kQBDE&6|Cy?Y?j{r~^J^AI+2N)B@fm9$D4mgW#DX-QJ4rc{zjCCO`e=90#GDX1nmZpXmI(I|0k88nt)BbZFej%!lD^#n{EAWDuv(&G5(fpG^6I<1~~ zsda#0_6=DLZX_^TGz?I)8f0xwMkFxYtn~A0C6Y8((!kULJoBJQjbMe%&8U=wcs|-6 z3XUrR8fDta6AU{2`da^Z54?S6?-(v#yCXn!|Y&TuxqBOU)2^5h_{GqDIofq76j)>DdE$)dgOpr|KSu^I+n>t8k z0?h~wTbzG6AmaNs;OsuX@QN03F&P5$*+9-VfjBcWCR7*q=7i7suyFJGHEDokL~M`il@91O>X*)ap}4+N^6KKO@Eb$_X(I zVxp(&!@X$KFcWoK|MisONY0#Lu1db^hBlTa<)TPjJUkh4sxVP=vq7Qj`RciwhTovB zu1hcwrl02t+@MA(Me7%C=7}!dKeZFwG=|CtZG5m&4ivKjE21KS9N|_H&WrLBij6De z)J2^Tk4kEkEQ_VJ3%7IY>eO+hdIvr1@0!2$if_YCr>q?M`3jfJw=u>>;vnB5nr4-nIRxB~w$8=}t6fPLf@+h47jHFkT=-`TD^@9jrf3z#XM z#2S+DbU%&i_V8byD8Si$Oh1xl>+E>3qK0nx0a_v8nny#G7W&<=T7r=&WuClkZm&Ks zfPEwE?OETfggnIiOPO8QVD|F~uaFPpiM^#5(Q7mGIV&XtSxqKA&D=q&?kR2omy3KGl;PtN~y0+e!O*$kX!xhVN@<=UPcMSp@@r}kw!w5nTb#Nwj%(y>>-a-p8I1(}f1buE)agyDuI={U7# z!!`YBU)digjG#9kOe)a|W7=2zebI~;Hv_SmiDoK&HQKI#$lm>=FEPIjT#dM6z}oeT{}Cg>vU*mV8=XcJPT zCN6rd7X860`Vm=7Ul`5GN@K!<0Toe+2u6t+BUlDS5nu#@#&%KkMkZvrRT%Zv>Eq^! z>pc@a^fV5NqJQmR>{29{RK}R`+!s-3RPk?`=GG)RhvB6}KiVIAtkV5(FyoY-Mqfq3 z)xLzyS;^4KMY~-fa%#NcS^JvCosK2XPuTJI)6y;%+LP385iwRk~jfW<1f;pw@UW za{A+)%Fvzyv>wM1&p~~YUIPUWT*uPVv9qjTSCuL6$y51bq9{4y#Td{%nr$q7}SO2eS#G1fL=U{)i?svqNFA0 zLe}WHNg?n}5QEAYGfX%Rnn(dFZP=hLVl57)z7ypMM+J}|%A|8pDMF&_ri(=%pqzSW zhS4oWE#a`v*uqS>hzGh5ODSB7l8#;hgGez)u~)n~sjrV$prbkHKGNx@+m6m)(RO%N zxGikKNYqj(426SvCO|YO&`?XLo!|-yfjLNndf~9X3mmBwq!$)p#Xe?w&D{=sek))) zT*x{p1!0oKSO8lvM%_YD!iOm-M2@au5HBgzEDRk@R^Luh&vgE^S|`&w+E&-~?|T?C zGE5VTxG{DOO^2W$kac)i%YU5**K+@yC7$g>ek(<9&tGFJ8Pd>b|)Lk|HfxOop%KVAVKzqe`eB zDe8m&I}ps74BS%G`K$CY9?s8%z6QgDrX!ldWvjJAMjNp<&!g1HsL{egE1l@agzJwT zo~Z;Ix}Z?&b7W8|x{{B|k)B z#mSRhS=oT>o3d|CmOgNC@d9u!J#aY8%eSqrULFzSxpaB=y&~$j{-G&RPh(NBSR{TQ z&kzUfiE<%My?Z~|)-El1G(u-g-N|p&(UMeDfwuc;BlAyw0fXO%B<)|Cs<;v!e_C&W zA~tS%_nv+otx^8F&tJNxs-I6whq3`wb6-vigo3c}H%%=+@7&wv#3Y;oz!k|=fz8-S29L(a(7u+fBe)o&0>J?YoL+cyTp8Yo?2)3kmN;u^V~gR zcvuGFr=+bdBXU`9HFtU&xfg_BgYY&+!Vk&NFA!uMd{`bFI>}-Ymk>bmLNAc8+uDx9 z5sJ!Z(vYCtIRI5~LvXMKBf_jYJ}z8BD;tjqs};7%$X@bOp7Q-+yrST7p-f!F zstxuJ@wUy#7LJby6l98>cT6_1tv8DyrnphOV-#dt1;MJHNT5p6D>Jfj5}|^}qLlcB zD{>e_8=kD54V=s3U?#7ziseJ8oz*$1Hre@|WXOY;Q*s#fT4l$A@FX9p#X(709O&iZ_ zs=mLCg;(tex06UCsagYoQ@%3slBEr9q-*c8=o;d4H$3C ztQZ!_^@5YlauO0(uSnnWkHV?{!`G7PhBc}vT#Ta7?54Amo^ADo9q<00i_fqUZT(?z zl7T#4rR!#Vip^#~w^jDQ;dMLlqC~wza|$OWR^Nkst8SgDf|Nv6*`Jk`r)O5x1y{8X z7j?00=M+w-B7m$NtT&Z*nnO`~`^`;IX-kT^Tvc1~zY3>KoAFRhKRtYqvs*)#tCInF zac|b#g+b@!3TKRdAth-6^2HG@!=Cf!!qCT>A1WnjF3~{*YdYg;FaNzTbf9ReBpJL= z4|%6B-f@%NtlIzUSqaeHMt=NUF(}=z|I1J)5h!hn(7rHM7N8>`CzP$19CKu~r{jii=OfA_%_a!dbdW4tsGpyb~$A5C+$;HNW6!AeCh|jS7#M0JBZj9K~xOmHPCi8Fv+I;z+NkQjLJA$kPOK`@*5jUGGba3!_r4*QB z=KC~rU8??jG^9og8-_BWmRKCkg3a>|`|fjnyrt0lNzsnC1AfoPKbEHcy8cjlz!q{p zd@|TW!(S918|mE2RWC11-aNE_;Y1tHyZq6U$)mbnbZCW*A-Y>IxNqIq)ARI4x;df* zfOtVg~E zIb$;Ra&uf*`rVjDqkZRidn7tnGu6eGchBt(^>)aq2qhiFyf> z&w+6ta515!*w()}Fulqec*cXoMMHIrYs13co0rxbMUv+Iu1rSwup^SO&dSBY2#)rr@n%lFXtEICY1bP7zid!x@za|_P>*{USyYFCsL<&lwn-hvAe?H)GwAA zn$~B8`EVt6ED&$!?9kX;j?j+8ICH7rf790L(#eO{6T{$ReNfq5 z`tJ%jf?#T5b#Mim?q<0jEsg6)ruV;!pTNPY)v$oQlqEF zW(!!`n&g5?Okv@Jnnf3`;bbnItwqmdnr+I5>C6YB?xwuhcaa|=Lb^JrOCTIT?`MOyz>~= z6}kRrTQu~DhWr)1{Zq1@@@f4I4!fo5J1DH|%A{SKc+D~FI&7TwYnu9u-a!jIWEJfM zoRcs`pyx$mPG=>lpN!EKvB!SX?UfHYNY!C$9CS!%oanMo5H+@{0`{#Eqbfw%Z@ zAO(%b9?P%89OlBdiLzhMSsJ(n@bcG5rZni)ozSXtNUIqL0>h^6Dy6o~jT_r_P*D^l z{OwAfpWhmo?_B4?80u=dMvPl*sU4tOE|B(ui_o!;Wppv)y&Oq!(eq zg)XI_havE|8V8j_NNXHgz5IZCRK92S+_|D7-+R}7;Lccrzq8C53#$#r+K?g3I4G19 zxdq6j^b7Vo6a?uPz}aZ)F!X8B5o)XYQ7#mD1(Ue~X=P>K*io1|UKm|us7gj36Ck|U zu&Q&A1rWp<+&ww;9!I|jn5FY~6%|Ak6=oL|Ex9YKfyOpmSB{`$*63SVQtMOD2k@w^ zFJD`20hR>+cwTk&O1hWZ#)#vgYpqxAUt%@&xU{k2>4#gK z#<$H=0lUi!@`oN*{JeWVZhw&E@0UM^hNcQ`c`RK#ee}eqGiN93YbN=x$GyEqE?gS$ z@fC-LPF0nCEqMSO&l6SDDj~mVYW{*1)+@verubC23V5RLZ1TxBr*ci{~5`XVCG8psQI+>F-)zaDm>eXaJBbOvz9lK#Crdsy{Vq}y^%i!0^y=UsT)nrzk_r*7vl5}SwGP1 zgD`P^%k;OQ2^eBF2&siX+otnNHgY*#0_xRz!NCG_uq!49#J#-(Bfw1yl92%8f?*>f zd|E{d)I|(*e;*$j0$XwUsc?|>?F8a0b%I!X-6XmG@|bW?qbXMiWVtb*EK*o4bpq{a z5*m3N%y#3V5NmR13Wd+`_3{o1J?`1kCKCjca(xUMe7t6>eF@m?e2!BiP0kEW4+;&9 z%n^db+dQ`X6s@s8OGF5hQivct)(IEG&x_&574}Q}og&-#4Q2B5tVcP)UcMwJ8-7D| zI*SzES)J}}O_ua?LR6`E0l1)M1%&{nebh1@$+ofZ<>&ePdNUfTrI(}1%ZI0JKMh7~#6xWZo94-VV6hJWg$=nB^0yY2ziVFUxMFfqH2<&_YEp zW>fya1SuJk1C1K!(*y-M<1#QvgP8=B;tlkQ|BNNGVksbm0+S4wVKOy$FI_yVf0{?t zo4Ob9+GkN?CjLNU&W6Xp8cjGoAbkC}uPK8xHD<7}tnmG9&nrvzG?v}_kl?)A>A!G zw(gMMwSwy)ptkQO=GSPdD(oYKl#2ZBNkY$)D9_$88ozCnl$p6IX(~CBm=4qPyOW(K z2?*Wwvd4M(AfUF0u~eS}MQZBJIOLJcM@Zaju9U!zdw%Gd~mRt}Da_4UWcBYne3HyKB{Zl>!njD? z>)&vXf&;|A>gq1Yrn65L>9qJCzWP*gKya!lD(PpE-b<>QQ#-fq;<+=Pizg}{|PAu#s~NlA(Xc-|hU z3Z4zsX9l9Ky=>IT6|_^&%&-ChR2@SajU=cj%3}Cm}%LS`(C5#g-j$Zm=rx- z$L0l7*$~T0TBV#6ug#uFj|}2GmPu<5j;1AAlj~K!y^Yt>+JuSb(w=+Mq0u)v2{CQD zkF}pZ(8iahHWfhCrF&AeS%RIBp`vQV6JBhOGbKuoz}*O{Scwit8P;uQ&3=D`9{Zk_ z^uwjiO4SChDtV(ZamWNdb!IsEVqSvsX+3rGhSJzYUV)egm6l^|BxSUKbXPo zBqN){Ic?N4vaFdmo4j2QzX%Ih{gu%GeD;^tp8ATqaH}bzL|L^|^^zHDXTun2tU)m963e}i}zm9#2vD&WYbI>y_bajQHfgUFePjt^GXYLZ?Wd^dho$9MN! zRkY9ao4v7v*@E2CjMZz8UQw-lyhU%=L-Gb<`Foee7?nbzeu+7X{Jh5Kl+nn;gQvdP zzq;M7_4>@kyM|Xlr~Lc2T;}<-(jm35-4>}fC5gLl?3;*t`uKv=8n0sPG5w(IPa5w} zBz&rYoV)$`rMcen=O(AVzLhAROiLmXE=2#JJ0fZx-~U0MZ#3U9>zv_&;L1Afc#5IY zf}TeOl^aG(zEYby%;5Mg^|Q`cX~Kk24ZmyABVOQT#4e3gY|V|FhcHoE zMBrXgGfhAma1hR=Ty!A=JUL0Iy`|_6`$}nAf{(aq;2+qFhnTl7TsHxizmFoCR@&?*b&nd-;JH7yse%l_{J_ z+}=>3sCU}QtF7Zp%iX(8&26VPdeuLxr0fdVzr?ycuejCS4OC2lfXeB`OI9ql@p30; zu+o7?un9b^LPDq7+rQq*i#Q%Wb?WT+?j0k=r9ku@e<(B~By{}}+sRm}Vxyarovjbf z>T7v8FjkzvqCJEt84XwoRaq-wb^BTFBbcFh7xgB z7S;pReD?7iP^BWxh-qjo8|YTVr{suIK+y|%s1$fKMI!=GEH09j@-^{Zpoe8(e8?y& zp!-w+NT$gy4`Y>6>!mBP>{QD5xVWL4EyV^8r3Q4!g?oMUc%}XB7TA?OULyh-j}|~O zjmf69g@%!HSGMs|N@XdfCA4rMO_beaovY_B;TB7LBIQ{*;{wrmb$;$f0~s^R&d6Gz zZtfH%looR&aZGMunaD>=mc$G-jqw7ibrw^8Ig8rREgFyx$u6_xQ2|~)K><;?jJTYl z`eIQbuc*9VQl1ZLT?B>opif5169L)DNN7NVtOYdBfX*2fkus8+4k!ueJ0wkfZ~*{# z3%0m`d;tiLq_74ChDK6z2D*m^y2T?P7JGU&V+N2mK&=rV{u!8rWcE-kR#5ei;2+km zOxUz^K{np`e>m#yyPF_CS-Yb?Wj+MLP*RR>Ie+!mfAW)OCFa?9IL%;bKxJiD_hz=i zuF9f4a}slqpB(!1&eV&&YwlglA`ZzV^&Y%;Tn{GYwQdXA6~a zI&reDPR%8M5jKu0Uo@vNCww|XAdpB(RxDA&x*6r5g*pg*1twnokH*~p!mfM}IsC*<-l~ zM9vH@3+b2*ZWL$C+fhl#t}vk+o`z)twS^_M0Bh9GNVZ>yz{F(*8r$Jq)Ivyzg=A-S znSWnwk#q*WItK*fFr8KRViO=rBE&wfv$kyK%|!u$Dv%c>h%E=DPf5O|T&oU?U?(Q- z_jQ!u;R|hw*v2ASzOig>E6We*?raFvm;Q^yz4&A+oiy{=BE=YYyMe80< z`C!Z`Gu>WU;}|MZ=d4UJHo_G-G=w#?1R@mS34NP(-K7=$p1+21u(e?v_I z`a)K3LVVwU(Ae!;{GRv9m%|%LM*Chs*H!J-K8skRer(YRPr(L^P0V(~qZI1$?WZOJ z;wYcY9;t<@rT_JnlLdV^s#iyavb-1I+Tdf>c;7>RwJS8UY9zc+O^HchVd!temF!{9 z<^=)RvyoQ8iX!4z` zbOo7a9i(wd&&a*=R;_=bf!lt$vm8=}ljbZN=X-`LR?azt`nTz2Ry< zw6^ApfXK?<)d3N<-r+eSlM4%sl69fED1+XO z6_1~-OkC~lvJA6|oNf9&+(V7&kkmNPVIeK73EEj4!py&-azqibt|=z;IwPvp^|+nu zNJQJ(L{ZlZk<{QS9a67MrElLwQl}iu3XQctVrpW zGbREr(B*K{4hy2%&(@|c!rfBS7eG{O!(a;_FL1Ub7g02sp)(X~<-n=I#8KWSOGocq z^4LIv{I^NM8Gar@fbWMUPhGqe0U(CgF!iEpGLA9r?)iq-G-Yls%+Bfj`nCO2Texq) z`-~jwR8Q|0zM!?BXxiQpxS1sPA5Xn&0x&Qo`aHdCc~7^v>)|6HaU(5VF}-VNcS!i( zMslJu51nZ2vMn z(mz^OVZUreFW4$5A*Uag?OI|DcxPPp3&74m`&S9*rW+pvbRubN0=XODSPh^Fl;w;o zBWI)Vnpyz90MG%=5E76FotH1E<&Qru8+cMS8=42=J|0nvuTbXQzm0~Y3TR;YXD2YTRo6cyY0lw-(mMOJPF-)FaR32n9rG87Ih#3)Hl*e6>n>eEAunrxvSL1$omE@Bi?4970#xTizzG@Fq5>X3IvLJ$G`q#xEq(P4kq79Y*#t(SKNPS zX#2+UmyG!NyL_|$jr86-&n=k-MWU4iEB+1qs47(^FHoaesPbTxIyD2dofvOQaY@9b z|C9KUyS19&pJ(5h0$+b>X6Y%M%UWpEzgs0#G=f)3qo-+`oieMToBxJF;9h2b40oZ9 z!83Y!&IlUZH${uT2U0axd-ULY4Pwm9z#X@OiFi#P`xE%F(k)(@Y7txthx*EPV9yY= z<}$q_h3IwGY#0pDUt#P#b&=A=G|vd`-nZ2k$~e?_?<^Z>*6=fUkOoD{4VFwqEO?Ho^_L z%{=7$ovddKbx32|G&k)ZtVIL= zLWl}(yF;Gu@J4V%*76brk+YoGKX2{T*P5 zOoz<8i&R17?C^wPvT@iguQ`b2kr231Sp0k(4XVn8s7A37@zV!(Oi#{pN+-Q#*mhCj zx_FwWnh26&A%-vb_QoMU>{2-AfQeiIQS%Rj8d=pFQOGW9wsq)45TNt=+|cgxVTl;k zU%1U2u47rLdhVk{!$oYa{jdr0`k{Pf7xLYC*#o{0tf7W|j92s90=KiIxW9UZAv>OS zBkpB?KrN!69XT8gBjT-`fpnL3pQusVarmwrm$2l3_FM7Ky6aRTUnJ{9G=3@&*CG4L zoH3|3Z5K$+C1+RnIfi%m-wl91=w}X6>`y^WOX0@5f{!?4aW6Hkd}&D8j3$?+CYC{^NDI{z5T8> zbK#z+B|Q%wZI_&heU#d^GO$u$_?ohbwqr5tljVo)ef}RdX+G_SSM`eqqEBDOa2i{c zh1-`O+8uRi>Cg_#wd7?wf@sa2?yE2b0qb zoJq;7TUFz6{DTP;bvvk3%kM6IE0uU9hL#C~+MN%$!RdI|>~AqxO1D3|biZoCs`BSk zC%qbvHoeq2S3ef^*F4i=ai-L)eDvE7=Fcuar5){!{!I_lhL3tLr!H9J<(+)xiM7b; z?$w#b!*(0k$=1CZckN%FwA!pPjVvR|JlizBhWl5(H%j~KV%qb-&6mt;4(_!mG=6cQYCp88K>hXEx93x_ z4|bU)Jc$pvj~yI$>T15(`t!)tg;by44(2=TEa&?k3yQFYKCmG~#F{Maad_O3HNCl{ zY(s5l#YkO8WyYYkR`J(k3F3!+;`pKy)U|0f&s=#Hc5607VLyvo%gqvACeQPAJb3Pk zSh?sb_q4_rNeyiBzC^laL#s1Xi;$ySe(1N0)dh^6C%0=i4O*(pQ^c(0K-;Z#py@|FBcqwRb|8O|m`0@A&0N2o6TN#0>`5jyzX4D$K4Q z_CD4~rUc`oA!m&xUGoIPn;oFLd4pkUxP(J=j4~+Fu$)MBvj4H@z@~ zlcR}Qkc4?{dxlgYr02C>;}Co?MtJHljmct>_lN1Je$ zjrF9zZwJ_-AdsD3zYGumeD|R>>UcO<08Ir3NMML5s_1h^<7=_F2lSpa@*2nf{(J1< zgK3Ag)7HyU4~0gB1Wo8^P0-_~Hf#W`R}*c`<={3p)HS`@Zu-e%fK$g^-2D7}2im)) zRM68o*;C95is9kx%juKgR@W{xH8pPl_L@%dDbPQOGoNIqj$4?|O8LZn@*K|CyLU^B zsOHmxcL0E9$qB4;28PGKiX|ZY3WWksPasAFj0GTR9MG72NYe3j8dUuPeIE=l019A1 zIV32@0FT;Nd{E#t(jfvWKj2~q;572A${S?=h8F`I$|f7skF<=GRZ5uwsmy?ErU>+Z zXWO+28~Ytptf|4io>Dh#CsQ=^h|})|NT#@|MI>dG)|d5zpy4J1lC-3Z-zgeusb`XN zfcQ?z<2vBNolHH|ah};sb5M>|-_15B5XalN3ct{%$efT6xBk6u+4}w=Nfg@UEC3)) z85D(^72XOrP&NceVx&6X+f;Q#&>~~8`$0!$ryV!rav7)}k#Z~l&{=&;SuiPPFUgbN zB*PQ1Ocx5^nf~fZ1uJrd3yO~U01OpQtveaO;w4J zZKX^`u%>4bIUHcwIA1hS#_SNwK%DUqpeA)ZV4nIirgSe=PukWZ&52RulmXxgw)P(? zEY6C^B6({8be!gvjf0;`HJ`cHP3jg3_^Cf9A7~syB6EU0wY*KeKt=jWZ_kWoT1FCU zSEK>InI~+O_3sUpEwKd~yV)Ew`RpnPbUlK58$cicLV$f|*$J3}0G>DUi4qVyP+bKO z8{qxyiV6G*K_(h_?NODaybORdKqyJ87;Khi!TC{{q;Ynw1V|YW^js?!%(y4hpvX;+ zN|nafPPnHR3U2;;i<|A>y67O=y>6-hL%Es5|HP#2yxO13A$8TgN;BKpk>}rx*+YCB z`R^^x`}3{c@!j#tCN9D09C}+l(rl^`IvbNV8&h!oSVetup#G3=xIo~%UJGXtqqj5f z>65`v)L9kb7wN*P$dxf!BF=sfxQ2J6uc9U~;egiE@eluq2&w9ONI_?l5vG^D-sif# zQqnF=TRL;;pVVSw7M|{+4mHpuMy84BiDRa2^&*_uW#st)axNyV@ROPnBn$#w7sGbb zM85ZMK`#mlL=bk&#iUUq`U5wwf966j-b9gGtPhtQe_&?qoTW(RJxX~A&l!!6A-_!6;5*|CJ3t*jhB9!m(1uvC5GpV1;CHBn!K!^n)|npmbY2_TDn6_Y+Wra@>{0*h6+z zBbDv0JK4Q4LQ*Abjm}lwWF6?X``ChqyY}?7&)(vmx2kWQGA|C>id-`!t)t#IZ>hI& zp6%d@{@C2GpdyfNxN2?(6+$hS8pv^IrxfmcQ&EEPMndxX52w`^N#QDEdN9q&E=+8t zukm!4heI}rVcO=JZx)-X$?LjkQF;5$a~)LskBsM-BYKo^&;=0%!O-jB zMr*n8>-d4&>!#N$lRaN;>Z2zz>djya*j$tyj*gsh<33cn1@*d4O0CVdTkaM)5NyWP zu&%N-R4DH6O{b`HsNUKteN0l>5>3o9qW073?Kb{R?}eE~@O$r%CA;sv0RQ;R)^NQ* z;@<>Kyj#>$aPEtzqbb*Sbl|p8==R|qOeO9?IZg7f*<|nG)Z67V*`RA4b?m{WFKK&KUGMyDvmQouk}c7E5wXK~GdceJ zjs2HUg9nV<6jINTB8Ex+$Azm7sYKhy?338muqrZCY zbP^t2Ik7S@(~jP_Xfd9Apz7ew;I=!{v=Z9B%b%7G*3B5cUbbqBBCs_naL}c&|S*>{<4n1;2d7O+2pf zs6F7)@32nz%{Z;HZt>nBQ|gfYH^NP&{5$+nopt(e7pX^i#z>l3GtpgpXlI-@bZ}q8% z@0^Dx8apJ$TVdKvBEk$lWfJvmjn^KCB8^>FJz@2{abD;?$eK9w#R?j=cO4ssiR>IT z7^_0B{Cf-&DH<``N=HRt6I$y?$kOB&?)x7^wLagAEVSG}wBe?9dfY-;x4U4hAH^HV zDD!soCu5_Am$iy>&83CTS~1HJOAF0mavlj~{s{8pFxNzWMG}q#bY%9r_Eo&s$9K}m z04&8os%vX$8QyZ)WD%$Fa?bRr@aa{yQ^mz#efG7HKk4oT?r@X&w}5Kj!qj?tKQ*8i zM3tftqUTl9SJQw092wu`J8g}hjHh)qx5%@y`rkB7=j6=h1|1J4EWrbQo7OStXla@D zCXROq0pxWw)DM6l*%A44$CueEO(2JQR`&bxgAo{_6+G%&T6%$X1F#%04EOeep7H4x z;VjMp1b9?6(%J$phT`$*-ynou!g_T3{ zNd>rVu{l{orS;i91}>&vd`eIU@MW|LI$2ho6g^2T5AW@n1-ia7Dzgb~w))l?EwoP6 zuznn=-sMBGz@T=*jv z1F&6xTo9;g?Ki~+t6B$nf(Ro$MLxq8P+dLG)(RJ9L1422fJIxE>k73)rxc)XcwOTbH`%0`-HW^a8i>vZjOi3x5mzNG~C`5u+<0C#mHA#n9(#-#7!__$is187$ zq+^c!n)v|d0JhCyJtzbRPzO%EpnU>3#R2@yo)L$@25lDV0LqUHf%Vz!TC^1`O~IE< zPHTbOTu|-~>>|Bj0;mUNyOS%uZG2G%`ouL3es2ZlfU-8t9}vv7_G&J zu(>Z&q&+4=kx2B~@!Xdx%h_<;V2&3wfCGWR!pRAdC}$dkx^_}mME_$Qp&A7N{Sfe4 zsCFrDWh-|j3TT=-5p(r-k(?B3nAKc3?tw6^@=DNEfm)oujToGe0M}DObdj)V)OMVh%8Ap`dY z?{F{rc~<>`YYvCa^k~oR%8qt3>)>muMjBm9Do{&@N~!nL->%`AKG%E*c4eXd%hJY% zD(GelQ(;v8b%%_5sX;oPhJ$S$_GKEWG5)KJyOkN#(SgJMNYR(u>zcT@G_I|&hIa}qBVHfk>x?o6Z?szzE-N6FKux#(h^twXY zNwiw?f=kz&NXFxAKUdmq%~&_mja4s~>?_M|Vi)y54bGA5lR_}Z1itqVoP0%kxARkO z?RK+%Y9!4;{%}WPf%b!-#fu%DH~OR^BCe%;8w}K#r*npJ;O4jBP!Gg&{+TRU&d_10$Fop>(Y<4Grb24OD?83lt(pvUirbCFZ3V^?AwJa z7r`{|Bs<2<3pkX0;K}{fHrs@0+oFRat}WmB{qU3qHTC(%Ov?cQYU|+(mqmV`Zhl>_ za%QY?^H2lhTISlrXFp6_c|6`@{N>DWbmn5==|>sWYulFve;)jDg_~Ik=~WJmej~hw zI9oZ*^N2sYe;<|a`?vaDixWNc&&prj45Oc*>BqVQ!c$u7R_`ob*MF-SGrA*h%nF~f z1*RU}pKev+;qaN|^AT=p1W#<7x2a64 zW5DXwyr!}EvrBW#qSoIHotLUH8WQkD_bdOoW1CAYn{(R}Q>NAma94eEH9UupJQ z$?3b%U%FCdr+q2k`*}5OW_cJ3nMgv{t@2D!mlv8rjicW&ox*4ludgEvhx?&zGh6BW z(Ho;l)P2wT)?K<}EQ~d4FNAdNn9&RmbCs_R_Oz>gh84J;m#=v3epv5vf=)jUc0t#3 zgudmn7~KljA#kxIN>s1e`bF(LXBAUv{QMjaVv)4k3?0FaAJ|Q`99O)8^WFp86d`3{ zE?TwD44pPEst^5tu9yyR>UoF@{0KBz^zq{_l(M&lwYMi3sDpqU3mg|eziArxa0Ayw zfM=6d=0M6Nl}M*RVSGWs^!a2U$^sHE+Wt@wr9aj3ar#gw2 zYAY(H@%VnBP<}fH$fE?EzVDbIUjiHT~@AG!m&1{UxzX6H4ylmGNUy9e?Ig}RR(W}$hfKZj zK3+`$BtTDqQ8IF^fT>oI#dI(Q?Oa@`l-JQglvnb@d>E5l0U)M$3N0g!EqYcp>0l+r zQh-l)pq4r$Y~zA<-wb9}M}~E;P@It~1_o3`08zon$tY(@@uB@#oWjm4Wq(dpb5)qX z|3I&ZvM~VoRzsrlEi6=r+GH!u$zDWUy`(C|hqBTdH_)FI;G^Z`?@x>p0%B^au4)2M zh$jN3Bp6vsJ;M}ww$cDS38N~5SxFsllL1N9fLH-EWikhRbv0j6#H#19{vTQ21J3l~ zw(rjf`7?i#3XLRbX|%Mo7)H|0EbT~+w6x?%T2iTG!;-YaXvvYZBuSFABuCD$Bsp3g zNhK{wOVVg*&CKsv=X}5K`(D56xLl4yo$J~@_j5n@b3gYpS}H2x(n+CMaD7$5Ca?j< z3*7r`x}?1-;xKB6&Ee-1$}q_6*r4GSj;ya6kLeV(kGv?5D*HrnU_Kj^#~n`gMx$Kt zsKx?;Jd33W3Rl<|43!o$La}iS3KByChRb2*aMKx#q8!#}X*|x^SSgbLEo-kVlou8& z=;0c<4W`QKAKSGkqAbw9{=OefjOlduioBqD$HUVu|JN9=F?5;a zzpOKfynAtNv$=`J7_SlI{xQbu-gfYPVp_84`Y(C3{~F`BoV7k@<-j;eb#bH{As5I0 zM~q`#(OEpezjtE3PeO65`^uVsZx(F+%(Gs}oH*^`uzeqI-cnc14Ka(#*otv3sVI!GHY%C8%U*_MoTq5m4=eQsaDiACDSW>{0IRv#q4ZeZGbLE87=LB`;} zHw#jl?e+8{gC3^^u=Y9SAaH&IwnhdUY>uq_XQOxctDpWH19r0xlTy5qa@2swXtk2@ zb;+zBXNhfIl=&Js7!0=fD5V>bR*v2TUp;ej;hXFq#(2ZK!Z$v%lL-UndV2g2II;PL zkd4t_Jjf;HJk!#(w4r3oaFS*$@LfC7`!?6Y`qy`GLhO6E581`R&kD&WZ1L@Gme9-z zasL>)R-FzT$YS^#E^#u5&YI>DbPVi@F#*W0Wp9TxM+;&}uCb_Q!~)g{zx1`lLu4&a znpTAQq}`8=UM0oUoXt(s^1;Js@MD#~U!?&}*lIW{W%|^W%bF49g?SdJVFMqVw6qzp zIi-Uz!}td1`2}rzB zSvCh+3{7zq1o9IiV)U+JXi1drl<{LS65Ly7klHgIo8mrTuWC++k>;%Gub}0wkqWlo zxEDkkk+s<#966&upZj-+kAy+1eX!u$+p!MxZO$xh!z!mQoo>${GxYW>oYQF?<~8Tl zVI8KavW!cM?}~$;Zp%5s)}60F9w*;R`-F`+`r}6S2MTrP2k);8do`AOt-;^+4dpoHifeH})QYR5pN7e;<~c`tu%dc*Pi$De;M>i=4B%x+DV+pcwvTLoP`O`EpeUsIc% zJ5^Bj=laubtn2x&5br&mnRbl5Pye7@E-Scl>DXfS=7zpYI=5Rw^J-QiGY<=5~IksVZ6Eh`g#l00V*$}ZpCapd(M z3yvSSpRvN^1M>*cj$Cq(9PSmHaj@*!_<@zov5{@ZkCZ(REI;_?Tl|ibyULmy!s<(Z z`!x2OXx>A|>D%(Qms=7~wXPbpm~P*?w{NUqd)cF9=0%(qCdQX%yo)QO$g%|I7P! zZ!a0E?jT=xGHcSC;`r^>?I~?W$m+F?+j37{@Q+!Px7o+7$Mp1va|@;_3h#|PHWTI& zW!ZaQnM`ASyx%>Wl^W?J+seZuv_ z!Fuy7LrOD~U_8FeV6SmsZrIL7X|y?z<`7!bT4)?t{MYI-cWNIO^ZBYp&Z>QhQ)_*P zhTg&2qpFa1z#HG!*EbXw&!W?L94>4}db?oMn?gErI86&_0Y+>HS7x|o#;gP8e=f3LdsZ-m~?1!|(Yqf;a5iI^fKOl74~r9MJAFsOv_t~X(zv=JCuXF+jx95IH>266Ox33*eNVSX#0u!$D7VX?H{*$V?lAVOYqQFc{pGDObS z3$^^UmaH?%k6o!{V7XBD!lUVZ|ITL3j@gHxW)2&ov)p1IMIAGrEMe!ajJiAh?+L3L z@B8(bGYlB)HJ_~58EbGh6p_{B*R}s9y!>_-x@%juR;&3Jb9Sqbb&!qT@gH;$V;Vp- z@~%he>Rb1ovh#gDhS9N9-g5yuX#FdlxZHGGhUp^oScrx3XpEWRG)_xoBDcNr4ra4= zE*Q*=2T?FUBAu5p5$^lWheTw$pZ@2h?ERwzu<=$9j#=s>kaJDP+n2Kl;a!CH7a&94 zC30qsu*Jwk3k4}G1`?r`9S@UkN)5WzTgunOJ>q?3A*M@`#ePWY$i@Oog3WaEugJ2V zxR2NB6R~NCdEHz;%V47WJu5%bwiZh{Ht&bOKRy{DC#)pST3&?+Fz)qp2)Om=z{gLw zB|kFc3;s!Xd4?YexD0!eZGYJQ@hQUPGtj}0Hg`v!U%kCyBK5ls)?kxJwZV)ramtT->t02x(QnKM4W$6?+!D2J^D1%-fj#SH7usZah`Fkv%YYW#hZxpAOYNt%|#K)oX0g z`n$@XnMynk!X1u4O;3@e-5 zRVQDZsyJ{9yL;)cAv0grPj~d(68wy&@0r)#*YWjM<5vR)^W#fNi=f_TPW9g0KVFI* z58koakdQcI<|}T{w;MLs+(ND&+0+wvd%=;PKkoZ;z4>Tp-JQXAS%>yn{M=N&ss8Pb zJt?o}<$dky`9uCR>*$5-e%0{7Ce>fn%wv z^j;FH%*z=`OF6%2?NT_X3~po{bsR8f+Bi)r?t6!IMwiqm?k(}Yv3AJae(uZOt)6$r ze%qlkxBG0f$h+J<*VlsX@V>s?e{^r&UfcYI%U3;^vo~>Fneh(Cjn6yQS0|o2r=p*f zz3+%Jk+^iV$3H#J|@3rRYE(x|3={fKh-1NduTj5aYWRX5ZrySkugE1!X+gP7=lt$ZS$04)e~o(YAr ze{h01Gzf(ZN+X3#AD2ja(|NIEY$Kl!1(JfMKhm^m$hmR51k=2MK3T+6qdXpq%|v-l3AqWD2PNP#p2j#!vw#y2PV0 zDa8{tRLU#^K?SOqW_T58BO^1|(J2ZqRDNd7C_A!uSOO(oQCJT}6sjhtxNwM_)XwMQ z+)z?RY$V#Hy{!iAg_2=npWtKs{lIWJl>$|n;%GcLB5P<7(UTZb43?c3 zA8l_N>t(BOg{zo~xP&0)XlZPFI<2Ke2BaiAmKc{!%O>y?g?va?i$w>CtNC(CH{KTA z&Zk4E2boEno?My3ZjlKU_4VLr(uhAc22yem5E`HZ1tpS}-tJMhKV0dMNtUovT{EunditwY#xyZ-nI_wM+b835y zx$d#7qhsNy13$qf%D3$s-F`*!b<7-0or_&?>1hTI{y9$n7}NFl*iI+I%|{cHr5^1W z&vZ(djmEB?HCNZ#G-~n=b_UXP(vO)>w{H|5wvq0Xq!~E7%+}E-5So+ZRz$NkTCTBg zAgE1hm7&{-YV}bLnGa!_}|v6eQ<}O60`#%Qw_c zKT0XObY7KI?sHd1%(F`3hp(#e)yo!Nb?IJcw!0$K(P%?vaMEI{qbCBEW%D>K^ozDj zje>SFJ)Urf%gR>xURk%NG_**Nbjjn;2NKu0YAJ?ZB!}eFM-ZH#Fko|K$>U7zrPnDbQxQ5nde_ar> zuw&CBuP(s^{aXBKgUBtzJ@wJ_>Hw3gTV8J7R3hJhow@tz$FOOm-Ym(A>pv|;Z`FH9 zy?1!9#yzcSyNToGvmOU(Ew97}EIYZm)xvsF(Wem~zq3DgWluPit$46AI5o2uect^!;K?tuio~0m zMt}QElAnB?Exz5f?9LwMaz}~Q>}27Wch}dcPttO13!Tgo7^$;VdDA-KEr>cy5SH`C zXnFkt+tHfiK2>=JCwmu6ziRfOqVwz;Gf;G|z3b4VH|b&=6k_iOza30@YkQx4pAdFE zcb5g-(rk|7|IRUu*3Z)m2p!EuyJUa(P#`n#-Q57btt5gVqf*66K># zrMMd=B@;|&ga3p-8ZZ%|gkHA+PLlC7?QLJ3Kox_KPXqql0xxy`DGRumU2QNZLg9H7cz`7*|d}wjY6rg6KSCs9YXg8#!7Y~<~#VG>D;bNw^l#}d)0#}Q|(LgyYRm8C2mYO2J ztR%l)LbK(zwTIgi;Fg-Au3KCbThmx9#$!~yQdvo3Z)pwfu&qKY z6T-vYC<;+;K@nY5RY(i9$tvQDQ)m*ec5#a=pH?iU(SzNPb!8le6D28_ref9#W1Wm; zj(ADFi>yTkho)2W4XVfC zgZU#c2nHtq_>sYt1nExjH4IPS_q+O_=T#5DcjQ2~z^Menlfkssw4tpFqonx|V%m<> z&V7SFg0%D#JgbRrK4GySg5+}jVneRXFH==feX;R3oz*QzzKurRJ+tid4eW{Wt@lxK z>9N)KPwgZh#x5yhGY{rQS)xKZzMgt=-PRoCFno8(^So{M_Xj*Oxsz6AqS)^DlChQ6Qe@mXdL z$^aI@$jW&U(aFhNdq&ed!d#!a+0RST3}?FF`T4&Gwm3Q2N(p{UB6cusu_vu!17FtW zqIi;baYnAg3=wa$H`|jltzv^tE`RZ-NiPLu>9&4qW-F!M^L${fF z>zn8&;nV!gYGwXjfy~~(7rsaYlBMs#lj+QIBZ`Fv%LkFiX8H69$(G*`7rOj(cF;;^ z%tSFn7G9*Z3`;7>yvJmay)h(0w^=Jq$F2%#iu9Lfh%A0aH+OF&m;OA($)pMzj@gLh;Ti44KZ!e$!)QH&OuS;MsweapD@sl;24xW^6a)_3W zxBR{PF%jP*A{>+bTGsEQ&v4~d7=jM?Uo|isa-A3Hg=imdYZM-ip-=AEx!QHvaC^Jj z(ozFId+Bf+QpGx=xR3{zBLTpMqUZp01DR}CG1asR4vsJ2?dXk$1CtTXOs6m}JTEHJ z4UH}?C=6V*>_rYok;9qfpI86n+f`B=vSgWNNJk|C=Bnp9b!D^@TKdq zs=k(_i8wQy8kMUGcvDxZrY@IGzV3sWu@cOKMZb^39Ph7g<&6s}fUYki6A)lFJ_2E8 zYUosk-zl$OXTn3FguyS22H|0WkLv6HzV{pcgr`Q?C{%WJD@Ab6ya}EF<>-hKejc8Z zC(qy^0-VHn;k?LJaP5#vj*KB&LEsl0JAv&3xk4tv3*qu1B{`{A)M(|_o`_0Ah4;o&lS z8W+!z7VxCwVz^%-V+#~c#=!W2=)+wUfK50B4>#c9zKWccTv)`CcGM^ux(hj6j6E7o zrodtOSTZh$OqW|BrKTupgGd}fXzye;f^e4^MOW|}Ria+8h+AI3l{eH|IT|OBQ@qG2 zvaon*U=Sc_PBa<4l6% z^KcYEPZ7^tK1r{0TOlp@5`jN3v|1@z5gJ|iy5)yQ@5iWF(^!ndZ)%`Y34`L{k%=>J2A0^Kp=7Ld((g|GU%}2s zi4g2O`TqwyZ}|U$oo~MoJg8oqo0vQ{5p+Kx;r|9Z7gSV_ZA@O9T6`A&{l0l}$h@n+ zbl$o7{t=vcvH$6?AZFiC$Jf;>*;%`ud31gC-%Z~4;br~4kNwOaxgN7Ve_C?+?Tm)~ z0SSn_XY45MynvnylNWTqtdaEolk4&Av;XHy)9SR8Ll#a1nwD?=;0d#Ze?R>6hiOyO zk9@S(pMObNl@x%;W1G8o%UTSVb!+Kbko&aGr^v?^yif4K8BI~n$6{yvBbF~ZcyfFfK?==zd_nBl@=;{&=Y2BBg2FnFru z1X8GnEJSAHeikf$R1i@B$FJA*X}$X=*g4kXtCf~18|kNK7$ojmt#|8hQ@v$2V{D{U zMhGi{SP#wV`fTyWxyCikXHA$YT!^n|)>W8mO7MY=UY9UUEktm`7e z@VVcN#prDx&X=_Pb2{?HoGKeUCgVzlsS{n>P9%vtU-Kevm0W*gLsifs zUqUc<=Os}z9CU$Lk59MJE6!$^FS4P%FOb&#-7;eZY7Ai>8p)hHt6tu-3v@qED{XyS z!V=#Cf=;}a5eADpXZqb4&b$~eI@_#oUBxF9|5AqunW?*^ro}Q?+N!(SL=)`nbpH3W zQdF5l+h|4#q19kUw?x}?oOB~+ri>Uq-ld60JBGmJ=^EQ7*Z4mU9HiW|2qh@K{7qTA z^wu6JXX*qNK!IzRf$XIbFX; zprzX~brbrU-Ja*SUb^o#IU-nuEvUQozIt*LQTEz<+3gz(7dh#k5$;&HoayP}9b@~} zt;=TqilKqu_BGzK`+_^^tsa||fgW_VxYNE7?~#A8VsN3)jR)ieN8ZIo(c+D(PJ}g$ zo8PQ@=a_isp})$bFvDfYeY&PIX4IkR@5a^@H&-n?o{;**Ho&rblOPIeT4`BKC^g@UNDd?cVoq6@t392D+uBE? z=n>!~55lQPL}knUsb%gO)*eAq5wPmG$gi)Mub}Wv*;)lJ#*Pm4!G+=j5s{?@#mYE( z8|3`kIuYD(YA2MM9`50YR%J22zJI4~s2b=WoT?L$UD1=TUw)O1P8D#J;4RPOOu^Fq z`$75Wpo(9tF2A5uPAb7=b)E;TU7dGA-Su=rAkaWrZJAn7rTj3c?f{25w{WVVK?(R( zT?XWT9B5$MJ!S53b$W_YHUi>@5;z~|VlR4?U~;Z3n*>44$QX*7x}#B3?li{cJ{;Lf z!A}8JES^g!NaDz!bj!MAP$r=2B;rsMGP{n~sE{heeey&jj5wtRm~5ge1#q6mOtzKf zM+P}l3-aj#QasRFnIKD?5)MU^kL`vc=!Zt~GhO(ZgM5;WEU5xV#wyUpsAQHb3fn7a zgklP{OI%a~@Ge&>io)>_94hM2t=g>c@eVm`Bb+~$v~kb zQxas4mGgOUUzrX?UEc;rW+$RjJYZ1AOOA&K%F1?$V1yCPkR~NV-RglXs8Iz}dTC*n zY`i_viK49H^GH0gfTMUKWTMen{u5SPQI-rJs}$BNlCu<%Np%M}(qLK+o*{KcwLz~) zrYAZY%ODAh$CVb>NHU$|nJE}@xJIA?#sXCf3Kg($s6asHft|x10xS-|zrufNYJ{4m zsYzh31HTizaPSU*LiJBQ)3kU{)0zb84w0q{02NF#(fr|&deQwqjJ_Jho%eJ1VrsJP z!}|0A{a~y1oO5gTx$}fC>)jXBXOB3WA}rjBE$uzii+{P}!Jciuu=Rx1&Sk}`?4`Ac z=eM_QIki7@LhnWz*}k4J;%H=bdDO}4prYq7GkLuAey$z1N@AIjbKLSs@U;8>^wDCT zQ%DN(cb)A(j zlDR3Z-FiuY`1gm`$S6Z&LpQ3a+v9Nq8}A~gt<{sSzZlpL*iAoPdE+5t1Y5VYkP(sMMXf&D7aB>#`v;B_*{Qf zxV?+uP{@G#qR=ADoC^1}-DOL;5nxH{MKW7Wbms_LW;&q>tw?GWqjZO@5QVS^LtNNq zs%wH2=B+T0iIA9je)EjEECL%D65bqO{kfvGkf3k-AYIp_@07^QUm__${^GPZ#Qdvp z<1@laK1v(ms%SlC75b^h-vV2ek!!uX>B~@Pcqg)T^|msRo_8oVI|RA8mvL_v^Jm%y zZqRVeK0ULjUdp4(=Nsf?lH;t+TGkRd;~2iGcCP=d`9E7xD+x1_P^L%%3t>@BNO}8_ z@V_B*2Z$hZe~2L9mpc$S`O8-IyhTMhJoTZyO-02m4ULI@#GD9P52yv~gKDG=;1?E+ z^#d}aDqKQibo-n_#-vyfnHCh7oip(4=Mp@79d_EldbrnHVQUefT5S9@JqP$Q5f`r zxoEMKOI<;uxQyN_Y?MUWa>(=&JcZL0_9*VCKjYvr(xlmY_!{pT!)9FOgi&VCh&VU6RYd2OomkW}F zyqF*Bh?Zk8sv!l43<_^tM=DPt><)A5tmzU+q=h7VwBm(aYHte}H=vrxST!1LrmkCN zPZXslizDe0M+OKNp7vOo5k5aYTrBN_Vo)0uuRx%ro;Wd=?L{Ur#hxwzo}SKBIl@>h z98pApv6U{)j0C8xOXVb!BNYj3X)?s}48kp$C}(2@CP*UW)HD=>f}#`(OQ2_|Yve>G zMUrjAWsM*f)m8FA8uA1*2HD2mSVl??0W-;j*rNPB^_n#iUwf{2xCC;nSg}w zs>4?u;P!;i-9IFMkp?pXQ~^r?W5GuXWe$b_0G0r%P)(s+wlr$s^u?eCO943Hy#jqh zQStvkrtDmE2Ex*nR8f7Q^%!za?OEK7Eh6^k62X!g!gF_X=cnp$LK z=8%^)YEq;E(?M;JY@X(m9Ux?jb=_^kS z)UVy{?`OYs^jhIsQGaLJqGImZ-*98waqgkP%;KQ-J?jijTZGwmvFI*g;|WBp@CcX#i|8wI1kn7HV$XEOVXH&@l+Q^ z9 zH8g(QmX64`v5nz5S8NY7u<{=D{g9S>?kR-t&bGm{Vvp;smDS`>2`)@T`V6P;o2;3J zQwP~*ShTsBx0chOPL1QS zBCLoG>E=tFy3@@aI}6!szL|FuOcYr6Tx5U~yLAhgPq*gH{A&3Kzh>;BnO9`bM8@h> z(o+-*D{tyquTLuBJ7$rOVEgHHomc!H6Ne*@KlassdT0aTfAoxh^j(zJ@y-I?Iy|Ai zT9BX5`PgtLl|o8AkTPXs4>w=qf~j$SM0i82Tju_>>#@4OTfN?Qa`9r|irwj~h$XI} z!KBLQ$j+LYY;XK-XQ!1*+^3En%z?;=zCNZ>M^6zEIkj_hQAA`gpqm?hAUy@JGs+WR zo}Q8(O&@{x*Zw_iC1pKLqNy`n@S2oExaeQq!x53*Zdg}9%;PD_GDyKHo2V*N!CWhf zt}ZFkXb_-ht<5{8CdZkRfD#k)S&$U=j(SR7$U<@g#GTfcQ}kr^pMk#~a>gH&GC2-<{HE>RV*K>UyuH7fe$Oi*MJ z=h}k2A@#$>yBaeNQ^X=!n@A*ev8}9#S5-7BD%cb^q|6Tqd=KOhkR;>-l59?WOeh<4 z1aV1hqEnE>j};SY^`fjs?1!ZtMp5huZ7jApr_2M7Qua!u6}GWEaFvW(`bkL z6xoG`U2T>9l4NEmUD_$?=@5wLx&(Psp?HAYBf)pV>0D5A6us^FG@i7o5xBHc++I>q zQA-JzcZst(v_!{bSs32K7AtmE%uC~-f=pqlIo)qkO_{W`xn!(gUq zWV`sh&mrW3V762|zxCv_ZO6x+-L_4+^B?Z5%Gy99?%SN+cjQd)oi`y31X^G@bXkdtv=SHe^ztHFh|#{R+8{H+!Nq@Thx0WM0xYu6lWFLf>k}_oPOy z#k~`oZ~i2`8~$Fa?{1>fIIQz`x7V|rW+oW_e*etpQ!X>PQU>d3v485U46C$*w+*=t z=;WY+;_U{=#p#dj3=<2_H|||4KC${4y=1lhVjDGPz_dMm-$0H1QpGB)HdBX?sQSWS zZQEl_N)Vqd&FPDO^cGj_vVq`dYP-e@Gs4hnZgkp^l)S`ab<`>sYaPsVAAHZT8(Git)`tf`MhE#5Z-iQ|M=+zB~K%L2s=ZU%dq> zEQ#4Fr^hJP>*jqq7I!Wc%x7lKt$UC1c_q>9@*?(P9vLH(P_O(vyoLUzA>!?hDed2B ze%h!Y8qsJ*Cyp`$8Oz;vpucQi-_9jjFrHme!`DU_pMYS(l|k-$UZ3&LO$_IVF!owM z*I-&_m(IHr21b%Ve^azgvw!gyW_Zk_RUcV*MB8Rv zAn52BRxs}AgyY>2CdH;>XRJ7Ieq~nX_kChq1Vf^WkAD0&(K1+cpr~i&i({v{aQDZS zBiD}Gj^%g_XYKE*X^p!~HXo$xJr3{#7d>2z-y7m3!_ltYlCkC>u0)u06SO>tNESXU z{LRPJ(x#i6k)H(2eaLhZ&VtX4@*K-Ycl8~z{D`w&&3k-zZ15z?-*6!o)2#RB5sa_l zOjXD~sQkl|@?TVLsjgDdBc49${`lg#vlCjq&i70%C-p#5WdxN?BGpw3IvVN&ynJ6I zCY7e9Y<9(}Z05%2yZOfFeg5*E2+vHL`L_()yj zFg!U`g1|u1M0@AZ;iOrEE&{fTrVb{7JUv=1z`0>GuzI zx-jvKwQ6R@(>NH{V=OYQ@y14@xSiUh?2hH?}%@4!)_7G#qKC08RRF|S;X)D@)5~+R1o2cW7h~|i$Xa*`16v~(oFv*t zoGJhk+ri-i*w>ZPL1$12d!@`+IwP3^#q?jEsnMQ)uuVX0KyScfXsO_x0gwzF709Os zw4ogT$Or=1AO4@ITYL3?P?>waHFauqU9rK9^Zu#E%hgBf6SmAcg7Q5Od2qvm)+6IR z&mX?8zO??}_mOMNQwJZFwIwTaFr?CDB|n`~W??QgQxKMpp6k^QFTV{knY%TC_Pf_t zeX~-NWnNa&uEn`1REpM|)jjR`%jVoln7VvjKX=*YctW1vnQH5KTWlO3yIw!GIvJZx zWo+~37-p_ct!J3C_4AS^V!{WXJ=-A)5%mm(!p1E zj-C1(Em-#}XPZ)VY%FS z&m#h(x&E^Q@!I#yXax5Qn~gVLunyEYjqx>^)yF+%j+00-m}aQ((*^$e`>{eTU&F^l z%S~1hQobLZE+$xieM|I~xik|^0^Bbk5~l@xp|-vOH^dm{j?D}yG!kmfu*I+*83%FS zJi2<_5u3(7d9p~I(da)xKKXg_t+7; z)c2{;JUDBjncV%r)UD9OFVF&}`-069*VV^);%Tm!p2Q^3zJTdwx}v8_ixOPX+0k_B zBDCu7PGGlFTQ;fZENH8)N_Tb|t*f6}vubMbGTR+`I@+yo$q~0FA1ruPBqFp{Yg16McQ^GrX^7&ZurSs$-~A!2;Gt_^3MSH1rW%Brao#Z&P0u$ zBQ!wU|5Wop>d#QVey#+0RcD5#=^q_dXLFR`i;&Be=}DTAU-fk*{4jh6NOyV)U?|`c zh?BM6I7JS>vYZZ?^75Q4F$_~6JuRL9peY^i1bAfv!T@>%J5!`DvY(5Fmiw?X8k%arE*Q{B9OK0lnyRWy+AfqM zkYcP;ez27yl?UB1oooXE_6kKO3?KpZr16YIXJbGeX;GDe*;d71Q~P8ZoR&o=(*aPy6;Yp62yhG4qB1KI#DpRWHank94zZE`Pi|T0?UI69FqTQ~qVT z0FIe#O*am&G%#C@qTQ*HZQxD!510b|1q%dxZs}xda2IeC@D?sH zgfuj(F?uyMzr^F^T{=Bc0<&nJlm#n{B3B-}Kj)x|!;F0zG0->1 zeq+z7W5bx8*$b$d4NJ6-8T@g34>N09qUqw(3l>uftg@_MSyUx#9Ral2 z@Ze{H>m-9VmByc8vcJ&%@7^@6-~kuTx76>K{a<@KZ7P=6 z)Cv!$`Oh;h?q@W=Y1TbyABU}A${fq?oS9)-CZ{dZk1E)EmuY59_Df@#Bg$N+Uk~g! znZ4An4lg8R+%rpEFQ6ZMalN={KQhiZ2&tX%mN`5k%&~mWUTC(){LQJnqaW*Gh-PTZ zZ)V1ck%%;XM@4t~H$53m$Cf0uG5WNvzAMcz(WS>{NxV2+cRH^<{e%lM!Nxp8XB~@W zs9sf0Hk)moT$*Y0_+qY4m}-G9at+s4d!Om0Md>E13%7|@ZC31)kf#yH@6E7_hjcU> zyyTewFBH^UvxVpl%_*jOv*8{IL7L&^f|qcMsI?jTx)I&F?|nb1{wA6(FGjU$X~|J~ zMy4c8ngOA3dutMUXdSNvoQ#f8zwh(&CiXw+>`h^9UxMa? z9f|3N?W(ML($yUmOi|CZQrkMKgS}}uygDvvYKi+~*yiEuf+w|tiHge;pT-r{RRskc zKxcon$7n=kQ6N#np;MCMyokWL)dVb%WLTX7Mjekvj}FTxzK>0g%6qaoEd|8@|1huu zbvHGTsNSChDzGx0tjwg zR9?BPuBcQ$c{Bmfc~7^-tO1<%i(GxSNC{8%i*6OD6oAX1cnl9Ii;6UswOayZs|ciF z<=>Cg`ZLwT@72}yN)AWK10`cbSyBK6fvNnfQw6;iImy{rMrMh*v?NE+ zZF|KLv?M%=W{*xX#wdbmfPP8?1AdMKj9&a6mbf%l8cdNLjs#T`pdD&Tawwfw7^#TC z%d!QkPN7sJl;jNZ$u@ExFD{fMdm#t4*2WlPgXsj-Sll#1a!ipoio{r^6XS3h$PwY; z;Yp4u{2V7xRTM9T!1v)Ulr)>e$92nV8-Y4Q`H;p@KnO0)&nk%EW`*KmRu_p!D#GyK zl50z0gRH@bNrrJ)T|~U#K%pSJhLK2tVxnm5mE^cUwR5tEped}AHvzOCs8*nvOG|i6 zD2V{%DozRojRNV!CX@v2l#?5>CxurUOe=|{!reV-ZFdkJCBd~9<=2pmF+Ujc56>C^ z_m5Of4TuAL1JVPi!o3XDAL$o&Ux3Ac~|h!@#m@Nqfzg(*IMk-M7U*4Is9zo=0Q{osMYB)Jh?fU0$7`Ua>s9o}HAJe?9*B+$~wj%?-ES z8kT#qyC04%>^Szv!J{e9_lEFKIWZT-86hl*_fNGRpVre}Pq7^R9Qn*apsW|G9-aon}$4%|=gGck>--UJ02@Lwm7{ z?||OgIXKtBKQ5Oo(6UC`5L)!Vy}P}YX}dv-uWcJd;isz3@tU~xbv~S!)nsYWGt$xPQ5EcaP-rUt;s_h}f>Dad42}|Hal;u(^CBSzZQRZju ztDyML`Sd*VY|goNnZ>owal4>g$)u5Z3kx3BkY= zfzq}9B~sREN))t;%xGFgB4%wFq@b==;VIhDzc{C{w6&RG@-l?EP-oZA zzv;Y*v(V8E=O43PDS2CUlZ;-?C8jUtTm6KXbM=bh{98os?z6wfA#XVhxFqBZl6O_t zTh8KD2mJ3r*nf42{^aDiU{cS+?z%cbel)!}lp5_#NQZl!Td693*?Kf)GC2-N^Mgue z)u(IM4=i)94U25g=eoLLmF2vtMQF8+tvV%X6fT8^1aDvLp6-kWPw|wVQR(3%$cE!=MSJ1 zoCYvWQ-XUqhpns=C^M5lsZdwfD489df@qip)riOYU?f(M6|StRQ52_0vLyU0Cm6TG zG(FlF6YWODc~W`7R??yxDUD){=}h(}v~`OCisdSWw7RpSv0f$-6%_FlFgogzDadrb zr&uBA%xP)|_RJ5;;zQ)IL;g1lsj;J~Qvtg|jww{QhwWJwljjh0 z%2Yf5-m3x^pPuhj8|uBLC8TWXDxK0@n{0p1mh8J75~QXKgGkJ0NsrKEAY%`F+(W;6M| zkCwOicf7qZ>2l`nPPYfAT|)^r7yQZ)BE78@GKTTObw>N%4_@=!6vD}{`^-T$1Dxm~ zHgZsT1B2P7l9tWyQCiz|wdUL47}Kow3oV>OKNU#$o6IJK`hFgG8ts=$gqdIZ?H)XH zi)NZxj{l0vIQj!`kt?)N#!fVX#7FVr{#IfDk)nlgL&<3D8G+Q0S*A`D|DzLoaTf@! zTiy_}Hlhh>$%A`k+U8Uz2I@fTJF%~UUdl>;y|;@++Ill7V`Lld!n6gu>fp2b?1=B*YXl$g!N3v7@CgeMEN$&wdZB(y-;7$HheeQ&i~J%Sh$&0M9W z9WV>W-rHKazV}#$WdvvcEL|$UHlx7DePp83^;ZdD zw&>zAqOz^EI(Rl@I^RW1ZxkEpz5WGhZFtq{pMZjYg^hnnuqI0&iUhhvbt)UcSG~?} z%9ZK9eF?U^Lxa=lsq7#;X}GegGK>mX+*MjJ#V?yY#s=wQa#LhH+6^+GzK(wBIgm8D zXLms;70@=p3#+2j)X%y%EJ2SRNOE&@2ODyZ9|`0RP$`s$_5jTda>K~G+Lh(SYA@{6 zohEg&2te7>6|1NgsP&DQlb_`3>=e}_@EJ5}CWoM#+!R0^m>U18&e%T=Ca~X*E6?*( z@Z3R2cxsXoELcTnCLquXybRE<4!zS%q5+889;&Oaf}=s1k)niOfhQ4`9)T0X6Ac4C z&@jNw1&=VGHb@=i;B`h6@e6q9mmlO$s%JJk(fO5UYk=BW{sHJ1@?vkrhWu@|_g=wlHp! zrBcP^G;ly@sH_K7;*mmgrV2o4Xp!-~m}1Za${GYc?Ts{hY+HM0M}AT*2@g#^Kx9q~ zF#(NIaBF}ZgM9+jRDfCqT;~hR0+Cjp&XA>6fflR?V@L~XK%x-Wb&4%qG}{>E>{@Rd zP>SXH1|CKj&|<1ZBbkAuno>4M42pzs4;(>W!UKVZDXU}w{Cn770cYXO2~G@+TRPuK z#pi%N3sMUR#D~#naZ6!oOr%oWOC^&)^hg4I!xbs7tM4eUmnSe}7I-Bu3j`Nwov4sN zmxj@$9)w_fg2W<88bku=TE$Ba^`Izvup;S_o-u zYz;fSfz7VpCl!>!ksQ z%oq9f6>gY+@8qo2iG#5lP=B6sd4E)dt9|F=IuhMhHc&exbRj1WaiVYT;JL`E33I&U z9lS+rR<>My>>HeaIb>&2VZN2)nK|e%Rd2)Tfc!abmK`6@`14PdZ{8Db*ivxq^gOKn zkaW?q3&f-2ip@x7azJp{LL|Fy9=_g)c)(p6oN{pG=YD2TZIg6w?(v+5XATiM&xHR! zuHHYc1^xZw-p_uSS~ay2R+5#;qLXB0)yiZtBq0n*l7vZ;wrc&5$t0CdvXUg7OhVFO z)g*K>gmgL?lATVnGMTJ(Uvob9_w%{$$K(9rICwaZ)%AK`*Y$cmuikf=DlgpntpVp6 zjEHvIvglU_?wKwiQu&;;Wk^d?e-`JREf!(o;HoO*Y&+&pwD+v9D>U75*U-_FO%f$K z;uD<>`dbQ2%NzT@8zfAKT(|l?{^vC|_A}4aLYp>B2rRsnvuW|6&x%!^ZE{6RQjYTV zgWdo|(}nw!{8a2|{I8b}Z8_5M2U`}i0wRXER`WUx4yzQKT6JH0@4swjsTB(Mz(yk8 zjWRAp8`yhB(2a|3a0`N%;|Ed=2~lw?)8UYYAJUHcROW5weX50a{FjOX`rKkk6VDVi zOlmo^uIl=#ohyR+h`y$Fa6-pBZ@m*{qf5m}KjIGaH1jEqPU-Z8uy}+zJ`pD3qfGau$S$087&AjnC=|^ohEW}sRtzX1x|?@C!HC2jdtw<_ zUKE|PsBXg<1c_p+3iGOaInWZs%dO#_V%|=C@NCm<-TOIL@&6m**NzX-I0SnUJR-WC7D9u`_RUBZ0V5HZwq4abO&Na(U|eILGcvo5@+X{AjbH~ z9N_x}ySR5JLZ|% zM8WvEb2{0B@t7@N-@F~o6^=Y=i?O48zkMSH#>TaE+T#MP3cfMUeE<8y*nQcTbH(FT z6)K)mIRa&Hx*d!ae!v3;>L=JE;rqT&?4v^#i`1a!R0A_DT@n@LGPWNAySQ@YUG#8Lg_0tl0LL@{Uy{Gs;2e1QPM z-1)_hI2RI(qcy8JnlTN3H49?dyo~4=jY75w~S z1!U!|T-Xr$j-=o{anydk0K#xy!7SkRK}@e`HI2q|Z5QOn<#>cCqnSf@CEA+8vHEt1 z+w18ukMe*`16H{X3x*_!P*y1Dkqwp!B|{|(HI05z~5IJ$a4nu11@sd9E7N)g!CxDSgi?|3xr&R^%O&ufeCM zp0r-N|6}soG?Z16ItzdMRp$)|g#+8Arg6)w1`b=%Hqv~5vP;*sH*rYE zct3I=-mFLZX0Q6^;f;7@>9)kf_HQgg!ytlfB;_L}FAC!X;91plq_s_Q)cX?<3cs*| zOmO3y`-i>toowW}wfvM3pOa$cU#&o!Y6i)A0`smNe#@x%R0H!cHX0Y~ZeLM2gT&!u z9qU!8)?wkizx(0v#>35<)Shf#Bbz#jZ+0-D4@1BwaPH$>Bg_L5mOs3#EE9SZ5zl!r zpZXikl_1cB6&hnKD%B#IT$ZC}yOf&*Tsn8Uf{iB3hzJr{&Y({`-Bp^I6FTr4gu?$> z%3V!Dpl8}4P*-Y9`(!XL8@v45ouAjrY`^l>;(TzDG^?qsl*<)CvXI9(&4?~)~C@wy%*hDIb|zGioS7c{h^lLKNn3LLt709-0YV0HSN*7%`ywf z!>=`3W#F@l;M+u-7qa;~jUZ$HVy@v>6=*(+Gj;4WOoT*=nV*DQWLkYox6mj0%>lDr zCCA~A?ac=SDb^xO#5euih|chmS(vZO zrEIU}Ss6Sh&h@x^Z9S>_eKouOLD+XU(e=mg?bijg1(ulPp0+zPYr%Kt;N<=6GRh7y z;r1hThg*Jn*@w9YY^0m>O@uAQAFNK_ZvX1Npy!a5bn~ue2 zGfTd;fAsnB{Yhf$f)(5Rlzvmku^W+@qSHnEV3vm$LtAj>M~?7e z`}1{SJWj{6*Gw{bXY_&bn>SuUbOmj2x4QCHL({9mq9k5M(Yf;cqHa5>h44b zv$%(nO3JP@+?Bn9Awmz>;SyeUzk^fi2VC8F9jO91QtH1XK=+~xdKY-e4t@SQ5*Gu< zuu{{7fPnk9jy*nwP*GJ|mYt>ht*#_lkmEz!zdz|-(<4p7o{=^wrZkx_mo)QXNe`nIs43$3xI4??2i25Dp*TUi_t$WMYm zX4_3!;I^cShT^gQc19p~n_W^@Z#(4lo7G*sZDck-xv(d{QJGvf8b!-XuFHq{oGgLX z%`ft5uW67gbIIzQ`hhV;;5ISUE~#A#4tb3&ncmu32N_aG@<%1`yLvUzaZz@OG&nbw zlblr%$?Wc;59NsJTP3kESuog><|>`Y_@YR=hMQgGN^<9AG_tIGuN7#h3TNsI4Ettb~)O8d64BI6Rq;LlBn0(zY? zw=Xrf{!x#*87_+DMm5}&)KJ`;dm8n_EBzEp3!RhxRRE_IK=upVxN~L~NPnGUVBT|HB{{lW1|j-%_Q?0gH?vv&9XC#kuh&qcK5#PcY*(7dJS zV6^+C-MGA}m35zfCN&|bxwogBht09+DDyn={=xCW)o0 zf6w;HiL?pg%ITOB@3zTVw=bDp+3`vB^8!00HRsts@W{n>aCKhtp~Z{~0~t{9{OD-E42Q8dmS)-o{0kGziAU0E98NY%w6gfs z-ZW*>VM|T)9zrT%hMX+ zuBoa8zm&3Xxi({QtaL40UcHW8z?U@RPA(d5b1aA%d1$;=dmiPMMM9a{URjR+ZN?n@ zJlikX!kgVhW59irV94>6VVpINS%yr)M`o)Mg z&yU;pbVd~H8GZfD{8y#nObp3yk{$8)8|_a~*LK~A`kB=HGEw0%DI}aPwX((IZ@sLG zjr;qR$3Gj=E^Yrd_j_O7x|)L0@1696cq687?4#`WJDTHqH-W#y9$yAFg9=tD)4} zC*`&s`aJ$ku~N{rt!ma*nWfi;+bv`Nq$PM;G0Mm`YfokFofy|lJ#WALm%J3L)uLyo z5Lk`C+nF5jh2&CCz452oiEi6up1Z$*FR>K@v%lJQ-JN#9Nv*|JS%3 z$OS5tK_uJYJ;`v9(%k=m!tY*@NR{E){#KTnmNMOy|I4FQ!Mi6mFA%N#i;>A>m04Vy zQp~HC;3~Iv#BtW3=ZEbhc_H6g+-ke;Y8o`-c1-n5VSYW|-_CkINNJ#0kS#sEG zkx$w@0*6Nm53_Gy;rivER}%s}6xJlp=VWrzBy!iHh9fn>8P`)#L_N z8=fqe8d!!Q(5A{v9EO85jM((gf{zVoNpMOslMnY-nqNOn4!-oO)OZ!o7uCf^*tDM; z`oK->`c;K>;BY=9-%Dsm&IoS$)`E=jY_ay@sZPoYlKvLXxb)ZT&BF`mJtN1TG%lR> zW@H}D-tf%C9c7bqLP{GS#gHsi9=@CSaw-Dtg7^G=ulyt`!FQna>hB)^Oy1vXSgdI( zaBuUSZt-s37W?)B=I`rs(XI?$;lsV$C7t4o#4pnwA75HH@oi=feq{NZ@3Tv986!B! zTO-f&p1Oqjq592`mSWvZb-Yyj?L7bT?D83gc+`|@C@doG)ocrOK8h?)Zc-;7x8fl< zsND#}as*-yoBMqBz6a~Lwx0N@2}j31qNh<)r|}bIv-jC*P+s!*=dV)9nk3Xx%z8YE zl9|%}AO+aBw#;M?&!a(n)M8D_-9CP{6_2-dVVpS?W2iD~JcJHcV7`u`+=+r<&QbGQ zD7;~+u?qESX;OGx%IHlLUX1SehH{Ndncj9JIF2{4Fl}x2J5PZL zSEi^#)5#h$llmhI+fo`Cf@6__ul+E zTo8PM1hX7Io;aRu8+M5@n}A54gFtxUk&-OoXegq&^4OH9qx^cl3rRRmkM$8@4deK? zI+1Ilc4bu>%tILP$Z?282m~2{G$o;jqmE(4m=z>+vI)OY5F1RBV|>^mvcy3B60@F;bOG1RAq0YoaU!9EC8$vR zp{uVjo1~epbfhU8F>OMGm{EWxh!B#c7%w@7cP_%|DA9%_w1osikf4SO5$C#&*xBTSi?CLO2rEr0f`eU7%(+mAXpIuy{${pYaQm#$Nf z$oR3$Q}d;{sNu9N%ks89C_t6|N}#8DiLkD5XuH=bsGWrthDbajT^)GB;4Q{Ugu2f} zE+U;JPbdmX3K8Zi)Y)UH&OAxh`PWC5Qj5em9`s*X=94Xay>mDv%G;Q0v-fp&9b1x>Nl@e=l>Y{ zeu-UAEg@@;8Pn59OSADVr9+2{w=?(Ji?HU>{T8oEb9NPqjgf1*%m@f1#=as{ZlDfC zZgf8DPcOlWPe+SNc*clxySS5>d*3KAw>1|+zL)r!AOx??SeMZy-_7h*s6`6&ng>|I zgdB6dK7Y~S14;wlMXY)0?q#LnoO1`;Dz^NcIWE08qZ@ggxi|kZCZPf2Bh6fOtb{D7 zIMIFVd_88qqU2VW8ADzbUU=bXVZnL@FDZJ-8)Cuq`tyskiuer}7d&r;F><*GiNt9^H*uKX#cneM5ySiRbv*%v^$5FUs~( zTp6vvJhRQ)U{m7#8so)BMP4?Tpyxd(%=YJ`j}@RSE*T&=`N`j}j9Q|0O9VT{P^P48 z^MaEWB9v)dilG8+fk&Du3c@)ka}shI{pz1p7?(S>?qu}r-Ft(@m=7AWU=b>((et3I z9BGb6@(%6XJMHhnaWTq*gq*K3n?tX)5LYgYs+&ea2FbBl1!Bw#1JFBD`OzWgl;Fkb z3-Q<2KRPnJ3)Qcbv>o8LS_@Vwlg9a#7Ow>Jr0ENzlA`aVM9tY3cPH&gR*J#aq`ez6 zCcEI@Tr!wLx`keN_UPjj#-b~6Q**vX@`t<5s(H(9J_xDL+l4>2F&VuMao{qBN50(_ zvG>Po38wVdZj(Ag_OUBnw@Y@jq9@gzx^g77>*lrp-Nfm0!q$3=acVqwd{0D0MpkV_ zIe5>y*q>&iI=;J3nh-p>gN>|2m3I-UO0DX zj%%<3`G>7dwv%0JMRj*YHGo8w4UI5#9*+o(_i)z_id!3tLc?o=SkTsaxVr0#&%KL` z&>wSoCX0k@U7`R+$38F)EH7V8p;pDl=)mFJ*E9OE3#j36nJvSQrsM7cnwqZax3So8 zJvJemC(z}c(O>&hDs_26Sgws58pXRfj@`PUA16MRshb-|;GSPb(s*s1ejyGc#|**P z-8#J&4SpVc$gng|JUk|;*4_PmOxmcuPz*^C{a`ugl%6yW9y%~DCG$tez>WF_M%cRU z=eqq|Fl*>HgAF%%+L6Ig*aD^sA*BT#jjTollJ0tp%xyR51h z%zN^VN>$^aytzkH-yRmsEOudJ$5*p>I12c?iV_5g!OZN4xT=V}u}*oh2R=G9L>|ws z$*+E>0m0xZ6~{Y@+bFec zca=)YC2@(akQ!vONL+OUOgP;Y@jc+bfL*0#v?rSuuEdcvtKHR)+ST!KQNe`V)dZDC zRBaGJA>(U@G+YX5fh;tyaY*c@l9H6_Ep`w^|=2Z0F<=VxByZ z?m3+%Pp+(~k|~?ZIZiA`FHgPWLBBKj843QsiLo9L1k8nY{e}(Fot z+Lf>anpSVAh?R`k2ICt4|rQMuAa+#cKgW5Zt1wO>%PMqT z>!|(bR5~ejcKyDIjViO{X4WB!iwaU%>Iu`z3GaOmiocs;CXz( zX1Dcx_JnllyscQ=q}V%Og7J+BBbdp!!xDO1&ey@ePF~9FpK;uLwyJfr-@=H}`^hRY z&)1h2n?NOjvzUm*?vdlAOEjC*0{leWsQ|NeqC*&*u_KHyXBwyYBQ{5EZMKRemZq3k zIl8ACS_=s+lQ)Z+_>&j{$rBT+Mh+c|<-EN=d6FH(DyFNHe{KvVUR!ApumMtVM-RK* zFW3_4+qyUIa%m?H#lZWbUBkDg@~mhwn~$8m_g|zF7fo5!Vs0P9c`*ftv8~)OHDo7a z35Pz6CXnkfE2n5;eD9Z^j!ii^CDOqpz=w%L@DX;((|$&4^P*i=JNG!F2|JT~>67qz zRB98>9$Wh4w_670tIZqz2v5?ax|UTEGt(nay}z_yZ)J`+E+4#ZcK6gEjW=_}Kb!uI z!TrbHn*!!uG9oi$KUe$oacym5U3s;xqPmhV(C*)_^LBTh?N;JWl{dF(6BEXwBjP+f zi;Bvl16ft9kUnn0_}btf+tz7s*JTH@v_}QH1KCVJTvr2w%N&jD3}GgWhkQ%o&$>luxyHa7+?ZRg$f%T0d*5j zFXaM}(!s7FnDygf2V^4#z)d{#rGHzveupQiPJ|WP%a^*6ydWn^ssjb;??`i_R^F*= zYX;wuy0B0Of{>Z5D>(;eJgP^^%15CZ_V|^I><1~1H-$eja3O@;!Y~iW4Lw{dK+I! zr^z|Yv2wA-1-xMbILZa363T=+F^(s%X>@mC0d@cub&709RbIHdzHK#JVeQuhk+?v0 zQ+P#>=9}!Jdlz#t<_mhxY`mSSQ;W(1o>(^n2#y46>5=CEKMkK$2mBJ zSOu}f*^aAiDZq-MbNMw=h+uuWo0+(G#Q1ltR#1yEd}Oi4j%Nf1c@p`lD|0% zN2Y5;Vnu(U)%2t=2i(og5#r562U~ZQ9Y@h1gklQiQ3D3IhC#g`)U<1*@-R;djm1>a zqqOy40K*k(&gLmp4TJJT zfu={Md8rNs0JKL^eL|kQ7p;~-%-S4Ml^;q&_ zBwWV;Ljn{=NEU;Bfq56C5$38el+_y*eugsObA<667+-)z0}==o6{;(&?sD^fhBaV- zr*}O3On1QVgn=vkaozuQHZVnE?|nw*-C*x6^-nRh%-*PxIQSnSwnTMiohrMZJ>&d~%XC_s9PJx`#XZm(Hc9#SfnyS<1h#bliLvdF3OY zl@`6z*wiq1!QW`4)qN=^;7Ke7>_{_MmXP;8*D=(^8IOxrl&k%W50UJttOF; zR-Qt6ho$ARRx2IzCOWOsmn_w`Ff4R$IRqSR@L&4eum#A&gxWkO=i z+h0vPVP+cP%bU2k^jYGwV{(MSR3l`1{1+*2`>s>$&NTsLi8ZnSYaM})G?=Zyr&vs) zlA4g#cBCfMl|2*J7-neihgi>`v@g)u5To+@KEK-c=UQnB=>l_awP-G0)qF>`*qh^)Zf+HbP`kj9$4ng+~;n-i3y|w5YjInYS`x&4n54V^F^pI-X0+NcU z-mVYRL|)U}`Vc51qjH3gM)PI(5BDX@hUg|Y!bOM)nf3`>AG5q~$(*@K?d2trzFy+J zy^n2RgA?bNhFJ@4m|8E}^VEcA|9gn23;SIw@*L_yPxGI3@Y7S4`7E`^`W?&N&HpmJ z|C^lkzjowsgA|0bULT-9kJH?90vV~EwC?B_cuNCcAM6$5mKM5*Q0+SQ&e;^$fqcDq zE^@xRHg-F_&uc5H;rR{3;-S^7{>TVrV#4K>yj4)GGo0+!I5>mBXoZtAr~^EewbN|j z=?W1Oc!$Gl93DMG-JNO_MoV#oXZF~=YZ*?CUq21P8(Ujfr86`dbD<d^b_>8{?;mI5d5A_Uzj?dSLM5CQuBk*G|pO%*E+GRR%F>ma0x!wYI{tV>!v<A- z@dypcNSIu$5;u0YD%6S|HOWrz(JCy2+uKnll<43jcxD4~Mpz<%l%5lif)nbXyn;li zd}73S7DP(Ih!pu|raZfz7P68{9b#I9snIt+r2|9~I`nsxFDp7FOEgSYn|HUCrt2el|X&dF>AB4-7;la$r;E*iOaQR&c zBww^@MR9__&jBZA+o|^_*t$X|Kv368;LWcPlKo65YK^9NK3-m@P_YTsKCB>HN<$!P zf3SNInW0GzuPYJi%@?2m|K>R0$P*NMz4HwO0#fhruOJ+t4*F>HAV|qiR|g2qpx)sD zA1$a1_$Ku#gZn?{8&jn4K4>(_A!MDTv?UX5=Hyt9FAF&Stz%bD+i=hQlav3txI8nq zWZ7wDU~0HCyN{Vj-I~LCuzyy=LEb-#Ke}#PPVXrC<&(3GSDi6iyfulu*0!JA=C~}M zf7|zr3vu?c;tk=bKBIypPSgHHD8?MwOy>mOSM9VbNYb+8GWmG0y0TN%@Jry$$P zd6O)}CJH^H;pBe9igb&JOrf2~{&T$rCdj%Tb&43+7+WJHvy%t2-eLv2o_p~k1~pp` zi~C!!vntA$QM0XFtT0YSeChp6gc)XovBNB^sCq(if}5!-i8+H=>|S5yPfAVfx;7I} ze*fsC)zW;UiI9?<+g=}yc0#q}OYtdR`yLi7ksrsou!TLudyThchn4c}PnHDZ1il7l zNs3e&c5Xs5eX{a^z%0n!m$!16&K@J?V@&E01}^NlX=#{;Yn~Y5gY+s<@@)$rZKZjF zqEf~DNlqe95zVPy^iD8kv**f;0l+_DtwZ9r=U|7G7wG2G?eWL`8!ET*C$D!4L>bA~ zmC?w4&TsSlEOzzL=elzO%#9oHZ<3rE@CYNXLCO8X2}y$KDc*oF13hUXoReZ|OpYou z9=;vdj6P`b087-Kc`%zhk)_}pxQ|j9rF)Ass0-hAZN*s4&)r#apyT!h7aEhCf->}s zdc$u*&R44V;5KHbp}6tiriCw)EkOHJm83=c?>`|$8rtGig6%KN^SY<-4!-S~I=6rdK{pIOMN8tFEjwhZI2c9q^syV#6rwgzr2A{B=S8$ilJj1o%=NZg3 z_b03CQwB|$8pO9nZS$7^rwo#U27p;iEV zXm>iQ`5pbw2JD!&WnLGHl*TZAxyLKce z{U|AaarV6K)CrxHb%hV(1at-$%LXDN2AUgdSF^^`Q);|u^T`yQ?-JdrmAYWYql)rG zKL*&ZM==;}Oq_0#sqSf~j>`pCvKN^;1PqSo2xt^w^$%CtfT__R8#5}(i-5^Yp)k~o z!Ao_p%YpQFN&Xl>Gn;_&*rR*WK3Z5jezw5X!BID?)&b*9-mb2z{!v@~B|TGTV61;& z4iAnE3_zV20n8y7p`Xe04FPO{ftJ(VIRY=pk8l9KdSLU;yn|FscV(9k=m;;P{-t`QU}O1hZ}?xoTNGrNSDwG=m#DZ z_2POMIwUEJ1i%{76mdOGD4q_GCE-izmEc)!t#8cm3sd$g)toR@szlzYigsdY#`?q* zoI;?8^YYZc;{}dmZEa9$<>5R=o=X^HVm3IjY7@&<4Ows=M*FfoJE1Zf+`}V-8z{Kq z*d!Lvp+|bM1#FmhXuyqKE36W*;dNg}5BCXX0_)P#lM+Y4iQU`vX=)dorcth~5rZI! z1*B~-gkkW-a!O@&eSN;La(@C0i9i5VxnY`$HlCt(5Mwi_q^_vc-yDFqK0N>RW_3_*5CdrIe)bOf5gU9? z@RQ&kftn9m04fgZ0G}Cj2JjSsR3~`(KrCMV7iGz0lkTQr&EDzbf6d9`T~h>I`t;v; z&+YBcYPK&uG34qM(w4LRjLUcR<&eX*CYJGoglz57YnvJt@RaiOzng(h&)q(9s#PVywn z+V{R6+Rb^Rou8smJI-ynXVCH6s!Yb*jdSB{-u-%fh`HvPL9~$McXlMpcEzZT?~y*- zyL!xx665C~n@-!>^74|T(xR`1vu3_LcYK{^yN%0UVst>}tF~PZSMKp`e6$z?(zKVK zNP}jZrnod*5nrEuGs9xWY^kiP30*W*Hyvh79d+gNJOeC+_#I16lUF0w>j1;aR zRrXpME}dci zkMN_J)hEgI`zIDbr;9K|98SZn4%=Fu9#kSNKg|wWb}@%GT{O!ifQd{iz^p)~5w_-B z?l`?F_}I)M-pV*C-PEyK;Z%%X(UgHZ=y7=G*~HMlH%?y0NJ$fIN`6f*i|9Z6q(mn@ zu%UbxLykBVnzvzqFrUf4?7c~8`61=+;fd{1G`diZwwZ%-PA^{iNKVJNb=3QxAZ53m zG>o235)dPdoVTWjYJ<`;7;V@6GcmTrvc=!UEl(yPc^Jh71jqexv%%C#Nh&IWZ;p*w z5#zCTG0V}3y_k7}O-CZB3beuSzFX5KZ{a9fgn`mDhWFp{7X00>p4a$TS0x>TpHZy3 z-#Yc1p+I7Cs7ca-Jri<2cvko|MMTw66%tREI#qiwV13AC>>uWvS_S8spR`#~y`Wjn zcqQQlH=0b!d$Ke8k6&6b))WNadw4J|$0o9_^q}Rd3>yBq@pxJW+NPZ2kB@C<7kR~8 zxe))yR)KH2)sQ$vQ{m&*xiR@7M?H|MiIfUyt!DKB*+XunwyF zjmG5Uq=vHUXQ_gLer0V{^;l>~cab>P$vFom1*=){L9Ez0ZttQv-8btlA4%El#i*E1 zg~2{du|Quu9LVc{B61+6qqV&zkOgd})zc|~UbIv&i;o>SwBLiK&dCF*c%+YrH>Q%Q zkzgu!af3djzoAioLq3Q#dbNf+$93VH`Tezx+B?_#AyYFt_$)iGcR#nnk2ZSgk{V)b zSIc#!C4NrsV?{z;ZkD#Hdi+ctTq+xT-VQYfE{B0wjGY&cfyWIh4=4qUa(N|yQa&>Z z^{BZ?*Zr5S=C_eY?W6DtttuaZo1lO7j6Hg&kJkJoE9+mU9bIF!lCh!!NI>cV6t&mJ zpw|IzC}2cyO7!Z|-vfvZWmPfY=t&9u>_VZqkgV=ez)>rZ51Gfs_?8J9JRs|FYe(hdg!V)RpI8~%1H3+p1PW9|YcI*Elegu$Q%Ge+5ks+25DBWx&eGiN)QGdQW&*V9rB(75kJ(vZtqQYQ8vnz)?-Cf?Ml0>mKdy({5&l;h&r>#uD zsc>>s$I=JrrN!mP}QY6SKi%O6W zN;RYM-Wd4*&MU4d9|MhtDIYYBur&cW0E0g00;mA!0*C?#KTP0Z%Ji>lK$`%+9>Q0k zEWphIrGbe(^ppAnD1bYJS$(x$L;#OG#Os6o474BmM*#>7e8BLf0D~=PB|&>SWdH3k z*os?eM&?$H4g}1%D2``)Bq_Ba7Md+kMYApItyWu(gTRL$KK<#qnFn3cB%tun|yxXA`(3<9hz}^lKjFCPObkmqRoZh`Hu^7>KC5GJ-46u zwA1FCX)>Jic-6FryCmsDP~xu-U6Ynk#!4Ee^Lv-BAT3s1-?(sP9`eQFFOz>^d;YCB zjqwOFQn#4;2-wf*u5Ai4TDN18&1ZX_VYZON;7AtcPY}$buH4# z`0~nk=1baC?=sQ$5q6&F7b>aoB({j3J)suoEJB?_2QMPoMy&N=m^dO#oVC{x#w;)6 z4@*|Bw&^>wUUxx?c6NO2SGY28(T+2NM#nzTJrPpmY4kDYor_MqIMz?^AEctrqrNZe z&r7K>=vefQw3U}*o|%EioZbYSJ&%vl%e2#2)UUsF>|2>9Le}E? zRBuez;NA+Rtc;nx<;J(HZ^4UB2iT{eNkn;i;u@tw#~s4et4&yPnYnTpShB? zFTmQzv6_mnKibc*Qq`fi9O~tJojLP{k-u`v+DcA(c{rTKM+U4P!t{_*$?{#KJARYgT^`P$g}$Ma7w)|k;&Hr^uc zGdeZJ!rzF8RiSWH4j$>zC7E@j^PT9goNbgp0-iDr?fFfU=7rGjFG{#|;Z|?L`L$^Q zKK#ueM*SV8(WS4DSxuInthoWED}ATAKTmgf@t_$wSbgNxO0R2#?+Z`A3iOC&%UcZi2qzeBW!42T%R)ms zn%fhDSh`eh%$#|Co-`Qm!&-R&-i}v(s{mhcEceK4*Y4cnU*^ou4rKjsu&%HZj4*6SA?&5fhbI7LT;DCwH-=~9ovB1V4# zv$a*f3F+<}ht)CU@LzV1snlc13BX^`@1|?(K$`SXaDYBJFd)bdldje7A+Y4oz?g|f zR6vei3OjQA*eFi}O-5G`I}9rONY`q(VObmp5&`>H284$?)v7FZF_T%#AhdS2Lu;bx zsISW6IJ)CB3}P&Wt*)vQbBL`#7fY_x6ieXI4+{nuh-s?YVZG`Iq4o&6(!mbG?%7$@ zs@_J;exVl5LD#j*S;V6JVpUxhPgz{74xtNOanP-(!bK_^O-W;^Mr5@v?o}K?1PQPK zJwzOnM#0OoLLl+4uu1^9K8=(FECFc1B5?YAeSKnac47$ZS+oKXv{jBio+_FE8n)V? zaER_JvPjBsIt@;MZ4=73(Ljdfepy5>uDZB5o0lIK6HI_*ajt8a+?}m~CP<~G>5qy< zsFUI#q^iUb$`U2e|0&+(;an+1HU%hFl6-+CA^}qUC9aP0q6AHnP@5F>QpnfK4k!$0 z(Z50j3iEI80v{hp3kcD_Y!lEJ_yW?eI(V=_{u$^6dFlp5`x)x|A1*6XL^=apR+sQL z)%kmwW`8X!R@Ri>Psh((otJR!z4QcWcA`2f_T0l%r&lKivpPy1r@DUnEu`(LQv-E% z$KO2sGegQc-h>yP7WC*gbvjYC_NMy#s#E>Rf_*^M%JJ z-$;2}`!edXyVS{Ncw+u4$$c}+4T;Qxn)|Yose_NiY(LA*cV|+2FHYE;PW|?UOfq?- z-1-h@Hq)e4a-<-5%iV*Y3`V|~>i!~P?G$ktrmOm>4BuJB(#_V_4mV+sj=sG#gZFl> zIo-gK&6gP)+Og%xS$y$*Ga9CpKLy`gu*LUV6 zg1(_lGj!_+dk?)#*ZY&c4N8Q;WP$35vGvoanK@n~nv*Ao5Y8fzRV9LsT~NOB)EQ>v zYmsP9Ip5!EK^yzSsW6xI^5pM5?`4EN@Aw(U^BMBDnTA=?-ZOLJuK5e*#4dZg7>$%8 zEl7C^dtXBakCb+BmW#qa+X7x{bhiwZ4Cj`|7F93{*;vcjJ`-W*v&U|9GHim4-2IS# zorrTdQV+?`l*D)%J>{A+6}vd`7o?fj3Da`fZz$v{y1`uT)>Km__s`!BZX$;STCR5Q zI~O~FL!@A?tbK|_s+#}A#$Z3OSNf>j>vFu;m7{t7sO4c>eIw`Mw@RAk##P|&Dz#Gz zeU`<*R4bY+=EqDLK^quI#ZU)xarsr<{>kGe!2Ec zabrx(`0d7*9i1L76khI37Z@}sYwNySSzTG+4g{8(BPnAu?QaIL@&g$i`(r9rhxEn7 zjDC1O_)a+x8UnlP-VGu9=FLm=p#AvJSLWbY1(y(Fx#PD>01U!RE{tnCRJi`}E!wtegqTt2ALf}R1HB{^PC^GH0XFHrkqbdMg4oi84H#Cxbe6tX#756}YM zBCztiU+H2aU;;B18w0D9u|#e(iEB!s)Fs7es$|uGo_*N`6;xd>Q6;m-v~bRmUN;}F ziYeC!W2$On6ulz(V3#^POjBR1^k4-AGXYzoVZ{I!Q7I{wCx_&b+44u~hWYMtk0=Q0 z^MK%z;X@M7Z&xNJX%nOBD=Ou6qPqDZ^4M~eBq~jb z(QxG~gr-yviffhooml$TiHwsIC^y3y5Ed3_XyL7o+LfY8jgezcC{_8WO_AIa8%%J4 znO~JOGMK3s1+X5$WDFz(S{``7fWSb%0<9}Z2ml~JL7<@pr2&sx^M7neaI=vqAz3d-xhJX{)Z++wyxwO%`f=FX{VUc$cK#zV7K z)b)uXyywMBPn=OlA|9gp&j%Kf*Ac2SFYJ1rh#d}~FZ*)7amqB4*0cv_t`w%OpIO~^ zXu;zp?!L0YKi8$3{C;ci<&gD19F1%(7;mN>)eKe9?Toa`O3N;06|`g?h&ttPe}>J` zHB9EkXx?yiXv&^RkHa_@4}8SVCoBw3+a6?i+3eGeyrm97-7YJ#`!;Ud!TTC>ElbF8=y{YpU5a5o!{iEo}*i41bEn zeRp5=VhJvbzug$CQqC0lh3-f*TG*#43-Hzv`$S8kI4FY|tnchIEYoFAh>Mj7Sx$&6 z@9;(cNv4b^W=N$Z-NL%E?cEZ0j(IDB9_=T4^Mkc9U>cW^4QvW8Z{R_fcDIsJORR?@^200{5<#ePMVzR+COH>zzzM z`V`ndrK89DNG%rO5yit6^CfO`QJzXmtnmop;M2wCZ8PP@R!jxMW{S1_^>*IL&}&1M zV~&(3A=558#oX(MTIC8=1M# z%THWh*_D;mxu4s~D=ch?j=FY)mzXTL=IeXwPD?l^@<)zf+Z;EDGy>T0N8Db>QXY!u z34w}WZPidz-lO>Vth3v}iLx`An>))XHqL| zS9{ELhnqFpty?mVe4M`^qP{1$srawcdA96i=#`{`- zyQa2rv_+OY-4QrCYQU7EFlw;sfE5e2uf4BfAfg3Y!k0myM2x~T1^lbPLwNZdSYU8) zLO+J-_+unhFw)yM3Z(ME!LgT5V3*Q-UvHBHH&xxuVsW^gi)*{a1E+}>f(OY1M^zi) z6@7)OcQPE0!~zP9B9y3YSIA4k6Jpo^%7P_^yj~@fb%E0gGLjy_A+ULek_yXr7YcsA zm#1=UFb7VNNfR`=659kmJ(vjIDNrT2T`%W^3x)NdGGOMCHFh$g9A_)qrJYJD2^>+{ zL5+r!ROdidJyTbOXUWyP9ynMZl~6vY8kCbr;a;A82}yuB0DII1nA1IzgN;l)KWRe( z3G7>%dU;)PxH!8{oK02*aiPy~@S;b%wrPUGfZRm|#Cd#(2ap|xK++1;5gaJ|Q19yi zs8|CQ0U0QXy1i>~V2~c1m6sP$mt5yWrt@AtQ*&Yjih7|K$6|u)@vA{^L08+P)!;45 z^TTi8h6}}FWl@qch-nqfYLiI8Jq9B`>U8(Kcp;$DRP}=jQbb+0Kp%btK>&#u8f}t4*0bFWSXpq*@^FFt+bkl_!TT_~v}jk*jsHDz z&uPhiLCg@YzrMBgU(CU+xc86FEx%Rs^l-xGw^tVI44!&@dzFz@qb%mlqJyJGrm z+WQBhnafL9w`)H<($0UsV8Ml$Gw!=yHrjaGa*Ny|n%mv3&s)&(ShD?b$%;ESAt33t zv%D*ilz>oa(j?r)2csZ`4TV(<8NCG_O7i?NyVYC!@f8=VOIoh zQWBMING|scAgU!PPrN-tcYT1^-{l>`A4<=bz3=8~o`@VpZ1!0RQgz6r79B5>23~*myHDx*Iz&CiJNRuQ(ylqv-MVWc##R-VfggLF4 zm6bt$xlXu!|6G>`&iPdLOTS5=i61ErWj3qQzSUZhI;Yj#K|x31XE-uH!GX(vhVIm! zH8+^T+a2SAFb{~3`x#kg*$4V=$!e0(-7u@taIv1wW=m8agZh9Z>rA6Mb_3t!yG|uD zkGAV{YciNwO>MEz2PDatSQhuc0({pbTsfz?ehZ@At<7*Y>wdG#x4|z@=!WBFkAE$q zB2ab$QmXCJPL|wysa?wTw#BC@dddOsw}Zbi&>I4A_p;elzFU$g?50I08^3nP0OsIK zWSf70ZLDZ^<|MY@QR=;<9}^qnjUQQQ2d1vAKlbF$tl2f1ci-1<jUffAs%kq_);_y!~UDfZ! zcgLPxx0TV?2+a-3|9YhlNFFc0M2lcOO+lK9q=*a*#)3bwUFs|Hp2*FW(#jgpMH5xxdd zWO-J+XBpPC+$fOL*UFhgYyKR zvHZNI7xucb+B3ys<84CiSt9X@u;+cVw=tfdi~O^LTr|e7Y&)gzNXQPh!^4T8tI`^sBbB99C>e`SYrZUOw;qr?nRnUraMU zP`zVm)usjHSNA<$h%DlU2vZ@Vx5LLkj@5IV!cAI%o2SJudaE$IjZi{6J+vk(ZKVyO;`F*!<}yshhgjg62Y zv_lYVYgON2$&b6UjpV`F?(%O&Z82KBLzAn2^=Yw`PFlfVvu90|a-OhaevqtE2amYr zU6@yDJTGDC*ooICb+F5nla)+lx!+{jcq?)`r6tEGeTx>WNjUNFs~=^~UTxL@Mu~1f zppv22TKIY?;$Apgzbud4d4G%Q`wmt?c1nm4VM94QjjE-X&i30*x6jiKkseXg5OufM zsE)Nk(+}HI^;JLiA32oft9xilo`w;ubtI?HVXU2-kmgpIzD)lBwkLh@&Gg>687|6n z{n7nC6fLjHwg0O~+^Cm|@IbIU5ZSjN9+l3B1@P0uHN?g9n5)Ng9>2e`ylRmroWr#T znTO^tYD|o)Nrm>loXOwIUshGaf;IfSyKoQvUQsce)g|t(jTP0C5ur&?n{|Y-9#T-J zTdS{%CLwmq(E+$YAPM8WNN|{s3=U7A&D3}5)ZT8ta=9;APr5Z_TKj2}MW<_h2)O~I zGCvY*Ig`)3K{hk3CA&lbIR{K2WPJLCg+i2HMM)mP4lDG+DCBa9 z50<46H9&cJ1;3%Jrd%1z1OibbF&tMadIu!y8S+Guq?#+Q;_{-IbuQ=}SB#L*^`N8e zK@yGYg{ceil=B;S@f0WokW?o~32nd_ax1wI{0EDMR4^d5jGM?|z=8#5d>zSB=!^oH zxU#GXstx4nb&^z}gk_1*L}1Y(f%2PB$$;~uhLMwD`SJmW0tWa?Rj-VIrN|=~G9wJ| zpWK{iX{;R-4FIpncc;kHsfq})jL+xh)G6&fy_``>Bb>}069qJ41XXsgEfIpW3mTyO zKq_#p=EW&usX(7flE{`GY@iB-C{`#?k6ie5#bbam1PYW-wgduE!i~$Z!$x>?5nM6Q zEe<$Ad3>g}IurmRNs}T>u@&vNcwtvXLe@H`+punLGn=*VY-~%8( z3cfl(4?^-DKrnEXKLH|HvjnsLxycp(U92d=J3trqZ)(7mwx*+FrS^4Ly0^1@4xPmiVRO1VPgB*M&%dU7-!?zdYR*g63Ae9TrWIAZIkjMUF8AEZ zC42H0gulL&e>v>;l?K*x$XW>)O8e?ca+N4kyP~iSNtF6?P3@L(Jwc z?1{J%dx^XA&!0gzK3%?)lTSahB$y=Iu(^p&+b7fB+OAV%BF@;maBEA5)zQgZ!oph> z*H&^YmQ@+6YHk#!vL>FK?FmR$-cG50Xf$>AP~l~Ta3j~Ux#THHALE>cda8e~2QU(p zQ4J+eF9eUvJ5;?ie>uT+Y%V1`j5BD@oDvFkth_Dx+PT`SM>~)+6LUsmx#sH*=^jB| zCzk2Wn_xE^&S5t<8!qb=lQP_mNL!X|5IC8x2wC*g6t$Z8v(;=}nAro%wKQq-G*_dA zk~3R*w^yH?7;vI!&5sbZm~EwQm6cNY?BgxeU)%OW@h!( z)**zBu`4lOTklqYv%CMtia&PUyq87K+Y-`G$uwC*H`8TVu1>}2T2o1O*HOERX&J{R z3!6;^u~oVPE^_qjQ*#s-+7*5z%U!G&<=8&ZUsf&D@;^CrCBH)to7apa6PrnwsbX(k z8{CvkdS3d$ZFR_3!8VTV_lQz9!gso~71Fq+{%CETwC47C_>T0vi8f)D8LmtxIeQgx zejdUYhSEhn?_TPyH;arHY8$ViPqDMC;#vF3U)xnF-eq?ONdpkS;e{N%yx^L&o;3vd z5`#(UVr7=jPv@t$8<`8kP%1mQSbLi&Pl$&6si!@uGpDz1-dNo{y-(-%{*tRhJ6D^| zh!$RN%lXZ63&9w9K$N-fdtH4v!T*zf?Z|K_Yi{_TK@9(9ooRN`EaDo@0zclFhtyKW zvokv+{_<)oz7YxK&o)RN*p_LsY2X5D#`*#6;H7w*>|I&?*SXl;IOG+rX$hER2A)}- z>vM$rY`5KO7;d$@?k^0A`*zY;PE7*~1u7^f!@Q8jSx8GC6rO4BN^*8{b?`^p^k_S= z1btb$w@YU{5x3UX8ONd19748?|#hqj>UPQnPVbHe|4we)Nl9lon~D(@FOJ$6Jkjx znZw&gNC9M7(*LGD!3bu-42BV0OeCy##U(qsKEKy??Y9NBW#!#MVH_S0@C2wd*MyLg z=VAGCTz<@PxN(?SluTbXZ~m_hl$tf66Z8Z?r`5+fjX`8pFiE{7;^mXBd+~9AHcaa2 zdpTk!6O($SKQ$%0d=0?v3wnj(>=F%kjL&E=}!z5$X{b^WTkgjEg| zz^cqN%@_p~^xiGikWBN!!@~|nd`5Jgt?%OoXCaPWqPF{NDR zgNs7tp>|NnrexK0Jz(Yl)&O=cf=j5JCyE2zXN;xXgvjHT3-KM$00G;8gd1(+!6x|N z0a%DbVQaV)KD3(2r35T$J;?YA`E_7LNEaz2;)6a|c^SK|I0xF!WD%h?>`DM*xG~Ws zG31(Jnw(MX6Xq%Ni;zSMBsF454@({asvt>^%*2vcl)!Tg1v#obh94V7mKQ}gfxoP* zVbH~HLL!xkA$=;kI)*8WCuFnDN*^L*e=ECv z5qX=qv5|jVd~q;0XrN_#iFj`0joOtV>xRVVkROj8c4SG;|8--eCiS{I<-^KK?fX6C zUweyrcMjd*-yHqm){{@0dba=af*kR@RpxVD9B^cx#;N}H<3npU6X@Cxciwi)GdT71 z!ZEuC`Xph|;nDHK2YLc>cD=f~&*$u_bD>FTbDuq0HCJSK%6hRo<*$Gy{51C!oVuJv zxLJ1>M0effBphbFjc!Gz`IZK}4{o0QFu!{$VWH^wow?u2w^WZ*82F_vO~n88{7s<0 zsq}Ep^aQ;vW-~vnIs{FRI#wr%Bl*%9<^&0@c{!f4x|Qh6UCSZ*f7xalJoEcnsh__3 z6vk{mN7!bHjULdNW<^PG$nxLa6P`UgOCU5e&mj^GO@kDy^g|vo%J8g3CUGYT->Jg-qfJpL)s{`vEyCD@Qqz>oPV&VxhE& zt-F$Llu@m-50s+HX(WzKlEDh+Y#rpU@U70p(f~fnd8QUhcQHFn-^|f}E1JI9cbnf& zJGbzN;f6nT4NVM0Y~#Rcv74UmU%A@HEsQwf)4fUT$fIykfu{bkz16ti_dICr<>^AJXuy46}ob)Sir>)M~1i*DJKANpq5F5d>q3yiKs+2ppj7SYw$PqJtHMa!C=v-pJ0?i*IjP5ud8a<;awr`83_go|%l zUun;>Vm(E;5z%5T=jg3L7Nmjmx2)nP&IBU;R4C6GFKql5BXwpG5ouaV>5adv^0wsb zZS%+U)_Ygo)>)^O^HIn)U2dt>CM(aVIoWY^Y39#FZz4r(iF|gdefY+oPH5kT8}li8 z?rqxbUmEnE7REW$Za(RK%Fxo(y6d;uWhlw#FbXU5J9q2d?`thQj)q1|&6y-F%)C;t z^eyXJ{&K6;acX~=DNt5&KWzSl)Bj3M=~@hgnI^CBkCv_+Zb4L3+@zpTT_$|7V<*@E z)QcBH#l*Gv5g^C#P2Zl{@4%YSC!{*7{ z+`*xd$(Ox@a09E7RO58MKnTa;#OHzWH@%8<_BezozLly!4+C|pF}`VDyJ5{!2d5;E ze&2@2fhB$4t5zqCl@+U0bP%WltPdzZ3upvKR{~(nlGkl*-Mx^f?&|T68$dx;jwHzF zOi60B6itKYS4rne))Va@{ykj)x)vFv$J}EGb7dZ38ilF^?X0K~k>E#5mF-$s&LC3Uxlb4;c~7NJm<^06S68BNNJIiwctl!J0u+IzydatsMo45(q5*hU z4d)2NV6v8@J;9bN%*D#-)mWDZ7=`9xp^3R%C@PW(>I5a+&VE^;APH;F@&pb6xB?i! z{IW_(YNXJsBbtG!FG`Z*D3T$9X3RlMGLInV1Sk>B7wK%d4$5qvvnZ?QePry zlj4|#DRto601Z?Sg9$Sme0!bUn$Zj9I+(4%6G-n7s_zZUhwMt~#1krNJ(CZ^)E^jP zBPUnLd{;*^HPcG109+m*`2T25VUVc+l!wT|GiHDK zyPjd6LRzEBxB)jR9-s4kEbDbUlegH#+J!PJ;H(CbzY)&DoL@HFG*?sdO! zdUb}~XfyBBJ8c72*Y|+qFM}KFb{;KT&Wd^5c=Pis0NTUO`Y1mAee?6B-Sw^gVr=IN>Kvx4)gf^<%}EC)XOkfBN&pvUgAJ-udxWx;=R6UGPQ12@lz`b5Hj~ z9a8@IH;B;V;IL<%?A_BXe;ghDuInmg>sTiUSH3i~d|CgJkw zgNAiakI#3xGEfleb$G+l@-J&C)|;B-x;Ea0h?c_WbP5tA$fGUR8#!ir(}D^HOHL)# zYtn>GbT6^|)|f}=OkYwc{9xc)EWLcemn*%b<%n-yZWdqm^Qm9rgHN)Hd4RJo-#@lC z#%3cU=Tad`u|j-VXih_FqfkbA*30=D?JriY8XCGPdN4Iqd1-T8?q#hx^r5)`u?~Gk zl<_)=hI;IMvOG_@)92bQh!f7NyGPUGVdOKA*I0|YgkS1^>qZP$I-x(4tQMfJ4BwDd zTpekAJZceSwvFi!P~%JW4K#5XxO&ad8`n2q>rx?l&?bVj&*P54+-iBth0SN@Y0pLF z?KbgfU^llf`(ye!T*m#f!l>#;_>a}! zp6uMo+BbLl94-y1Wrc%Od_Oy4x|y>bCPQySQt$Q04tq*0^t z6TFKiMhBIj_cEN3AlzrNILEf;`uhF5f4pIQoL2Bkk2AITfgV;!)6&xq-Ky-%GR^nz z`VDbM+rW{w`qo?ihCM$&=xtBSw9sBE*D}UdVpy%ugTNkQ7PbwuzZW?}N~#h(^!PO# zx$DVoqAn9nl6eV_Qa&xJd^=z3_xmNfUpnSqBiyM!RMR%%8b@tIuNCm>^;&MIPkt6H z&;$_%ziuLGThaoN)5+m?zXwvE?w#gf`R=Gv@oMj~HH-yx%PA)xV|O z{glP{u~G;hEe!Q8-TS>N&5D=Bv8w!%e%Y7(E9(bd+ir+~f+WIV*(?K-0lkbr5T7b8 z*IVg?ZwsZ_4UoyLwy!C8*O_TVKOx7yoR+zBzk}Y?TkBgEoX-cBKoH>>*$jRf5gCk6 zA2FgXbdHlE=HZEdXSx37(v8y5Qz9)`56KS}g=Oi_PH5J5!8I4&MIEs{_ZK1n=N^0P z8JE#@(O&mAq~Qb=X-Y-ja}Vmsz58{O*RK|v@s5rlpE2yn^A?+mOP7oy#4+9-`Vm4s^z-##m=? zrKf)`Q<$8zHLcBYl7dGA? ztWXAX?MRO1R;8GDql}e@I{#c-GZeZ}m`<5JfXSd#UM8<{pRsa({z3QeS148vYv=cO zS4MrW>N}UXyejwBbvNe?TJ@XeVzmB6|0&I+O=qMMk{j#ZfLfj%;F_2I@Helq{0#o!G*E?-5rS@pBMG^b3o#?HS)y}j)qSHXEjF^@{)G3miehgeD>iQ8pVkCc- zh7coWzr0Z-KG&o(u6MXQNgiNrKRM%uwl)6tJ?bPn4wAr9y+vf&{K^drC2TtZ(>)<$NzMi>mM~)xIb)tOgK;TMEkfWi8B>xBrvwfy z^RSzUL%^q*ccfF4>znmcev_H*L>~?pWbST1qGy&B+ps<^5*^RT+Ic!l=XzEWWBndH znr4%|eQ`E&b@oC0dWO=}jHq=)x&Hsf{TYBbcp|cY1rj^*_%&s$^0x<*66dIp+i~b()1gUzu$7-N?vITsTnzc-w1iKfA z#5ERmO$mWQT~n@RRh4VP1_1pZ8kP(bYT_v}4!6FH3I-p*)d8564hg_OGtnl2DqS)P zr|J|-ZF5v25mfi8$7!WYPx&VWBg?>6*^pGTOl~Php`HYBOTOq9tv^ zesHEM2Xb-+^^O=tqew=wi^8HIWk4xUkP!3gqM5R`VPFCZ0jn2?3v;9Ey-;QGOl1up z+Afqtstj$zi(-sv9&AL4 zAqBXJLXaH%vow8{db}VTjww}WY2_q>v#ZV9g zqBv!!U1S(K3yUdqL6Ph|WmSAhBvsj^kh@dr_CRnDfcC>0G@jMjq(Of)GKUEbWB|Yc zC?Wy$0hnF|8cB#-tJ5sh<4Kw*fqx}*fc^l80FoHkvVjKpSFa5}7r;wkHv%vSzSuws z0Qvy3diV(edI0S+Z+zpPDKLYZDhAx%TDe zt|->aN2h;{NBw;yo~2&<@Q{Zea|O~^eSELSmIEmtOn#mVD{jDia11_(<;kN92M6EG zbo_b@@4hlO=dFKHoy>7%+rA@<;%0U8zjgn9E-O6RdzM?{fo~fm7e*|7I`_>B4S&@F?}F7-(^)x=8+AQ6g*})myA9$($RRt=@~0=svy7xZB*B z%v+(4BR|P7uMR5BM7;J~m;8ynmY33pUX3>O?v8Xa)t&`B>__@qc-r1Ly~y-1d=b9s z!zGr5t*JCt9EH_*)_lPugS z^LT|nXt%?&CVNCC`(F-xgB0st@bAyzQ2hO^IPA8-K4ohdI`c2eI{(3e+dI%l?`gMa z{bms1imu9`T*1|cRt4VovZdl9p#@0#}R zmDSffj1(=kkAos=kW*}S&CQy0gqB^CJdJ3D5H)MhM2M1k8{|1*X8rOVt;-JD-+h|@ z!}&^v>02GSr#_ah3O8`+-hAkawm(bQ=KGd9<^6H<_9JJ#z!E6cwlJhqn-S^i*4FoV z@5z$4KV=lQ1#9my%e8CX+~5(yuxG=K&lTV#?Uf%5v@*sgiJ2A?h8s_>oZ+)rNa!ca zwS6L+zP%-<+}|Je&VTq&Ka2l5jJn%L2N!_!6m*$=*x*rmf?!c|WUK#(@CECnD7=!G zW;`zxgY^EYG-+0Sw#Zk@{VdHmc=zH+t1+i%-*k{Bcu|Yd+>T(sic|L#nSpFmcjBmg zR41i!0IxtJv~8qp1BCw)n=auV>}4dAdeZ(!g8s@lHd5b!q-!pDW4gYf#WI9A6US_^ zND)pKB@i)z&KIjvm=_i<$Z~Y%vRtu6 zFx;QCmAN>##3pIP>SgDP?CpNN>7D3$0v!4nysB5qf#se^rl+_#k0&#shDp^_H(pje zp3154@*Hnzn(S=Lb#b0#&_SaPWlX<-UT?gmj*U~b-`C*2gMR-HOAPV-a)<`1|rw5r8Nt6^$`jvW|*EG~>?5MGy2>5>@2%alC2Ef&;( z!d#3bG%v{&MRyEMGQvU%P>&A@j6qPJrwLgb63ZSmm3xFrI-8)Q8Jh31BI%0Pz2)|J zV5wnh3X7Qy$q4`=*kjo&014!TB*lmvfOaK5v?G)%4YesJqGgeUFfW{>zD*KJkl4V= zQz>UxgDMdU@8qHUo*1gk*;ABKnX?E3&38l`LFm~b&x;Pjg-UqQl7o>@H7E!1;T|p| z+3|>INeV;m92pZrmZM03Qam`wu1sdiZP0QSBVvNj0nDWwI7kt+4RbV`3w^tf`ByKJ)}r9!6*jQpJg!h?*xW02(>vl zrf_}!OkJlCtWpGyDbu-$+{n@XcJ9nT^_}3cH@+#(udYNN8!LHq$ocCr)QoR)EL^^p z$hv=y3__p7lIJs3$(?-MM1jjDgGBj&WGGgTxaW9&gmXInf2nBXR_V(>9r5; z+ijT>GQ)UIc@~Qm{5)j%OxrP{-NLcKb_Yr4vfAV&;|T!*+DY;1eAgJ1-l*8fyDJ3S zUz+^E(c9j(m8k6D?67&o3aB=O$SDmhV*CGzAQ5{ z%ViiA5wo;i#}ofJt{?8w{P%7B`0MlXvhxr6FIR~32QC<=vHmzWeTq}_>jHYViH=^r zh`mx`u#UnUy{<#p|4~V9IcFe57+aaM(FMK{HvSeXe!jVJfrO)r0*n`g;;3o*Z%;|n z&9o%VEOSp>Y1+(o`c|^OKrGI-;#IEJ@kzo+gLKj>^K(?cXS5UPnV3K;qUFB!FeQ6nS)cb3$*H&7^EtY+EQxKX zndt0v?G=h|vjjg*+%mDyzD*4`H^`$9^}Prfw1EYa)}oJ!TY)yh+np&UM&g>wBap+w zbbaJLVOzzy2ZNC$vGNmU0o;q33;r!E^yF*??_$5ed0$T zx?_8I{Fm`bEwOQv{F9TkB)D=QYg66XbjZ!K9`ejw>;R*lT)kq_%4%?Z1l%`(cdJ*B zCXc5#(ioE{<4I6Ac{qb>XR@kFeg6DJI(@>?8R~fp7kR21@2b!7)oUX5K=mmol`dUU zX|r?`Y&P6Ms`7G8J!n0=s}QZmtc4>6ZWLI5Yil43VG^E&6o$rt^rTaLkOs%icw*8R zq!(PP)>Mv~qck*dZIgyoOW8LDzgInju{EJ%RdsM4fpBRI>?SR3;7f&r2{cOTs0g^C zK(Yjv4@-40Npl>5d#JOmBbB4*>6K(fCt}fjca+da6L-VIh1L`{DT^C4$vHIwc_OC@SG5p*HjC6_IN4Z734nhHo4TC25%}{La#lE%Es5yu#W}$agIV9XcSv(RO9H&^o*;)X_trrb;T6c%p;wnEFV@ zKMkgJ%6JkV@{xTa@>qHDyar_qt)9mh#$o_rrsIh+a4N?pNZQ08 zX`g88=}G0Q)Bh+?ZLiBq+8z(fjiMAf8np(an}NqmsUsdGe0`2(F;B1@Ba0M`jfz2Oyw`vyj# z=B$BB2p-ITat|Oj0d5^QYe3l#Zz-HO@UFru3UQktZGuAw9$Uy*fG;B4I`GnhVhv8H zvHxJL3KM0uR=7+gRd-fRC>uvL62Jcg}fW;%?wH&G1Q_X1HNP zKjImcg*U6Eq?@k6Y(*fG>W{ItrVl6svI96bT78HEr`8|KF!Vg-{S$GWr`IQ!mg$<3 z_cfypn7DL{2>4#qH*ifO8P7@3dE;j?IYZ_%Wm%Q3i_h8DT!bo?KdJgk>O>&d)K3ZB zsKw?3SA?7~AzL5UjYcA`)TXqGmJ}0_#Vm4HR9WD7@u`!($XOVYDH0(OBaN9*yLZ)y z-sty3c(MrmVr$N5E zZ@$tKBW}GhBI)|SFFdlR@pJtqT+^TKM1O=?#Ax#}(`BS~!(So83&coMlKjr-8dhXm z(d&ErGXj4L?E2a^wLa;yx2(aU%}3wHz10|Btn$}ibl*u*wS=;;<=k|o=)F;7&HLV^ zT89!%g$>q2Xrwb+KHn+=_oW3z3t31x>?=L>wzhuHbY}xkq#?y=RGj5yU=~;y&1INen6|TRrmsa3 zF~iK;vb0jmVq zrW?kM#%7XwE0>-&qTypuQFdu1B@M0JCev4;oZF1B2K>HX>x@Wqm4|$?3-egJ{T1y$ zwI^}SM#xVm5tB}NR!}Vx)nM^0J+3SpGskV4xCLmx^e-}LI^gB|V#Ov5?nOgK$1TTf zJF1J4bacgA(~Z{U1n7)N4KNDh9b`PtA|TE<7>`U`bE;^%y%y@a*|X{Fk%fV_e&utK z`D`7$NJoH=Lq+Udq4r8=kISXg-IUl|+>?r2XXr6~9tZ)+A4IR&**<)eX`PTv-w=J_x^_fL9i>nj{Qo zWv5igu#*=L6eW@Q$ut=!hab-#e;}5>6vlhGQoV@MdIm9-t!|Oj(in+2V$~k{aG@|S zJ|WSEJWy6SP*^!!CWN_HvnNLoPpx4v`%46>no7v~R^;XtCD6v&#DZ8F+;t*a(!}$& zB*>F%E0!k-1_}f$g;+8u5XdY)$$no2_~-k=G9syV%kZk+Mr9Deh3U zh$q@aK*>(z3gn_Lb#;S;5jWAPn1DZWR<~5muT;KlfG%4}l2Fd^OjyHK)QMD2B+A_A zx;S=ST%1B6R6m!>IMM3j%DODhL{?4@M>tU~P`vCCGJ4b%m8!-%*dEkn)hgIQK!XJ< z45+<8k_)>AY#F(nK}hC-(N$Qi*_XhjTvc8J3l8|3)1k_tpjgG@LWTN2_h7lIwtTRJ zAMfR8@- zaj3dqHn-@*kUnnnTVij=^@|TPFBBf`uD^2T{>qC9>+XD9efsLQ`&Cm!9uLw9oL!5y)e&h@~l8TV>*Bi+1LeuN2sTn0{RZW z%SrnFnv!BbE7bY?$=$RRH|(pu`v9Q;JOW?^kQ7c{sRnkSHkq!DOHf}fRY$FU3x8mz zxUh*g29PxAUO49jS65cKm#1pEKm5TKy1Q!d314pw4DswGfVC4+jpK4MbcOomUyvOM zG5O$}2i#cAWQ-5=tB)O53o9l|i(wlETm&@zGkv`(Be0 z1}l~ZfVc-KtABh4@)$lAe!$F_$Gj?GSD*q^FM+zmQlV41qyssok)U@2ARBM zgs8MP0L}Zv1Ce|nS{OnC8HYSEPtIpGRHtiPgc?Qu9&$1suatF32@-H2*28vN$qj?k zU|gx86Zrffd;CE=Yz|iA9#FzNhegZqo(dCG5Qff+V#xQ93qve(Kmj-or+tEgLWXyu zwx~%yVyBu&QbLyFpi+wGNOGtku`jpBfZ0HjQ^%6fl4R*QlEge7{F145u+=LnE4c!$ z+@1&_!m{xsg^Di6M}oIN(jf+d0qhL0YlD*jjPx3*qe`>ngEv5_qJmQ)Xi;cm5kJ{E z6#S6#HB6b2rLI~XK*op_tHdJ$WfzfpBgX8X&?a-&}Xl|y1B7BFraX_ zQMCSgV&>toS?g11zjx+6ro z*f89-x@R4azHNT-#>dASYx9h)F|)L6L1N;c z6~|ICb4goHJ5f_}ayGE8mE=21N@wo8N8}uLJTd9e7wl8{{1Umccgoc~qkYVIby?hB z%_T=wt}B{ysQWH;Ogp;aOwEa72W~E7t#f|Zg8W{b-)`wk6H3$VhG|suQLMPdba}++ zJD=X4?Q2c%+u!1?dk|H+tMp=3TI|+(6L-5p^_}u3JuaMyf|(Zf-vVt&6Yd5 zomwCfd9Zu!if4aXvX{F~H$7tmO;;vfp6E0L8)@sW?SH@$u)r= z5Bra}WnGwQPPHKSSYH?ELvt%rKn ztmls&;*eAwY*T{nrN+do$n!mc*N{oVbmT~a!|%RE0*PCx*k~oz|3R&7E732G(xPRE zznba0vizLKOPtP_>M71hie^5ft}xv*ChX`7+bJ$E%tY>TL`3>@lLRS~$u|kr)XI!WN_7 zhH*R>V}4be`@7GrIu3+9Bx{aui=4r(gs&UN1fU6L!) z@W$mqs1rM9E|8ipHPh;gLX|J?&v=c|wf5mVNOtG9`W~1*JH|hdu*0*NbI+BH+okVf zP!7$XNkmsuyd}+r;~2el>-669?)e7BHVY9fLuWE2-AZ6xhyNPllhC$%Ie#c2*aP!4 zQ_m8;P|IYEawEEQ4O3EK82`5nu>(ZHvT!f zR7!g0+wL1V5e{D3k6M-`W6*Yx=Zi;^P3-7dpTGQWv?eNKr%{1V8jh$v)ssdv60=&Y zt%;c7;}3Upb~u&nlr7Ln(_cF9J#!|?88L-#POCL<6S{>u7|-IP_w2!3y2q8zj{Iam z?>?3399mZO5^L#Hn>i>L~JLgk~zjAd( zSYamie0AEKR%KgyLIGw%obA5hQ3#Wpyo`L-iIf{~>SAR%e@gfvHEzZqersG@#cgpU zq-Lz^fL?P7f&IU57z}DqOM+#u$cJ!i&t8yY)*PhwBqa^8IP6%AYcF3g5=Tuv$ON+i z6b|flbMHxk)Z}7S1_z{;___1_U?21HdfnJIiNT0MNFbODbN3wVmHskAtG91gdtt|a zul@y=y=*R+_`nu8xSpc!Y6bD-_~(zHqEs{JAiHGF^H4{uRi8Nx`pXCLNrmq2#LTS=)4cuA2ts zc=oagK(%`<<4h)OUz+u?z8XAwP^1Gk0R>Fv2OZ;(ex0~o4YmXznZXVQ(|bq;*cn(I z6tJ<@)UebsF%v)&U%NgAyIrkFv&q57J%9NNhJH-M`0HMn{*W}Sj*3>j?S*tw)w3?u zt8R641b}lI%fYyU4r8)S3`RG+D+Y2xl@z?+(d9h$>WIt zq5(!GwPC8FskAs|Ju8awGCBz~1RZT+a3nyInmp8|Ayo)-6_f{H@RK`}G^POl04V<@ zfUCvX&}fx_m+^zp5Lv1u01siOjHXLp6BPVnf-M#z+~n+N8kY+T1NaRf2~Do(lEe@R zj-hf2O;}kDXdG}Ln%c2gjPNy!Ehlin2EpZXCCoYugAJ(I9xRGrgssDeN^;|rZ9QNI zfYdpF??7`Y7bbuep(G~`AinC#1f`x`d5REB1>hP0D}vG)C9!b@i{ZqcND4#aztFHN z>^e!j0I)<*7Zl)7@=7lFF97_K1lZ6R6qba-RHpD1S$xP|;Kfq@!ymvj1`G@S*a7*1 zO&aDnFb6QN!PyA_8QA$?PXm3$$bg1>&;V!usBYoE0to>CVE~Z9A_zT00F%M=hr#~8 z!P6ql{R~|T`++l1OvB1Ho^8Z+z3$kYX*oNVl(0JX?#cH7MyTN00eqUn!=u%&o;h{w zQ|d&S1)r+0;yY}pX9^a@EjvieFxviV?ZA_)Iq%%=CVzO_cscxR%xYE5z_YBy&r0tE z^X%?kquwd_Gq+~&McU-^+KlWn@~dPux9*(ptDO7EyK*i4o5P}Cr?NI&DZAt7bm6|& zm$Do;*PvthUTSGaLweXJfjH#Vv;EshD=eMyEtYnGyB8k}dM??t9K>SKZAC??%d~`&f#R z?^9ooENEuW z;_ggae7`I$aCKeZgQfH1JDx4WZA{CISGcBSm_}hB3XRB+EH~D@DOt|4*1iptGr8{D z3#;MCw5Ka{tPVRb4a!-_FE2dVj;VFmG*taR6$e4rclC`3zwT5yP0; z8sPnzZ^hgH>G!$rS6IkqG1BZx3FHlkIzz7h-jLq7>xvt~x7noio;#)b#!L4nzYn_k zRvCt|acIOGiu>xT&((onuD^1*`j&nt`SX`$=9N^v)9=lFf4}}R_Lm)bxMnTS5D&?9 z=H}hF_L(*W+nolpEBmT+Rwif#oVmI+eZ+g0_b2v<&mq2cd%jxD#eo-VTobM5O6N zirCV=>3W84L?nhZ-M$+Kfh@MSc)qD8Zm;J4h`!aL9buZsA+9;NbxDt|)<=@%$AKyB z^5ZzwKwsJywm*w#>STvWBN9DF8hUgx`$#j6P9MFMXERM{;`;>*H#5vg!c1cVIj{9o z6z5D3>%k*>shGb3EJo5frCD?jCSz@Tdfmh2Lmlu_6Fx&S|wZ6>%BAj+3drE zGjyu56?y*Y2t8M^?x|Il{3g?aGo_?=gU%nfD4xBrF!y7HtlO7n;-5s-PKahUw@?1K z(Y$lPrwlCu622I3W_5@9!O-z_EQv%c@H;GCJ51kS^VZvP0+iCYHqV z9BrT3gzsJTvLd9VgD;}OO7|Y`*%Cf8%J}V5}$ZIoRn(IGW0-`E5ac zMfD$@&nI>CN`gpmDo<|NRJ%UZ&mDIUOnx_SPIf&Kdbk3tqOPo-yndB6xj*@N0Y4TD z^)+=3By#J+E_HjGEIvV9c@bQG&aT+WoZQL&_b*<&9_sB?nOpKaJfA%8j(2n}EE0Mw zB7mh3=IStqbKr2A`p;+TMEduFll|cHf89MeBv;7>$1}6wlm~Bxf=;gj#0TQK0Xs?0 z)W9b%dljrop?c`E`fVRP+c1<>-H+jcAAj3DR$B+%599ICBVRR634mz+(eJ^FuBmr} zrZln_2kty6PYSL!XBPq{oej-u_K<>I+vVsH0cHnfkC>JoDUT;X$`CZ=m`8?^{XByx z1Rn4)(RpA7l!^(OC{@kG0=q?)076coyQjXf*cnR%lN@;Wc#dRcLEWIU9e5PnJ-eU~ z0+f2-eVC}o6Y>VYp>Z%W(w<04jLd;44YN=q_TxFfejqi%;TUWhHQm{jXennzK(CIy zGZQGIn&)*;0!oPFBswz*kv3p)V1YLQh9ue9($>RM*aj?DB$yP0BO>8ToF-OP!|yYN zJlD<#3g{_vv?qcqFwwIMtcKtrOki_r+J?bjK~0xBVm)PTO*B3qd>WGR-bF-Q5S0RB z89Wr=dIT>bod1+`4plXf}ZenyV{1*#o5+%K)vwq*Z|-LZKP9K=h9c zgIz+CZ8SdN0=^o}2~O7><(iv2>3xS`x|bV8tf5{y9Z`X!SZr)~|K#AxEVn^HT;U2nLE(8l z)0(Ib%s|jsWthvwG^4zWCY$JPC(km+KYhHwUPF45M;Q{enYmFgMC18AQrSf;&K;ra zW_MkuL{WYyJU{K=(5K5nNAF7CT^`SLr{#KeF4wKDkJ6exUpR%^X|y@|^&GQvSyi8F zn#M!k30KK*?N?}CQT}?~&R3I6Rz!%?tC13)cIy}^tMkgWp7^U@>Tf>^OyuXRVW&@f zI7n$XkX85wSj~$QXHL6euN8OZD{a@;yUM{`8>>DPE=)JJ(XkU5I}PNe-Kkw8{Mv$A zGAySauVoM4CR2$m?bEjrX;%8nc71HcWP@!Y>P_qHrMv9?wT(`=xzkAbH+nPwP3AQY|eH*MBz$Z3G!z9QY)9s%wj6+mER)Ki)ZM&r2$skD;+mjTx95 z0iM%~)26vnFncXt3>qmv2zKnbCS8k8ZP8*GV*vp$Uc3i4P!R5a`)1Lt5!L7O$zctB zrALT9?``lr)xha*(|&yw>ziI2wydLQX)U73pY|J`RWk;fZg@;6x*;uo^ugS|HiKB) z$-HlOuD-qVec;UAR7OUM!?0QZ>pXumj|O6Z)?SDw(v@B$wwgsz=1u-YpoEA6YwKD3 z-$OBudH&OI2!!gdue)`HGnR14>Mg({P&&0s*@mIigRDQ;H{#Y^nG-R}O$fcXxv&rkN+>PlikJ7h7YAqD zb>C{uEwKI3@z5_>*Zx;RfJFdV%b1!LZE-c-(P}4dVLb)mS;@C{)puDIHC7 z7t!gNSzd}@Z9|Ix+>mGM_9W^P9BA1^Pv>mP9A54Dp)#GK;?6|K?{j2Y$ zA(i4I2jseLO?|g>8R@R6qfxsji1wz3t3zTi{A*3?9!kdRPx@naPX!MyUa+qI*HZgX zOzXh^Ve9R~nePAp|6RJAnGqvtgv8QF_BqR-`C21tFW`56ge!idY`*-|)|8#V8brgC%UXT0Ze!tzn`Acuu4ll3# zkP64~Q_+YpSjGO6UvC&7UOUksRDqi_>k^aBV5j`@_Y)xcx|z@zpuy3YnDJre=!#3% zp?%PIr9`-S$&kuVZ|1X~w{G=71@a#;J6jOu)L$y>OET|uuJ4{eU`pV9ruB&%M4-vI z-sx(jM1=grBfKzh6jc){Nmo^sc;dM0e{{D>385ygqGDwdzwu>{|k(uEZ8LBpL zG&S@8c!T~uaWMWskE|eBwm=VPx+7n20eF%v?vzk-(*Nu77gwoVWGgI0dNZP zsHg>>jSCMR%KHa19VvjB0LTg8Ao8k=Q9cqI0~kmP>KchP#BmYmm{P015FL%p6wCzRoGdK_Vu-x`vAncgk&;kSVJHq?)e7c<;tmE5Xp27-UI0)|BQV6i$XRBh8%i=w1x-lnDW}|fM+CCLP-0B{5VC8A_!%I zM5epBuc(O)&H%T|!PzpZGTc|vBx$0vYJyqf=`QJvSR5K7Y?27eS>P&Z!0`75h{s;Q zlPpmbFj^2$3YbCyTVxc$HBCMSPzJqyAixT`vVhMr(%hGwQU#2W<>Wv>GM3MZEgbCu zJV|Vg2M7n?0Bvs(xI5Ylj|IA;2y@mbVK%>}Jcyl}3}UZyUO~cRHT9-Mc6svLju@ar zfOjW}7bAfitOJ^i4XisN0GT+CE0c+9QmQ~1*UX$`W?TZ05deTN!{-Z)@StuH^eHN! zk|-jGv5Eq5$H2d}ha^d>0pU`BdIUgXAuXhyq%#*uHUQ+^C8{q-Xk{wJFdM5xX1I<4K zWKe_sb=WCXK*j_Fi1uU2Bq9N5HoYx1idQIb%4z|ePM~Q3&k$%^L@BNtKm!4)2>8qb zT@1W|fr}`RO~88?cr63iBk!J_xh$S1)rLV;oH*e5^E!y*90FKlWpaXIh<8KsoSG> zD=Hwt`H=sN${q83!t_WErukO&_LOa-PoKGe9Nb*8a(@Lwr=zxpyn31^NmpL8(e18e zZd3jS{=^H$WSe>5{4Ii0YT(yz@gt^`<`mYim!m6*r}m^KZbq}RZ%se4qIwFS1(;DF zOZTa@s9^A{vxc&fqjN|0g?{SL((K+Q)l_|S5*8-Fz2ec%t|BV6dzuJWx@6t?F8}BK z77=De7(m@K!XI}CQVt`JIUjEtCUxx^nOYo;*~`{456P7Uy?D4$%X$l&tr~#**}G<9 zEWlU&Z~P4269R41Kwwo^C)|i(7sxYRNF8jNhR%CUvdR=x85ceWAPEGw3uNfT*#UP8 z@QQKd_sm|n{uUKh2F4JNCnIPSJVbdpM`Wbu#b9SH+q+nPM~h@-Id&Wz_DVg7vrU^F84SSt@B(7skQYJ$3xW)Rfp7GC!-2AL!(s7 z5B$u=ztE%7GYk)H{m5|fc)cW| z&vf$Vi^CHkFVmE@gMbl8e}ToHB^$GtCE+G*>D^1_A5`uvi6}LrejrVp4R`YoGAdR% zS{JVuW9l|k{88JNnX2@&=k;>8>l@hdA1}RVqpG1Gk}dE+f#r3lxh`7El3;PI#dm?N zHOccf{9LlfGlr@D^oz}m#$@vUk2VjO_EbkwcUieCC=gKUWcO|Zyj>HQ2gw5s6KdL;mE-zcZxhV z0f6(yS=s)UB&k1TATt|4j2Yv-gN^>a?gYD$kRZU%n|;><(0nmg#A61AfI>V12F#Nd z(32t$4=)3D{-eiduUU<5Gs zq@X?$_*B7TtGY^I;Q*$NOqN2_2ckR}JY~g-2?qYqYQ-5I*hLhkj@wnhY9R%IpNMjR zsF@%a0%*+~D+Ejj(5}vP*8$-768jFRWWqp=Fn27l&wvpGp4()60%u18*#u=_XQkjv68dfs%Pp)(-sl!U)=2 zMg256sxLbM#1p`PsS0HRW*tz~!_9pyEWF9~1TNcRBDB1*ylDg&e*Kd>vRRBucEd$F zR|HT*J)}0TLeS+7mT~~r0lau=hY+BIWEGsgt%fC`IKbj5L3u}lxxy+GUZhL;Rh8Dh zK#}OP@8hyRf&nIE2i>OE3;Sj&xm>^v0-A_{uQ%DmcZSUYh#>%BaJ0Zz8re5RP$Ge| zpOpaE^kfE|2?$4k6x2v(w?)tlj1qv-U+qo?5TF`%1YjPuA7hP#CO1VSqb&%rV74}j z$>2j*K(7QG2B`w1FcLulj09jv2nSaNdJW(T zSnhpR-uEIk?p(3eQ^d%>5p-Rp#=WhITxGSP-7sk1Q*>%TW7YPhp7>m23bO@u zW#+?7DdTDii*4gKaEZTX$|ods4O zT6YtOn!YpYI?b);qhXiBGL`*9xKPh2tvO8{lOPOBRow-#oMd435$&66Hr1{7jYS5{ zfp{XslNd$2fc`?SdyL*BWN2@5);c5x5TLu;nzJ?AIIvvH_01Khh@C3hr`7tiS7aOO z)Vb%ZgWL~4wWi&E?`cDmVdLzz6n?XkIg^{u3Diy8SFkI#-`~-}-ndm`WiZ7&e}|EN zfHSr3$|omlx-mGaScr!_R)vx)b@!C0E-6^@oZ5^q6%ngEY(oSYjC3y{7lzp~C%^+Q zq*;&VX38*Fo~yVm@HO?y9&Y*(iz0ZH1F9#(WwQ)o}j)%Mt%;Z z4aeyCuDy9?cZljYeS}##zh_Ti#Lc5mkWiv~Bg~j#Jll8buro%Vm|-k*jJbF7Y`^)@ zkFQ)N>44YYjCN;?zNyU`KjjLd9M zkQHi97}ycWPhlol+ug3N0R<`GXqII`kZ<;tIy=bpbsH((g=CWa$v@pig$ps!vgD+N zh)D1t{u!U3*e^muKx>LThYeb`K=;YQ?8LyU9$9I5=z7w^KX<%r0exqa>}Uc&(3KSw zI;>tVFDe))Dg+HLm0KBs3k7H7IjO+eCx7`?eyu`kZaTRmP>~@!mOT6L(OR&UfgD3< zpmb_RUUh4xwq}OKT6o)~czvy{12x2oeP(J#DtM^q)B;s19M)_#7qoAI6$q3;Dn^WA zbaco*g9Yc|A42PG`KwNF@s<9E5Bj_q(&3M@NeS}Xx4_%5w7&-o9ck5{I5@~K4Gl`v z?7%y_BrOCuqp;RYOFJ@PmI@~Y;1tU%Y5=F$8Xqz+S?#cj*o zGco~~u@nbgQinJwL0Hrvj12@fDxe5Q5edL*HG{xJnfu0py5JIvC_@4upeo9UjqCwj z6&zS4B#c-M1I%8)Yc?0e1jlE|BsUI#az1u}OD@HTY;O&`RHh)xG1DOwb}}Sjy{R`c z1ealOIu_`Ck8mI#6~*YNJC*~A+Vv91t$Qr*GxndFm-_owY{C)ZDzfsv+yF5 z3y83Vk>2%=hJZ0UgT~DC2!UNp>`n&#_F`-D43{S&bqFJv!rB-Ba;^8#QS2jND*;<4 znB?7U426FV3<5A9zzzc>VX(A-(EtVq*h-X8iq!>}GZh2j&$$|yGRz=$>l+{*JP;JPAGkA}bi6F)# zxBaw|Q*OwvGr+Tj^&C3C>2a{0HV;p== zh5w#MYl7+~Z&)r-?Z{J!H$Wxc($KZ}OM3tJZ0(_Ue@{wtw9>C?G;w^D3lQ_$*bm}A zJgifP*TxMKhhdlQWSI@^xhgiCTxh6e{H1Rcf522qGs_A<0_ zS2dHwr7s~Sj)m(C^NS#1|0O@r2 zLTTha->T*etYZzn4Po4KeT#PC)@n_-EgL_gfx=!^D$P`D+qrKz`%VT~--66U8H%rL z@$eHbz80t&K1cQWDChktU{M!R0UDBV(R*VEta@#IysRc&M0(;JLi%dhKCkgKEP z4rudjnP+Y@Z2$SXQP{iU=5^Rn$rg-(s1C)^M={7U+KCSlufHDxnZ1t!>@iX>&)T=Bt!d$qk3$?xvNmL-VTz;O&Q9G;b}h%TbK=yh_yxX1WJbg=ab9YFIxS=R{TsY|(L=0id`M*6WNr@H($^ zPImHi2y96NhOD~6FttTVBS!GK$YetD!hn`c40au-Y4vcq4g;-!)*r64RNiK)_(+!e{W@8+2i`PKL5km z@@Bxy+eP6(kdTnWyRn1EHGeD#<)oK54JInrej}BxWkS}sNzx2P=!cQ2Gp`v)y^%Sh zLFu^Z(G*5RQvW9BXe!I3PXJZ!D79|@O*sW_iSzU)4iAMFdLSJ9+3Q(ILmC-cB|seT zhC6xLyPKOGmO?s++X~gp?!HgX)+o<;} zs(p2?)`~day&j@$EeFT^Jgw{AWXS)GZ2#L+20AXm@&tM&_gD}o*lbWk1_0-vm{L|# zE5E_}e7g=vgbPXZSDCDV(7>A~St*Vb07-GRaaeG&TPVITNef}fA2*#gx0J6p?dcFs z0E6-S_bL7gd^$+@b(ZlOqho4ZfQ}eE78`YB&6>Q}1kgd|<477PVAodg=1lS6VF}bj zP*?^si9k1ec#(H<6#W!rDvvrKyK+^| zu(nV{2mx3nnWf<6foE?4C(V)ox-5T>jm}nbr9%@xPh~9(DF!=ek6r*!7tnUu`3w}t z$h)5@-s)#(!RVcS*ff14;rHn?il;FcrfCTZP3hG$h4KFG?S+da;E6vCB&rb+c(n&+ zDaFcG55n9GpaOzA%?RMmk^)~oNCp5w5wvI}CC6^X&7p~)y9*R)0qgTzg#Z+EiI{_; zZhJ6cxbJs zQHq!}D@w$~gHp;ub5yiRLcJ-00Z1imCJzMiKBYCc|Tu2Tw-0Cep zLY*V|0yc{z&~C0ECWP40F6^j3RyD`s2!j%UzBp5qEw;d4tf~TmZUCJD)onF`DlahD zC4Jmu9Pl0i8qs{VdIMxjO?`}^NrGgsN$87X1NqdD(A(D`_N57HnV{;;-dGxtx@7EO3&K& z%mtmSHDNaPs1`THSU77;^eM*gPWCOK@{WF0Exk8)gGkNHZP1%CK3sgyeVpi+%d2xQ zZ#ZodM#uL}$L8uBzvniIkKgN)u?BXkkAIshf?2IsQd-R4@JR`K0>3Ycy6y4@-PB#W zs4oHhC!9&x1w`U;5BPy}UDYQI3x?3M;AX%WSe6j3tKP@;z(xtpJ)L3S zv|qYGU3Q3E;RNHqRDjbI>HN3Q;|vVhx8GB%bYA;$=CTyrmTY)lA4Nl>CVzxP(VfR5 zoC8(f>25eOcP2{;!hCRofCg2@SYTR7$mgxyn(NJGnpJij;dr2C>>bvBsAd&;85t5F;C5Sh_%YH3U>EV_^5~&!~siCjLcVWWJ2Z3z+N}cXb|- zKuUEDjXCKPb~ilLV5>QqXxMhi*Rzh9DvS*MZT5I3gn%<{fjP6NOoXd9#7)`RFkk72 z^30EJ?MSjQXXDmhrNq)d@7?KyWIo0E+JV`oSZ*%F8h&q%DM|^eEhYQxE6JhQk@Ij3^bm zR5V4~*)3)C4a(MKAG2qPi%%0d4X&DCEQG2=T=)rvB~Ezm-Vl$(Zp4*f+z@7hsct8? znbEuN_SEdTlbC(7@)|UhZsX~;?W6n6X6hUwR_v;u9Y%M{JayTv&#J#3rh%X^VOr^D z_8^t?%bUGE;f52uw)(~A6?mOuER5!h;radn*%dd2w7%m0o2eSElnz3101I;cL~1RW zT(*_^n|V^U%m_>Y8OaXRA%oeo5V9TgEBB;j`wMpQp2;EeS5b_d!1jBtk_Ga(JMe!^n~qac22^ z1teDdQC?A~$U_bF%*IA6Jnxm#kI5@9%iBPZ>Z!ExAK8%@5a0S;#$L!t2Gwfv-=I0M z2(U#IJ({((f7+D)Tt9%Jx3fzzN*=d?_>S}pOM2z9A_O%45%5aDw7l31Rww_cPqD9+|Jq_O7)X2ga%?Y$yE z{1&om=8k29IK9LcRmljX0Jm#JTGb4%N;2C78aQWUGliyvSbrAV5+%WsD%gs|Omz}9 zGmuirQ*3xO{Fs@B21Cb$xV&TuHCf1`i>Nxexlv$0%`u}a>=Vx{j+NLAtW~5w{M>Uk|c0G+k=+@~n`A0~a5U!~B$|Me_=I=qwp>*G_wiC^u+h!*Xzb8E?|)>EJV#-C+uL^2-!pr28F zur9Qk>UJ3%r*s0V3oqZvG}11&`1*dusPPB%n!s|gM|wu)?t4K(+Rc%D%FdcGldG2< zT<HBAknq#1_HghoTT0g!nC_|MHk0q&P`&_r zSVw{U%b|KWzePyj}+@&Tni-GH#(pV}S zEJ|Apu@$V>J-J=>cu{+PFt;?m1fCP)`^F|Ir-d$!|cCEJUB% z4df638O~UwNYZs24O6MA?aw(BZ5kIdgpNS*+~MqF(0FUquoww93ld~ zj#9@8++kYI$89G}y+D^2G`BlV5_+g;o7DmB?Mr`aYiFW<(zawz6^2ZA%ra}5;TTyw z#2a^@2cs7k#C3B%!ekpi4+}I@&a~Ck`4>m>KU$rl;TUWV*%XQ#$1o5wnRkyQWP%FI zqVj>e^}maYj`{e$deyTK;3HpYe%y+%-pWSCO0EF;(OrQ<06`KSJW*8ASjnqQVO8u1 z9E*y`SZNWp+8W4Y)&wGGbQtrZRJo9MSQ4a1A^=_llt7F%Hg&hR@u}1W74`9vk6>)X znh?NqKGc!Im;_=B$iemxPNuQs_9U<;jvPyHF;R3jEHu?C1_Matmaygdc_9|Wg}b+M z*V`@Jt_RT$`IWMTi>2UEz7QSlZf>_weN7&J1ms(1P>6-A3LOqu9~M}w0!vdxYXdOp zOD5zg$%=$TLfkYkbAoJU9!GJ1R-BChw-HEoU}H#1R;YHBylD`h1l&g8`vgx4MVxm~ zk<&;{mV!SBC`Lmf#oEx>2D;!uDFZl^NYE4#o(_5oK&(O7I3WxzGzFqqI4+l6Bg-rS zcL{J+0T+`< zI55+Gkq0Q%iXeuh1KeGJlqU`(i_7X2%@94zITxCAPzY)*sURVNA_D&@IE6?-7V}~P z@RQC}WP{=*x}*I}8!!%-=31k0;7;Qb11?Cyv>FiNV1U~R*S-sfBAA-{%97)NmlB+D zfO`UvPQXz}oSRS`&WZtlS&2we7F1wO#o-e`>H`EqZWD;0lNg+za?9et?FdC6%w_Vq z;W)YxLAW&vxI7~qL0xea7)s#uRm~0phZ!!$cdo3SM8FhyV}yB3Ar*%M{tIx%F$KQ| zM{xJ|u3++W!y{&5;u^xK;I>l{P6C&sfn;VB0bh~Jswk%`y6qL4z@H~La2kLe0PGCF zTmtq1pxA+(0jvt(xeZnb@KfMx3w)Zu!(3rY_>-yxx}U<00Dem0MgXiQ$p65eK*z&z z6>S4xIk?=y7&q|=JdO!#J%wEEUl=sCto_U)ru)z8kcGFYIQSO5r}^Bst(|SZKIYs{ zTX(4=#v8l*xz)~x_CTu>pIbR6%pY8Zxv(wXZ^W~-`d0Lt>j52hHlKUUw#CyP^~Dc& zFLSnvdf99BwdE;8kH2AC_rZDIQ$2d*?v7{JiogFNM2mmMD}R3$aP^1FUAtdxs9jdm z{2s2`{Uc{E6CYo$@NKW$${DM*KOFEvtq9|sErYa_t;3o)xzjFhXwN9M3Ryb+?sRR= zS&OSHZ@6$)G;478v%8_uv0HLqE;N!vS*em*&| zZqw&&(#@AD_LQLOoU_tbd&Y|2{uOZw{)xikmLBpR9yN0NCfb{amCpUxqT(H=oS}oa zpmGpfy@$zY*Ey<(`cKMb#7>(fg`zZ#@VZvSc0vFPV}hVkA!^ zDCypGB#Dl3V`!O_#8KQfA|P&BOM!1$gH&KIbkfqO-{Kss!-2waad@bgdrVjx)Vut1 zw+rk)+FI_r)atM5!o?7C?PZ(;=4H{h=g*uU7i`Ke4@oM8DH&yRKbIcpyc2o;?{EjP zYrGUsR<#JB4SVjh9azar^{F;1-i0|VP1)jp#F9+M!YRoautvL^_iK1X9 z85}5NI}YlZ^7}m%q2q-r%mDwTBs)&Lo-g#*o>gH%K)of?1HGBGG8Ao(GR<_A+P`FN zQ8Lh3=19HIX;%r2aBGdWH{3r6CF2k4>n=1vUL=VpdL{04W$8)=gmU8-=z#^Q@Ssz& zp)Dz*Bz;Sh#=hrBBqC6926yczl?wb1{P;UAvxZ4m*S|wOzq3@;(vH}s_EYHbB6OGC z#f&An{|I|`j0HUpgllxs$lD`V)iyY7Z@v=m$XmOP3SZhreC$%wI@O0C{ecdpe-5PW(Fc77V^&2RPlcf zPm~1*f@yL!HS6K^TR*#>FYvChT)ahhn}j`mg<|0i zP(LR5DIW$Wh>4l@p6LYo*zI~SO##761~^-dUDE(z5F0U_#G3x{b-JZ$MU{uQC?JTI>+XZSs0FY)|c5QkB@V^3<%MV7&$F&M>MUB z)HU8#Xzda*$rE?ECrr8*j+HYSX44`D=R`#!W;D&t$3=(ilkFW5NX9bB*1p!hrnV9G z?L~3c1abwNzaxS|*%~xa88=bIpF~sIBm!SA-?B)*$a#KU_I#=GGIw%Vr&T22TS#jFvPkL8Q$&@EED`}1QTn@oV4&} z@mbStk|9!GTZ^QlLX1@-R`4TOb|`6RToH=}X3gZJY&J4xHZnmmP{I?Yr)AUN^*UVNO;V@X#@}woCNfS_O?mA+NSA0T!6_x zhJ;DLKm!rM$%$gE-By;05(hmM!!NfgAEm9|Up#!?Y6+u$)#mdXRL2tjKefsy)&3LX zmlE}|Y@O5HoA3Tlt@8VS=&b`0Pj+7VaCo#+)u=|3|JTXne!u6>8vbvs^1i$izjb$1 zd^~^p#U%$ThjRMVr`J{g8(X+qge3W2BAJCYvHG7oG4AOl3J%;k?bp;WHTtLS!7x1X z*oTT|cZNT8m9FT!v)dK!DBbXodLHB!wmfW_{~>;@esXe|297|YlbgwxQj(2m(2qIXDx`+MRho-q&?OH#=gqce*Uf!Ndab)OYt+3=3XX4f^0kH*qro~9MsmZyL zqsL=#6%O(SdD5A)7y ztFT~8a1z?yJSX(^PemcezI-Y!=uZerqY<;AYStxdo0Zh-zl_1G8-?x}#KEBMu!Yp? zpD+H2EjZ?U(K~8oUOI+Q=W$@}+C3r$?A*H9wPk-L!lJ)iEs3oDQVCP7*3{dJzs@UL z$^%WmD)~ZjAx=Qd)Sw?*?D$es-y8k)rctg#9%|!Vrn|Oj3_smtUDttqIG>&!t7;W> z4|jxHE3Izrmk86;ZDbr+wMOZv`_d=oH(uO+S#)snzPNJpoBECB!(^zQgnD)Q?OF@gA7&0Nv2vfTn%kH|I|I4s3yc|FA6dF+W5C5+ZWy|Z_d0z zN(a5l0#JMEJ2tF6^z%&+WB-CdAk_82#vZkO9H<-R3KN>CnRV^oTIG<59lP6A^azD+ zsu8H3DD~OA#Z%wkF_o?7L_Uw7x2h^*_?V#|X@eW?vo>1Ke=IEKS;b1+03}#ihnP;L z<7l7>BN?NtYUk;^>1T;f74EMY{zY+F!(U2I~C|{6rI0i=-ley z^rbpRQ_(edMy(fSdfrZ6*N7^gf+3u#c&0XNm1TaM}GuWMd}*nKdfGSiX*RZ+G=%vJo#M@o*8R8y;08){cTrQGXE+8tb_ z7oRgpfnR(WbI1^eH3AVTN)Vv3WN(X+RFd^F z35{MX;lh^ip-MlWren_qEw@T_b37S_$AH{|Wy%)^7mIMM!*R>i6Q^7nUk)GFS>b6_ z24V|3FXK({X(mQCt~3$T@RQ1uo#*ztM#y#>{E7m(1>Fww5FA-cpR1|g!Cl_ef7*B- z*+5QtafZX@nLgX5tNZZ^@fGy>{-)O*B>(BNT-4Q6ZcE8mdKP2D<)=9%1}@4kh)vWtZ0Cy zk9ik2*HIkxcgyouCAy(xRXHw#13nBxV`M}_%aTdRnRBTY4ojWC9mhE8S28otPsq+o zA+3lsK17EehEB@PDt-xDvZPp|>1k^4x751pGStsIRV##<`On{XPG)qqpkIlUkIofS z@t#iDUnk);g5zGjUgy_AThYe^X*0!f@Fh6Cj+0Xon1~NO`pf&xN6k+}s1pPh8OJO> ze9}{gaWWDDb7I1h0{y$%ij+{j6z-P$p|rwqDycqy`N^<@#yU5b@-U?NNGaq(hq_@j4|ZfSjtpmxLo`q!#dS+EoVw_%4GOd4}#silHJyq%h=qI zl{c4Lg=1ISv!4Z>dLER0DLdy?)v2DK(+}vUU(ipzEMdPEpEe3(zhT-@jMo9KL_x=q7sL_3X^2ocB>BH!O-+4(yz)lDwy!0*6vg&bi#ul7cTK z=c`K3?<&pxQi|#??wBdwtY1<#TXO1iDQj0LvaSr?TylL^Nl_x5lT&i*Y3Ut@bGH*q zs^`lp9DI5GSWqIyds~)xy{z~i<9uCCIr~X@Lx0JmRldznv8|;CuI?{y>`(06Rs62B zym%A+rM~a$MTbM@i%TaPN)Ggw*F3%O)uFggHIaLrKCJ3Hy6VvB&*gc)F5aInnVT>D z=S#U#ei?h$`RM~^LGIm_dA7&v{M4?*9Z$;;hcBX~7d6UChQ82uTELSrd2c>45MKOr zpTt8?RJm7zie79g5+_#3o|Zy$%ghGKnEsvR$jq_L2S6x1qbahYCwczU&XWw3Gd!k{(hl9kPln=4t zUzu$4HbPkEUBb$V=|El*A_8*KE_id$_CWb6+zXNN!3+l z)zyvFH3QYP((2~@N(MrN6I1D3o8~kX?k0ip2W~u+-Vhknv^dtZ1=rXktB_MdWiKXl z^tN9(Q>pS5q}}mmPw>s&q?>(ZHwPM1aRTM7RJ2EjAB_)jf*|&Ck&&F*d46%2bd`(2 zZ~m8PrC&_s9($-Q#9uDau!blfAwnmTG>gef7UU&9&uRm>O3_Sc<;OaQETk!awfkF* zVjG%;>yoq+$j4`4+88A{Cw|maDKX3RGgY(rt;Q4R?I!Ru2mRLvpx<%g57re= zt+%va_VStLJ1Tm^@bwREn&ENU;lMn(X^8)f>ZI-b8M2zpuzr^t6=%M#Y_)t z(h>&yaeHCfyN{Z=`Hw;tK`x1i7?Bje^ssg@AU*S-n)!${=bw3e;NgA=pgV}rEfT~I zA-XtB+uGG=G6uPYgE&D%{185y{moqD#4ku-sS;(pfamu#srcm?CmaKJC~2IEaDc!P zgy=PR&CYi(UKT!*Gd0Cb7+#2sZn$Z^@QS$XwXO4OyG6g6JseFu6Sjlq6LmOUj)!j| zB0{-PZ{e$TCwsgv^!PmJ@qOPj_!jBSg?`fu(Sv;~co4_$6&wZ@6=B z#Gc;Blf6+FdZQooGGZI{5<(InaL#!@Ia6ti5aP*4lA_yMcOuqMq44ABtBHu@ z(^YDvZOzxNBtKBX;sw2J$fLxo+0Oa75BeS|!?)1Dmn8hCBqPwWZSNfTJNaQHh!A0= zYe;gzX=LR|c=ECVw~*vu4x;vg9~Sbi`de%Lp?9~Iy}Qq#w>>!duCMT&VA&aS8m#4H z#>3O^8oy;4K_JhZlmFv4_%>qjv7Y8j=l3l;-#=PBl>F}7+pa_Jds*)v>kWC520xq} zdbN6}=l$U0g~7J0Axh0q_sPMQjUPN>K1`kd(0uJfh4au?=MUd548c-9i1vtno)j%y z5DhL%9y%?WSP%&qdcztn!;|mdOHRI@c20)4yhC*l%QcdhquXSwN6;6CF%O47y&s;x zDf+!^WVOr4qn#r+R*$}k7()0DKiWTRkvFUal&%Y-*76TTBayp{$SCC_{^CdM!%@r7 zVS@ihyU7#lyWiRS`#C=RNSZw1;xf9*=%azl$KcS9rrjUSFET#8uK(10?R`|rsDH{Z zAVcU1KaER11?I6T@3*c*kKMj7c33{zyzG;+%O{X<@mU=F>@bAzdjB?D{^m~bK>tVN zG0__a`tu<)%#T>r9|$J)jpDpdQ}&1*>@fR~S zJMhpDj^<4x#^|kwUwO3%&H{5f4)Hfpsp(>sCHm{vx0>nC{jNQSMRMT0=zee6iPy18 zYa|FF#Qzf>nkIoc(7yD#ykF+0JQ#c8eVe919D)o29Na6O!rqzC@3Sf2=PrJiKKw2l z`Yw;9Px~utGhv2Y=-m`Q9|-&aRcRkp8KCPh%cqKwGplWks$GBB{q#QO_;K5q=o5R*nsevQl@--USDH`Us@q`i0^|z1g_YFVexd1~wkI#+7Pl^&(feV@N}wQlg;@SC^&vT~kS%=!z|1I}&MJEI@GERhAV> zB6&q=B8(T6J6UhUV$wrGV%PWB*<(Ukg8-E(;faN_eUi$!lG+A&6g`*231#5{^T2w& zkpGZ(w^qn0ij#PigPfx{vq~sxvJSNu8M5uxTSyofZva0Rww1)_ilZ7!~{M&-v)kIu@%-T^zeVl7N1U8@w~N~@85}B6(Aq}$G5Tm z%fGUPbnoZmNaxM{?;7uZd)J_#Eu5&nxLlwPTfDrHRXFrVwMdrSKl1zvgAs%MtgN?g zJv!=btcQlg-jDaMY>`;;siJW6iH8d<_R&3tBJ!h@1^Cct!-p4-9xX0vcn-tVS5TM; zrYvmZUj}45G0o_haDS_&%Ab(RQ>U!jhx>sckFpNqibwPR z$QIjAQ(3CZu=9o`HxCt^NwdP@TVa-MtM(V#cHxFu(*S8$_D8l@aqf8!Bqv13JUe~k=>uu3&bRxjwG6jky zcE-@|g>qUDTbO`zqdDh8Z44wp9xqEY+&y@2ruX2Q#LpIPP`G(va~ed8LM5wP>%=hP znvoQ|K*g+t90}FBdF6$JG%#7)?SPHi`~NKRHdK)vQVCTR%hHq2R-0~Ka=Sw3>yN3; z)h?gEC7Q^XS>&}*L^l=nlXa`0S|j=J#*T)=y+UPC6I}{@iho3U&+BG2+{~~g75g18_trl zU_=2EiV{Llg`kSkg5d_^S5{%Wa}QM|8Y%m8AxIW8Nwv;MxM+{BpE&wG+uJvMcl{2u z8HMTbY3bJAuT0kdvf(L1acOr8i5XY~8MY|6B%k~23Q>zg5D6lvw)Z2oo@R4Rwg_=O z%1tE!e|)K72WEODD`wSYcuQ;8rcP+4t}aA%qXiS%$$!K!>A}M`)SI*;4j3%+SMwp= zxHy#EvB4|}$QCtfPhxEwEZlGA2HL&)jb}Qh)}*4KK^JkVL1*O)-wmN%mmrb=ZMcbK z`8Etq)sR?a-;0ImkdzU4Doj^YYnVvdsM91)t1tQFpb_}gA%vL;`nBXgV z&0gy&MvICX2Vp7qfFUh5sw2P~EoJk$A}u#ViExppR~`m6=93#!elj&wtWX{k8&`Tf z6=pj2SbWMR>pY=AeY_|TXjNqJAT>j3wwh62NYg*8?@G8!bAG6!f*aX?KU&^eV&Z3x z2!d?>ts0%4c7q8qeTq#ChbU{+JT(XrG8qOmQI#r03xQ>(8uSPtPUk9Bi2@cvB&ag7 zPwTgiw@T%ap-%iB^4oo>7y=&kxS&{Td1vq4#wF%j7pg`HYFg|aYn>BtZiE+y5uAdl zB4`3r9R|4{&zo7kNree44yi_D<;wUPnrh`PnAu0hmF76VPh#4*zS!f8zg zR6Oj>1Tz3Bgqh2FfHuOw~dBzSCQ;xn$JbGx*iev1C)o z75lerTD=-lu@;G3F~+H-Z*vd$!Lq%S%eytQ{9v{YYN0%+R??Duw3T4h5stXm}NvjhjZSx(PI4n{&eHuE-QY`qDv> znt^>YOeks92%^DNB>gZ**wrojzSuwYtIOR<$p2Jy>pso~e-utr(rq$65(<``?YZiy`smd5hgHwgq-(U<|3QTXw(WL( z@xA^Kmb_<*x95e;wtgMt3WTjcg)#dp0y-1%c01JT?arWHEiG!G1_wf5LGN94ayV+I(j|9{KaKNf1t-# z8hw|aRyU0T3$96HPx$999VZzZ$#WOei4gpS7J|j($=o1nZ1#Q za3sSw<4^6$(cUV7F2_St_?|vobTPDNwJRg2$#XmoK@qit#`*0|MBDITdU23_z4v&R z(Iyh8vg8oGs&HKxVtE|GU)0XCLHlE#>|&nW_H?Hm9%|S1%Dar%M1~(cdXCP4d&hM$s$%qe zS~_PNhWby+yMpz*S_iudr@A^x z&wB{^y@t=9l|LVtKy)NO@0xg?Rrh??s^_D=-5FusK{?&yGTcP+xk*{~X{{GK9A3=C z;ATV4&6U4k)x8Mpe<3H}AkODt3}+!T;QyiO%%h=h{J%XbV;f^%(@@z$LrAiWC1f2- zQluf3qztJfHDk%XjFOQgBvE3NB!+wJJ7cLNX{;eJ_K9JhPxtTpe4pQQPRG&c9H+mG z>vO%Y7sKT?1Mypmf6pVq?~I6L22Q45^sJQlPKM;&{_E-ejvxEw_ed#x&p_`P2+|&~ zKRuxQT~f6!L%nX`O8A1FK_fPiApRh8Yecy=t^*jXN zl}-BRV;?^UUKPLg<{@Fv7fbCgM^AsbsVN?2{4l)k3%37@&L5~0E1V=Gsf6K?VsyHf zv|5pS<5DE%K^+AVkJ!w{2l8Lf2E#IwJ8T~7N}<8wrC&W1k-KQHB>_B>`N*#UZivQ= z6yBAXA;5g|ph|d2&&!hDba1&bN>Bcq_3}3#w+>#6cJ7-DZ#-0r%4>t_^5#(Xu4u|i zcnjXKB7k?O2hN>9I#YR%(!rK^BxU@#7FNm;c9aYaN5O^uJklHIaUp>AlA-H(VT$tu zgsG@w{rFxy?1D!7B@G9qJYG8%lG1OeZYmVTt%tRwCti>_T=G_r0=}SX#8;^xQE!t; zkC&u~oKQ97MJ~{E_32M3p4M97JlCBQnQn`e-?M5mV#2?_!1VEt)!7){U^*C!1+7vk zRA5?Gp1TRdLgmpAg zZ!LTLQiK>A4LOtt!RA3v66(E+rd_i>4uZd$EQa={W?YUX-Pfc`FY`V%Axl<|(QPrEQ zH_o147SCp0F`%ZCri8uek#J#UuVI!?bAp7Y+a_-ZT;DWPtH|r?+(-B!GRwmE>*^&& z{_!;BvmEUPmfn``9#JuJC6S% z?Q6&hneBh!^wRsg;h>@2$WHaxo*>$u(4pHZ=f*g<*XAx9OsKF(31@rpX`uH0*uBg7 zv%b`(mfA~!vc*_Mf9B;_SeTd_!EA*CC7U6RsS{|3gOx0E!NY>x4IsTWGEouY<`LN_ zY^S>n^zHplBuG$aaV>%t@*-BUS1OlVMNfx{wDDiqpKgtg77uA(35`f^2j8^}IidU{ zbU=6Cvr(rLYOgC-Y&H54b?n&1Q!93uCh>Pgnr-|0><$mQU3buzQGeGn$B4P^X!t91 z#o<`=!^2J{+iQcCM%>Y>PG&>_y)_1R2XcH(*IeqxnzPMIS6!gi^kU7${_ugTE)Ht% zDqV3F62O6}wcdiOtLw=dCyQ+_NMPK~J-Xq3=0eE(&y~I{H%@uqc{=NUu5Cci!#C-> zgva?hS^d)&pGZiYzVz&j{+WQ+XT{H4iO$ydyjJ@{%rofrh`v`y*N&*ybv~l_a$D%P z8&dY6KOSB7y8Y|DRBPDM)dcUm+v{H%Be?7F=OP944f-Y1jIxxYq;9gumBeDR#&4)p zu_v}6tp)|LM>g2!hjn>mniH+{|4jX`wEB~mdg|t%3oZv@k3P@5RQ2a#g`4+d(9I0I z)TO-WDm(cD3gTx9_|n|N=iVClZ4vVepJj#za9`#WoypgAqyG*ltL;rdUUv)Y`$Y`J z`6N8+aKCdkZI*3z-(<*pJV|)q;`TL~nk=xsHG{h&bkwii7jCkm&tb(5CHUMwaFfZ@ zE9*My3r42qL4&)sPgy7ICwXA`+RIzpgx(2P8(kk-mW&gYm7IN^!zeL%nR7H`<}mQY zxAnx`TV-wOSO}6aPTClLnOi5XX2k28AQ5(JcdjQT%ZXPl{?vAu+6+SxCgF|wxgFd{ zNliGUCkyA~?ro&UYGH!lpS!;ChoWNP^hlvuCVrTb9}UJ(mL9_p5|IdA0}ZC2p})d> zZ*ZzaJQgO}ZcR~7JaiP5WzA>ftk%->M6S0YR%OD1LhpheCB{sPJ+qQDL&k6(J*cjs4}TrqDaehCjH$10DJp(N zEGYR9rFv*bW&iJ%{*rPUlQ~^Xig{pV^Ojm4sH~x{W0akpv&CA@%%nU>&6%D3y*%0UK4Y_wo{UNqhbK-dguHFb{25x(y}rByS26X?c2(w z`PIe61;&@J$ITroJ~X(f>;CTPonKtoCVm~+y>oq+y*)BHS<~3PvAHqJoY}(LZ5gM1dPw@Z z0fuyJar3oQj}4blMol*}bHBHx+d^|j4$^*cKF>`&o>dR5YQ?k!ELj6rSl=$muS@W?Of4d8 zjkb3)X}HuFf*YxOV|YxKlry5+*_>5bKb+G}%2}*TZtu>^q?@GfA2S--2=L!+c?zB}r695dyL#mE*hJ38nRgHi6jE zc9tPdnpGTAIzR&yHXHlEze;p(C99fYVl)(+S!f`xo0~~C42+m^@yfY~9%vqBEH?3B)IR|E`Mu^~KerE7zeGV6OQNsyKR73r{#PELgzFw&{KB zWV>FqLND#(>QBb=RSq-ihyV%`W%mQ=8vXbN{DwUDr{lk>Sbos#cTe+;y1B_aLwS={ zQBi!XS@OTk6%+zLX9lUJ=c4#7OEIIM{h0eaN7xN9;%x2lxUfB#;_<(QTSe+!Gd%NH>9y83Vht$RN?EsaHTxp z*>i|4YM+@)KspxKEcjOy`#3^IQ<+gP^S>v8rrCKj*+5|fi$VsXlm$cyC=r6<#L36r zX8dk4#yHp!Kkqy9A5X>ePA913-`+Z%`T#~;-&Yc^xyR6tr1&}XvnWU$1%@iM=e3yg zb?1+onu3^)vYJCN#T05QSN&Hh-uM+sp!%(~3WBzw-cbIz;!+++WctrMwmcxNI58TS z35lm`s;fq{DScD5w{W*oBRqRfh~kplu^OUgz9#6AtoFV?bJe+`o5S;WrV z8`U$f50&xTPyrpK+p^<99s@F3CK!h&)LvQ+cl`1BU6av(kmE6!U(xh&6w zLlMpHRc0+C6_K)LX0c<%;|>3-QgePjF0OZAxW_>V7(x?a8h*7dL6=#K~13T?v9owKk09>#sX2@|88Lh_QVO~b~|3-9(#qzFvG5C;eZ4qCu~ z`qFlqj;Dhm@n)$Y@lfwxIkuR~K?1!&mL*5R*k(s{ZB8waV=ehdmQ%wv!+6M#=lvUdx*Q!XWHcXJdfvB+u;jmN|9{kQomI;><&+;s^BF}7 zA+tz)v%wZ%SlPpvq)U6}*X8bHS|Glkx9}brQVzjl_FL0soGR++jF@3FTn>O9Ai`Qh3NR}swXuh>Q(BPY3g6k(3o zXFv2Ab?D{9cfnUrTrLO$L3Op>fH}OpfhUl42zn;H;$Q{BIt_|L`^de)!eQpm!bX|3 z%sOzUs@>R1_6PmU8)_Hd-~MoyNMI7y!*Zo*C4&QtZV%8NAm`I|!r-Y}58nc(VXlP2 zsjFy#YZVi}*Y9M%bc@v$Vp^DM6D^GI; z{g09j!G|)Kz;-NlG7kG~V zA0*!_*t_W`5}VmdLRRKY`cB??BUPlhUtZ))R<$DdJ%SP4$eUqUr*tqZ@YSbW=grFc zI=J+!`wv6BTW8w$5fjWHidaeG3FdUC(0-ek>}OdmOykbLRA>b5HD~@56dEXaNZ9$g|uB4(WEbX+jGZIv`sfR>G+8hAp>!(#vU;{L6TQZths_l{r8pbCc7i|QWfeJy= z<3erEsUH)Nm|BJ6epSi@F0$u6DH4Q`YS1O0yRgfn%TTTukVlJykvs|=~r*r(?E zW5w;!ereg`sCk_q2Fl=jo1sAlN6hY7z#xi+suca7YBvN*X#0k92F!m9 zn}#jkk0bI$`aQmnuu5UM^K%B~P92EW)(koRMl2O7fOe0E;X58)xP->AK{4BRs3MoWRV=d4nD5VIoBLdA1oV$j75WClO~bba&=Q>~%LARgrt;M-{QQZ`2TU z2?P_ODky(M0}EWY=pfxCcDIK6cCAY1qJ%-0z=z83a-%GDr#*f?*n64;sV$b6IWJ@r z=Gc9J_F@{tcH`j>Y&VybYbmy}wD|ku7&M_nSze7L zOdR}z(xmbj=HHdAj+D?2bDOHE<_lM=bi_-Oo z*0)gr3ND9K@9lAcz?fmP&SK{NVn;k;tcC-R`aA3ki?JV$ab(9Rq{m2C#^5~eyNBKP zXxG_mb9fjAG0M6RXraCyVU}17)^0T%bdlijan&G?xSL^dkybMM z1~jh3e;5zeNC8v2!*yjppctAxU;*a<4F?R8fP(I_DA)-AEE<+;gLo&Y_YD1#6bB$6 zEMz|(FmsTU@^h-DavE2_uw%j?E|sTgC~=wrvBQH;fOyyO+S?ck26gNhy0$9tPSt5F z5<>-e9>k8W^-fypCguYc1FN(`{=p(C&Z!7fV&V1&3>ImDg6>B_4dh5K;-xgnFl`jP zU0vP+1OuUEVj0AR&zfFX2J04cumvBgRh{Hra>S; z1^dG7lDEKqxLci|N#!Nr>&BDheCcX3!-)he1Oux7l_dAZ4&u6;NEN7FPm&`}p?UUW z5!5W0B&%xYj+`$DE{Wr%8c+lB>UoXi)~Uk3Sx6y!h_HOad+i2^hz6O`22uM4NlqeC zumNo(D{s_T=FzC4A*Z&`pgh``x7@ftxj|c_Dc7v&U|^F$a-))9ld*=Z;b@|UeDh&W zlOCtRDyPYY)?`a-&e3iz1@@kC@+}Vb%|>1=?xPJSBAU)DNW0Jy-8e1jBCW3sTKzcE z7jqK*b6Qg>T8oEUuhFCl5s4v2ZTFnpio)8$x~0Os5+g?2ZY;MIO1DQDNyQi?#&RRt zgVWm!s@sz}lBx2EWciM(+8ucw9hvr$S)7DyT8D3cM=rY~Pf)UeIGRxC)#)AFnUmG| zs#~IzmQcp&JR{PTZO~PjEK!w{P@U7|UeT3>s9k5a)N4pi;e_|o>05RXj%RmJaCe7b z(zac9FGqq=+Fiy*lCZFKT+g+99!(J9&#y!W7Oyt8XRKS|E(&^rRbSf9^G{OmT&ctq zsdoBx!ZAC@d4@{OYG6-S5>F_KHsyuHl3}ag`n;X%oXN1Opt|QC$b|>66ZpDUo)jO1 zvW&RYj_@B$y*8+Svpb>L4&sdFxq6I32-T7m)6?YX@%&JQfJcB}a5?C4bCNQ}XIWER zB6E8PW)HbcB389)jfp~|7)V%>Fa^aBH5Da0P)V%XDV~sO8<{nfgav>aeSp^mTa97P z%b~Swm0n*B%CflDF@ZN0uZIQ-4KA8A3sbnqwM-EQ6#S45N!xoUV2+*)Y%(R;oMN`7 zA`bnU!k{=akIH1OYI>{PJ2p^o(&gTKaqj%9`uWna`Lf-4D)Lt#DSY>P!a~8xD^!?n z9)Q}BfBB`U^yC;=IFHxhwf_6Xfnx$7K0Mr*0p$Y;Q-ZCvOo{T(Kg`XEiNx{TX}7X}33syG=3K zQdHpO&dr*|L6=k~iNDJKg_I3sgdgD@bZ-X1oc};5wXsvF znP7oD7Pw?CEH#L+6t&Y$KZ=F}Pj;tj4#LHYC3T_+3lg#)*VfG7P zO%U7GX8%Js(F(UuGfaXe9m5aDIRcQr_~ z(RC}&6=OkkK@ES5+b}gR>&77e-qKm~X#Lpsd=KpBfXdt5Yiar4P#=y>zhB1{=+LhG6i<;R(7Kbu0Vk*5%^o07nd`cCA-ewD-dq23?FpbK{J+B3Ux!iuufurr=AD6oFNd`a z#ut9y(9qnesof!`W`+>9-@Ja3{cPumW=aZ~U}MjL!Wl)SJF?PF2M*TPcX0Z8hOZHJ zLV|W&&XhUgh{ULv{pea6t)QT2Vq*H!=V3K9jkqJaZ!4;{h;ws2y`P(!I=2f8eARV0 zP0d@GxqpWHV`JmGySo>gn#aa|6j)j|H4MFqP3Gi09!O1|ot^ttQoHaxrl zzP30rwP9;Nzw&1{oH!4-iSujoz$+u8#Ep@u(Gjemy2iph(6eMSCWifhkfs7QloV4c zt`V4=JltKGW5n39wFwNvnT(RQhMBK=D>rZimM+dfA?z)!J2A1^KoFx4?&al=&Iy!n zUmK=YSDGlavqss4H2Ri1o>o>#zL!iUM5^FSIFsJHv5R8rdl^7TrmDJh@fxS~sULkbMh{(t+rsif&%)to^kefoaBjF^W}H08In_G71nl0JZ^GZuedU0N1Lj zDgny2Wo1dpmr^l7=sqql>UpB~e-AM)+vea_j{=iWul_%})|f1Nvh?da|H1znjWyrR zK9rrU30a;0{$Hc9`>mE#SiH!W1OK6GcDeQ+bz1iv)rlUa9leh10_d88!@owO^NL50 ztmXU{>iPenYvmiwv!Aan5v!Jd(4z&2IYBu?!A%b@O+9E@|3^$^zm2Nd(;C?H@VhHN zdheDvM7q=_aZQIK^43J*1F!e?)z@urvNThZ(#>JKQ_Ho{OhqenI1I#tz~6&O`ZFUt zTF4Ee9M(ff$hhLH+(q;nYEL*EjcF9%2^}66*oP*2^FbrYO-NBiz<|`nM~%EfjnWp5Ckk#p$AUt_VDjRAkEe~S zrBMZB$m4k548P3FGmj5^(oGHK2_~EI*e7Dohv`=&CIqlq&}kukNo!VLGVwCo=emX;vxA`~=+Iqp}2|14^Kizr2~%y^Vw)CMBITr+;DZnF$UuUDdHHSmbMDOq?6 zmALfM?ZVgFYWMO**PaGb5onYoPdGRPyms_*Dn+uv+=T=vUe%aq$j*5+l+i)cg|lyjQ1)dWg6AZ9PLsB!dU3A?6@Uu|=APt*bsJI-f`V|DyrB+UqVxb`X51v3B zqhAs@kLc%4Q^;Gooea1_*&rEQiUq?%e?7iHJwF`EE9||#oJ}0=R(4sbfJ}9?-$wC) zl%8UHBQ#cc{)A0!@P9V8b8(4lZJ3&vc+nJL-~-S1n^1iw&4tV!uTXaFwiY~t0!4K1 z-}{zEf0zg@k=DgT@_V`RD7>Qob7C4=Y+(jGS_gMWzSABwJjsV7!Gz{5fOm|OrZb9K zk+X?fdp{M~Un1JNW)KFSU=lA|G|NCk3?upC7D|xl4#&MNIy_1?4dYWX)vG6+A8dAC z5?i8}I_iwy0Z(H&p|)bm%oPaCYtU5x5eS3{p&S8$_>CmM@7))md|nW71C*7BjnLJi zku<0c2rP=HgCObqe!~iiJwIl6={c18N*#OfB>W+nC{v=is*fR|R27M)2VV7$9PN;t zS|Zo_1sG50AsHdAueQ6bVP{y!2WHL_^-h?<2GSpbxy^ar@Q6-R{k+IQO_Bmvo>!~? zqcX4v@>DOM7i5AHtIn-ZmIr>xcI!Cl(m(CyM#7%s!$j_zjfR}Yksx#ojDL0#p^WIS zt|o$9TWdD!SWn~6r}Lgp#vUT&R4UvXJ^;xN-iX_I)40{Dc&1Ok>lNE;!tL2GL<66n zOYMmZyez=rEWWK#_@kr+27SILbPBBv3|IMwmI!&_!L5-8`#!&*OQ*(~BN^9`Dne*B?C}cbyPMix~GJ*KF(0J|ger%_YeV@{l1BFx>#t&ydtVWp@b*%AXcDJ=MhjfEm#HDCmj z8W8$0k0^0>%l%tzc9Gq)R<*b44PP%E4@c;EN(QI z4~{O}@*HbPze=}$YRZz=`Lrn(S@aZxoIT!`3pp8u;GxG{Gz+3wdNkaH5ksIz{57aN zp~5QW4p_t}DOlxRm`G+)PB8rj-^nyE^wLw|>U+!+ExiXctfQlq_rw6V_d^N?UB)9TlC1J^BA&@N*ky!_-&6hs;}ibaGN9#Tg4@O?zsmNLzh%y< z8Se$Xnd5dDp^`osi?9Ok5<$@QhXxPQKrte4RSzt5@7kFk0ie^SxYw*EdK!zq-W=-A z%ykk2tZ`soglc`Qu<5S0|1-TYD;k&G_DrkIq+;MO7HR zVERtfytGtH)Yahp``3M*K6kTu2i|eRtcrjXSuiIQXdN%MtYS&z=8@tKBjr(`mz5%g z?_hjXEFa71{5m*v1FDUM*;8SrRP2p?sNNUg&?=attE>Q!W<#S~=&~b}=r zhy^=rq5=lOn7#A4Yll-m#svw(E2K#V2^m@Yqu9bRS+1H7tP;=5Ir&PZ$4fmjNGvQ? zqGTml#-o+6QQA=L0vpr=kHohINvv^?&=24_>m)-fXUUr3r26VTRayEU*-3{QlA6Pk z+x_Jl;&Dw`$?87Iz0xTI9W5{FVI3{t1E_8fH6c5|g* zdiAv^sBm2&%0D3*<^M&2XCa8;%VOD8&;h7G0$uI+)@G@|Tx-81Smx7K^6{MsM zYDyBjXa*>nDkK(EqU`;IM^!*}odiwxw1=G*1A0z43hI_Iy{Ai z0%h3S$kJHyA2h7vNkf6N@Cgva^H^GI7ff2CF;7Hz0S)_MMMkrbIBKJYm&`g2z646( zJ=&xf(Ii{iWE4m?32ee@$Q-3LAx;yUt?gw_7&XH?njMmx&1ucLfz7T9(oTUbra3L- ziWcLD7H>|=N%_{ZMy)B}R!famfWBRzwO$%+jm~d%?rsI>TaZ^cQqQVaBr#5x^* zf_e+`SXi=@A&?@m4uY5y8dum2Cvg4V&cbr|Mg@`opC83WQI z(X{Q!KPKTPP*6QQ%8-&CswHmlDQUp;Da?!h&rU7$Fz_fRFv$J?Kfn$A{#n|H?gwg; zJ)3rn)ZZ7yqeuQSPNn28YnsUHe7$`ZY7c^I)2q#XH_QzokDrB~WbrKHDA<40Or@TF ze_Myt{tFC+y)=jPoWI<_@+^G+*EKXniuR5L|Ay0azWnhQOAw)$g3XUm&>TG;z62k- zaLHSwl_X_+MN^;m>>~b*U3w^`!b(dH=3kbcNMTrMiA%X4A7qcs+N=%Y1~LI|e@a~x1L47Y zZ=ony;CxfcX>~jb6!LV*kx5Qf1&d?g5(J(rOeE!*ow+`Ryr#)V3?lMKVBq2e$nO{A z=`|r00!#uAQfI;qaPVt)+40ZViT|*Zf3Q=zY)uEc4jwLnhZy6oE9|BkvV2;%Q<2EQry4x*c)_K|!idw{Nk=Thh42PmOLa{rpsZ=|_Fd?ajWywwLFA z?CuP(mc^d^^MecglgD)N;G?k@IzJo4@x{})L|xYB8i9rSmGMPLeO+A&_V?8 z9h-N|ErWGLPlYZYm#%QtwrV+3xNIeVee|l;9`4(Ue|^Wp3US@PtoJ>13+bp!^n0MW z|5-+et$J<9TibU9%^`MLwYqOGL$p9UJMAvrRr`!G%RzOWFQKar276r&I~I==t~wg^ zhwOafa(E@+JDw!FIGn5b>pQ+l zb9FwsRq5vD3Qu!8X=nKUq{sQQsV7e#6@BgQbzMSO>+IE<_owjDcT-RKoZouy;rDPl z#pA+hoxG@U*(*2C1e|=$%Zow2(mw!G&+_pkG_9BBiW1+Fv0e|c#dz4|{u`U$=@ZV; z5H04qKQAKXH7|oFiK$AD%aQa(BI6GFAzmiN?8_W}9ln^*5PvYF{gQ9e zN`o&fI*S?R_u$zpYhKuAGAJpcmPP z7+29u1w&Q@ga6+`o;^4kprT*Faq7w%1N}pt9bGX%W8y}f;z-d+PQOLme|ifn8$>~SB<-+F3l6I2fFeyH4ui`q6d-pR_`k(1q- z{mFsxY+v$eY;2)Y-w`()E$!5`tE+2vfp95vayKGk47j)zLUNiLW5XlXf!t}|r`?*u zS2rUz%ir(xbaH5Qi?%jf%j?^X-Lu#Hf6uMe*VmaCS}vwW0A0F?`feK&?5mRU<$wO! z*y0ow6|Q|}uJkZ=BCc{CRX@?C0X=QDB2%eraK5VrJs!&#{ro ztqso3wcuSt`>l|Ol|}ZBwf)u!x80k;K!SDVF94k%`8)-Hx%rs|ppU%^3_Mu5?E>Qx zW21(SM0++&KC?2czL30SV34ZoG1|R$Q3FRCqP53X8lWRGW0~H97^6-Sz)68Vn^71E z$jhy;W-~k6do2U)HBiGFOmAfr)dt13_s@(a(PG1>8oHhIQUGbPHL!R`@nPoLnm(2l zm{s^{AzOF{U!9nrW*FU+aT#*#`)yGJrr=U3P{Z|RF! zeiseV28L*$SC<_iz40o!z0e<^wli7DvkKCZK=oT$kd5^+06u1sB#Hc(SsmQ$8C>Q( zDYFPuT0`#*45ZaCrkJC%^LdT!3xK;gH9W-%v|MWj)*!@LR?-Er)LkGj4%mW#e+iso zj|`2BOwG(J066>e=OLg}Hv$8#+Za&1{tTRc1D|^>E>8V55cPE@ zCZ@*5_Wr%&9vK-O_&oIQSvc?oqxt!T`FTKG{{H%}gCT1QiqHAnYkHghlc!5;yw7zd z*4Nq0I#|UhJKyC=-ex<~+8uo>Z@p%IRQa2y^Jn@^w7*L=nUkMIA7}JfN8M2MAkptj zE8)TXoD|8?=>N&nNuG2xUQa%pYD9!ooKi~2`L4W|&&sVhieF}`cppUF1Jop7wbu6Z z7P#IYprXnpg%&Hx4<`(Mg}oblfOfg?L{N@#YW%(ome4>sXHIUoFG|xpIp95-75&Wn_vYN%%MkO_i$DZq;2tW6H<$E|K{ncZyuP=4&0qg zF;VN>ms)guMpmwPr6L*vhWX^F^S<7FZYEN8F%KfB8u6|H@viLh!UtyTK`py<$48Ea zfn|R_XZ-rK-|>h`>NnZ9a%)T?77oc*Y{vtCx+5XbWBGH=3RH z3n5Rgbt*U>vO81O*)k?B7T{J_d_9wQjnfCxHnP*@m6hi{T@$eLgs(GWr0R=J=>flk zLCHtz*)P;PT^$?w=Uh{z#00*Tl#kCo&n3*YPyR9et~&f4`#odu#_Tlpcc0<+>e@WF z>C%13>$~mm{)CU&(~t`p#Aj1ZMhqh|HCw^z!9$(W=gX>_T zD(tLx7AgPi+&Hf=on=kqfU)4+Xwt8&rV!EDW*!rqS=F{YoYx>#xol2;-2be=iKu^2 z^HAXJHP*Ov0Hjb#B%_0$r-(irq)B;T;iUs|W_h1J?73JTXAb1)RF396ah{KNO#EuO z296z6ymr&2@>%z*cKYqLAflHb6ZFdmBG%rdJb`11_4(Us7QG}EtHnwBp-Q~@FOk*e zVi88H_t(VxZdQn;8nmk*Ltj|)K)hzQ1_sSOiHq_WxR^7D?BmAB9J>E~b9x&3L`O*W zYEFrnyz;O7^pWqq%Jh|-BSi+bJC9sKyslH!|1sbS-;K!UKNX*0;+J5`YkOSbO#DlS zEs6xb?t#kpEIRL4$LpIhWZnankr|&w8j~Hb8J}j8K$axu^rGks@A6Nf&Y&X^3@if9 zz#b`S1F55lDfq3U!vg&sgSlI7hvtoxjvb!ped5ON?UQ$@)~3Vswk}3~Yt7ei>nrjU ze@5O#qhiVTxU~Ck+vU7*c$(jX)QJSTz!iQAht6@Z!qBAG9Ew-i5?8?^-S=2=2MeM( zr=n8N-+G%b)fcW0LLe0V55G~%FJ0evHTcR))09#_qKaH*p8B<7>2zM{MjvhX`(8QM z-vP#N;*ST#oZn-^ETHmK=c$z{K7(pLH`}MD9mI`?Ch0X?Se!|>*Q%QIojt<`wGNzp6hC4=$90o9=oqX`aE4W3WD1i2n)uRc=ym39_VR$W2onTdy&!;t+4!M z`JXq=%Yeo~JQysbdguVc;EcWWR{G7@!lD5EKLc64YsXjY-tU~*FaKximx0yKgJokx z`+#@TZ{0u(a80ygw@XQzk*}KP;U-8W3;A*)udlt8H|1tsOF0kSql#DKJsJk)$K&$_zsFfz8c`sr zFD~Y8dkwP6&Kw)`u-tiXv-dQ@S|{=a-22ZH%qoIS|8jjqXWwYCK+vgU!-C~DABl<+ z@!PYenYTj(rD|)cpjVA85r=B^(Sqm?uR*?Fg#0MbLZuhS_}a8Tf3@_7s2PxuA#~*9 z=S)^SvEhjF&SNeo`=@CdZR*!+NAc5TCv3VARD+05!wv`J`5(xWZlB2F+fp4QnF`&Rqihq7lYGVDtRJzuxUmrNc%VQIo|pyBFs)XnE;?|$SKHAI@&fCXb* z6c`{`tF!tTb7x&71RtTIi&A_67h;0-S*O0V%6jF4v{XSg4RSjovi~eA&fkhQkUnju zXF7onm5DrjBGgpraB!$%;LQT9YZdYq!&;Xn?fjc!>O%sw-bD$G>)TGnq=y6_vXJ_8 zl7|ht^;1PIwEwOR6=sK(_4g;n1}}%XWkp|O$3{2ZbM232ZK|HNK~KMp4KSDRLBs)6 zG-h91)pT@j$R()nfhz`5WZwAX;rL0eQhcatP%^~)%Poa?X{p5F*wpHToMF`v8$&gv zgr@)%^+=rGOjuG$EUHc{9Zqymj)R|!D>F!{^hh#2ptptAm{&R~e^ENAo}ENTSe_Hp z&z4SZ1*j-n)uTP8C5saI6>yN?7ktdP(jw;lILfIuCm}~$;jJxK2Z93RAnR%ez;u=%DfJD%}bj% zL!M$(-tMZTP?jx}#fj&S)%+$1|8oQR+c(X{toHfA+WPHUx*VK+`c+vGB6o3p|uEV$dTic+)p%9zTU zJMgoF`q|gAZrd;c7L7T3Mga8B@@pB_J8%IO?5Stk6#o786Ir7BFX)B={iG+I;4S_$qh0Kbiia(Fp`nAPm?eGXP<`50i!e(qxWj|G6yx% zG&SBIvTsDw8kD@6B1M{(4Vs)^H>Ec;v1Xfa0?lN_<|UhErz_2Ak9DDoMUQK)Zd~qdk_JEE#W~3Q*LG{q2+NcCx+X1C7)S zuMXefj`6IHY(dE!!BhaEdW&@a03fQMMA1SD08t%@6`kJ!irOts?M?wGs;zU^H-Mrh zi`SH<02I|~x$7%HQSHT>lT!eSYM$Qx1)!*c;=O?>07W&??)em7xhJsamB#z`cF2wG zl#%4d(NS^N?Vj<4l*xt0X^!~M2w`Sv?HrY-s+Kl(rw_oVTeLpTXy0yf&ERX{vrHm% zZZswREojiQmP=y*$KuEx25L|LrcvFlUF7ochf|<>(Yk*5@BIop{lKyKwPSVbUG?l) zAptbf-m_Zi`@nxfhfn+Nb89On=pQ)14if`8MISi4Gl<!lis&=I}$cjMDyL}2%nc)p?jOG$afy{G&z7%Y8gdl(8QffsSG z<3JUl;-H=pk)$viacz2$1omY?xZGLcAQ1Rs9t=Z*>7iTs?g`sqVCrO^OJuMdjxkXU zfiu8Z&>YGeYD0oNbA)ihVE!1`DVFeW(0KVhcy2DwpIKoCf(I7IV|S2%%I(*~!{AI< zQda6N2nt9SXX(Gha)$&+pz|z9PJN044n&k83w+@0)A4VbVy)HeA)pJghg8Vb5EE>U)n{oAbXc! zL9BK568PB?q=L0G#zF`$bJ5GZTox*AS-gB1dX6RLl!ko9n(AFvI=3uG6kd^WT9LT6 zvTCp*xwNvvMXajzu~e3p`O8=K^sR_%tuEWF?hRT!l(u5Fcf}%Y^+5URk-k;2#Z?w! z?dYMk!%l0?L2IsQYntV2)_rTDi)%}W^%IBIO`X<#g4WNcts9rGpXyr|SzKR4Y@9x{ z;pDUt9JFygZNs5_<5J%SinzG(8?kx$(B?U(&B&n5=(NqV<(s$qHiZ{A7ZB{*huA?* z?DQb^!!-8Qa&}xF8@b5-g#f#tkdjODJ0!3wK1~Y`H>3X%8be|Tu!HzCIRdQPclkFR zz6TB6h)4RPd2q~sB*u^eIG%%fNEy`ck>Xiv5=f6RFL4iUgL8yfQ|D@q!C@%g!{|A& zG2|&O7IcXUQNEk@4F@E!d2Fa4?k^txMV_@<5V;H@joaR;2BUB=11kI+no!#JssVD+KbtJ;Yd`r3hU3x@sNX zDJy<((T}st%CNCl1?GU{WoKrl2L?U?BM|{s_NBnUP(t*po1wc%)NTWiuVAV+hsC)+q-ukJ!~zb?G!%W?d|!~#{hPLc8K?OO*Cf8N&#DJ zq_KOYhR&H81y)Z79%KOY%}QB!{#xM5*B^^x%+FP{C|mpOy5?*8y1P&w4#77Z_-6&B z>(2`S4ny4i0tEE7cWv!`&Fz7C@x|F+8yVz@&Y?daE9Y4YTN~Rez!WM3wpLmS2#Fk0 z=&qIh?!9DS+6LH$*sb}n0Zg6(C&7s^D=zj6^T6}~2ROq8oVZ<}+_&{FhBGnVHPrpP za_VUR*Hye3I={kTS^95<6WAVse}R*umRn46Wws~|;9UeQ+)PZ&tPXJHMMoQ;Gjpa2 zVyXdTR%R~_K)2?=z+_zy0J;IxtNoQ9K->U4mu>Wa*n0bLrvLZ>#p#O7n@SIA8t9dJQ?%?c0M7y2p9Dv1NN33^ zSotJYS0o9fJ*c?Zw0JC!1(+ScZQ>S2_F#_435y0~ZE#o=;*uZ^q5?Q4jf%~WFb{A* z7pK#5cq%&om>)f@K%8K z0o*1DB8nr)6Juh4@G>Ge5;Dih4+l_R6%H>WQUEDzPY+@MtOhuoTrLJ=EvLXX8L!jS zku4<>{dIhS;Syj!C#!&TiV?tpfD5MNs3D9b$Vj`RQDHbem2qAGgJY5&)T zIK@A*0{}OZlVy8go?NX3(rgWj%F*v6+!pD_z5ioFMBa|AIrMl(u8t{2crnXlsmBGq zA096RPOU3VYS$AV8qsg5`S%m5s58#!~ zyaycEDRJ|gfPe?{^%HJq4d8d~hW6wi%6r^3=zrtDaR^gmL4YI)N=9$zEFh;-QEFNn zAkAgHyN-T)K>IsxqIM`Ies2Zpmvi|YLZeoAPG|MRSGTbqxefR45o8#Hi@T|IFAojD zHM%WeSC`em^?!`r@AkX!tx?0K61V+JY{cRXXfN!K7W9p{J>*Y<^6ERd47IXH<27ax z6$?*2s(3Qi6MK(T+;wMl`Ue5N3#!3C8*z_fQS=?*97KZOM>q?xjmym%B;6nng1_v<`#VKt>*q7EeC> zuIv`%Bu;#>byK1V53gK!misH(HJ-4)xhp;5fD`}6l;)Ti=9g^p@X?6X0p6m;-+C^Q zPMtrx{8MmjbRL(2ve%)p_LdjUXLvtWzTKJx?_K=33A!vHp~PCpyio0H%wu{; zwKf0U2Xvr+X8ceI>%k+h^%{pgS6yAE8Rna;Ua{_eyt#;eR4V8wW2l`)!uLbdiXk=d zG1fveu7*#r*X6kOc2AcYAGgUI^qK>UmepX*58t^ynWrHbbiSu;y+SlqE?Y~tvcAv~ z&;2PeS@XG%oX#)eF5GHd+q@rjd|^Y|O3mCA`AbRcPu?&X&ua;WO$}PWY%u&R?1FC^Wus zcwPL}=F?S?LCUD<`HTJEepm$&nP%GKtK-kmJwuaACezpXuCwm4UO0p~gAoAtrwFD` zB^jqtp*r9ixKXUJ-c5?x0_x9Fu;d%VKjL!Sg{Bz*_cEzs^tE2BR+%TyOc!SJy*j*=aM5 z@76tC`l{IM-ety}YnS|=%Y5u5M#oRz>|Eg%3n>q|a>&fe+u^;euX1=}<=_t}Jf90$ ztkH(RvhPN|H-oI2Co;AFetGx!sSCM}Ll0+}7De7da)|7`w|6i-4!^BRaZ~f}-s`yO zv+|5Au#0k6m+NbFQJfAxgk;hnr59rS7^tD}e zYfk4);#}8nCRHxpK7TZT{nz=&>#y|XA?&R`X{3Me-ur2JQ5$U2^}zKwPRrs)&0ol+lD{A z4yBwD+^F=#NFgeS&9nw9ZHkr+Rkn&IH!AB7mv}NXZ z(w;ZperT}-zidR0d#AB+`^6Q)PxtqnHH1%cAqKYY3zRU^xVmc=lNK6h3_pF^{_fAP zOz+-p$~X_Xr=^7zf>|{Jb3`wfRY<-O0V^%UJBYw6X0a zx*%5c>D-QsuJc2?gRg%26fz&&CzAa5VMWdSRC9?5-z7pX82>Xyc=c$b&&vp8bA#vm zJ>SLRz61Oq-t!mBO!guR*PVK)9i$yXt)ko+|CDi@6&_uG0m- zHP_xx-c(+Gb$2bn;l|uIdS-lD&+%;mf!a$BXFneP-E~SKd}49*UXD6r_%}GLD0%Y! z;o!FnS?hY`56;8(4{A$hJN782uWVcY*fw*vD_;5YWUA>rGuKUcO(`v3vbH07!HT9^ z%3r+9xj)%e9&g_%XL8B4c76|0C$alr|9aQJR^Q4(#0#^4he5gSczajfh~h&#;>S`E zI2ZIBF84&J?FPNLn=pMnTt0NlWVPeq&D^39yM>yN&R6pznMPT>rSD+P51OL_$8R zNLag?XZg;EFRfmigjn&9(Z1-KSL5ZY=f4^bd`@(VzfY{b|K+zH>0Noy8a{as-!q=? zeT|>%f?mH`JHA#8%Kt97pFF!ax7y5lVeYDz2FTnc+X={A!3%YLIO7f@C-=lBJ2SOJ z?T5LI23p(xk8jT$q5U+vs6LnXdZiKiq48+(hg3rv557tObz}ku;3iw=T*3F1NVD|{ zq@xICPeNMnIq^QwFhBxX{2Z;Smusp21jd1q6@&BsG1YbsPs3c+7U_yR#X zG9*wpDzX`z2n+$Pxt9Y&9c`UZ@5nP>(69(@dwOKa`wJx_O!!d}>Ys!Ju-NQK>3AMe z@;S2Pu|jPMzUVEj`bGQ zcdx7H9d7I0{;hY1ZlC+h*BiI??K##rn%?JB(f7WsZ~w}^gS!1*EBiNZ?LT^~e>$Df zzqX=(sIC9xxBkC$-vnOl-M#fq{INH9mscm|UT;0~WZT_=y)Os$eH%FTt?&Ha-V4W` zTs-zR^Wxh}ci&#teS2kZU+&%~S62>R+d6pt*x-$qZ;ST!mu!7<^V{Gp-FLTFzPodA z@b2C>_gtS;-+g!g<+}&(&p1*C)}#%X-+lA$l%6T?9i!)Q$zsyLI~%oNNO#i8H@lC4 z04i9p1pe&(kn_A8T;vQCnLtdr?GLxUBbdRC34|lLu%jf{`^8UO()5g}VWM0;M-FmN z&ztPMCF)d|Lhy3Q7L+d&ej((2qH9SyR?S%WV##ATd?mbh?@;(+JqH1NmGI>-5%Q4= z^}r#$)iV&zcb)_`SIkM^4qPObMc&LJ|U#VG%+Q$D+0k zhy1L7FO@)l2v9zx=+C!c<{aeW1t^ty(9PuUDx@hDdKe9vd6KyH$Kvn1#3_kl_Rd`Q z99IGZibR?ve$Z_Y@I$}WCVs6e{96C?Ys2u@rx}U=HTV4Yn3&4kvmctO^ud?KMTa;M zBRt8$p1wt?>1kHB-b7#dfdE+rpJMMI4+wa1yE4VcyC0+(R9E-6_Ij+uE6f+po{e^} zTn*4faX^3~J8P_~S3$=0Fmke|%1Zy(Sru;}CwdT1tyq232H%mE{_%L^uko({9n69& zPI3jn0%0I1AwONYz-aCwdoVd+roBbMO6;j`m`Y(Oq7OS_@ruZO%EV|8Qu!;5G57AZ zG&&rtHiGozxsn19qx|RRq_nuyAEYPyk>_e3%)sEv(z3Y29R3_vL>bC$q8AGBS8{nzRRIAdsmQnRKgW8#r_nb6GR68(HZ;4p@Ot&3ttgXDHAfp|hFq!ko$c-#P? zw7!AMwc>iRg$L*|4V;){-ccctWiy4mbPzW$q?!AJBzyl@5Xmg5jV#=Sm$3N-7Ur_n zA)zo&j?@sR(Zmb~^Ry_s%nWagiH-)r^WshsZGau(%Z|o17tFxP$J+OMN5Rz z91hsql;u#2gcadoeoTo|xI!VW<+8*Y7>R^C$m2-|2PCutp#e!GB5{q{MO<5n6IsL^ z6`Nsvba2Q0&_31_ka|2iC8;sOX0zE7(+pXwuv2*4+t{HUPat6|ePs?h3b?5-EhJ0J zoXyEI*22oN%Vo9MIXo5~iv~PF!lfDedE>1DWb8a2OoC7-#aQZK%&@{VesO4!EQ3}N zMFBaPs?=lo|1bxz1POzyumem7X;Y+ zNlM@Y`Zx-Jmz$d~ zegzE{Un_{aqduh_d$%r!c)O-5m3Yz_bT0o|d6x8bmzbD8`YXF?3x?5n>k~2;i@1e* zR8+Eg{qpI2xBo^>rk->#$$a``)9K}&l<}ToPfqe$E}vSg_CZ53h4?pWGB053KdW;M z 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

    kArg~~%#wje&z}gxV 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 z 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 z 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 c(d%Qd`crsjczfdC2HRW) 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

    i4I< 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 od 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%0DDZ#l$m>uXAi~?~1zx=!pLP2?T|0&J!9E@Cx2nG* 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%0Dx5b`*V7hPLBRJbv!4`zr4FrYHOi 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%0ACFacROkw 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%0As8*r-c)5uG9SmClOj_ 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

    ^PJ(e4Euhm}p6#|*=7>%*@?BnEu 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

    x0Rb*?@C$ZcPGESdhqwp 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

    742VHO-W7pYzOt9zApIC zlx_d#qQ?NAU7%Wi+qMVv+@fL5v%?{Os3hdq;YP@V%PlnIS_KS5Ke+r(PA0iQ&N?Tg zJ^|b~LkgS%O3SN5oPdfkztB4uFzMw!OV%5Wr8-(E54G>v~ z)`D1Jrv#%x$9H4xC+zJ49ky6ikRU;?dOI{14_?3t|7oI| zR%i}Bg@Lm_*+k2r5Bg<~m?h~FLu{W0awOE9>yxx@0uU$EW;dFHt<_*S!vT3%oeacR zm+jxK1e}1t7oe|HX9PSxnZO}W_`bUeHW|T_hHOtT3M3jZC-~d8LkO#uwgFK*snO_$05+?$^ z5t;C^tTW1FVATN}G!u+~cN!5Q(dI-<|09|;ioE7?oHQkaqLDJUQU=6buq#uA0~c{W zvIP3oV32b-Lym@Kdr@}n#_an&Nh!hdI1s**_<%i2@-D8dR@fN6YZbhmJ*wVB8 z9*LGUWd0??4+H6ii;l^jCu2`gGas`0Bv4upMQI^k-*hbKXx2fWvS@N%(uzN8pj!Y< z+XL(XaR+ePeO*u&TI*M~+|lHhvs6md(Q3g_ZqnK4@=;S1w4h3V!GlI^>kHpBaIXI= zdv2W>^XxH^NWsypkb>zFH21c{yB^L&~OeW zSij2GxfXHCxwoh_#)Jt0#ryX7e--5kQ=MG#wjNnB%~r#wg(3Ly^1szM&=t?Et$wcC zR6iaqe>nAX!>-v!ifso7C)ujx)j5erNFIp0rv_6@i|SS zFWD-1_4kDuJL!mb`+fpTAdkJv#P$Uv-m#^!Y-@PYjWqG+lJq^YKk-i8RG_HY!?^Sx z+C1MJmXZT7DQzJkd`wJ2zMD3nBC*ZKFd_QCY*FF7aBYcev|`fFV#LZ|Z`#S5Y!_*v zVfBWh*@xPO^vrjqD+upVCf$Jwy;DtTg4jGw_0+$)mT!cr7MRzQ1Qj zT-_mS2yxjVNM2&j{@sW;MZJi5J5O7%GPy|i1E-Iru~f~jC6$Nz-Zs0orzCM@j`PKj z^B;mZDi1v~`7U_?Sv4;Z)sHokvW0Emw)Yu*VdWUK_a6@(y>bVAH%{44=JuYtpN;FF z^Ihu_cd_D&ZlyK*wx0jXLla()yM7f@wgGi2^Nc=f5nB}r-F)+vPK4XS-|^+z|KiXw z6R*L&v765ij{Q+eBQyR*XfvaWF}%?0hyM?U7S`PlQ{0zBT~*$%M}|wun!Y!bxq9T1 zavS|051spZ_#pjgUez@d%rr4?NcSZ0QEt%w(W89-&<59nsmunq_lu2cZiQKX$B&EO zrSbPu-X_;(Rw>i8zFezL%RTlWeB}=EtnB0d=w2S9ss5z4@F5r(o_3ple&%XSXOG4GVFUB?a`S)uFr#__L z%1&_eZL(dCk-f>h1}7Lu*b zr{;FPH~wDIk_`=9Ev-9$xt@G{{pHpqx)ML%?R z>NEEFUl1#uaZhhs4}q@ij=KHcnX5~wWAg?qZY5TLqvfzu+*K_0LA5iL!y0TnVY{nC zO$l$LH&7M-EQQj0AhZ!+Xi?*R$MeTKbZmE}D(#hc>$jJLSpvJS3=>|znEQQ^W~VEa z;R?>@^x{RCz#bvV;Wy78FNj<18QkE0E>+Osa@jOP+w|qOOwJuK^nG|qrA7OjBu9;h zGEaJlcWQ@aZGVV`Ic8K^CtZDEBkxY&%?Na*bjE-ZlOo@0+M`_QOx=_xZk_~X|6p|IF*2O}wrK8-*+NH&*#LGV$#OT2&eZLec`YeQ zefOch~AfuAN4Sq!3OU{p#O7HIoUA9@Cyk`?TLh#yKzK3-uQ9}2B zl%a(@rQh;ff3w~FY~Jbl=(_QE6Ey=qc!pQ*hKJ%8c20{NA)7pTJ8Kf-A^~7pf>80e zJzkk?@hHK=)3kRoAMNb(x$2X&7tPT`b?m){V;xD|gO`(E-*dk=Qh3^1l9%-489Hw5UI)mkB}YsWGm|w=+f~`Vv$%z>SuO29$-VmJ;#7r( zV(HzVn!N2GVRtQ-{wbbkJVoapR>Pv~=D_bpD<@4A@~q43`0w+6`glb$@Mm=Pt)QvWu@{dl5WP=`1>Lwt1(T?3v$mI zhiqn_eLBlB-#42aMsx2gf0};m@@RGBBlDi6q0nc`<>QW;fq&@tA;!I3S3i(suS?fH z)36z>;PV`KO9CU`G9CB3WIO zc&-l>AFjLUi)0VU-0N-R3*Ah}FLuD^lkMy1r;@FWZ-6$zv4V&MPQ=T?9=!!LBDmi=9+;!|6C(aQJ0og z%3R~OO;tjcwXRp!9?X!F2CKg)9_)0OI&wOLQi};cm7je*e-cNRw&GE7r%NTq_n~CS z{hN=fMxsjhipN4$rSBWhN@cw$zH~apaqzM)q;>YQ2>(|lxn}fhii{_HmBaSwmE$2( zyQ9W#hx@)-C%7{ir%9+y=I3wfgI^pE>>gzWwrG$^u;{d@XJD%idM(essBjc{iVVCEypEUA@-#j`<}9zqat!IHg`0E)vQ}< zm;QN(Z8zcf*S_q=eIf41wBBZ1^ieu_*T6TYK2b^>&D88D)$C-dW%echXj1JqsRC+f zA0v?0)sc6NkwG>@Mo%PD%9jHlts!vJMGuMaEbU1tsrC^xQgDHoJ=NxBta5s(tx#86 z?7c?+8WZ=fC{Gy=FK3&uXiM_imnRSlwL?LUvTC7ZP_>|VL3)V{r{v60nI z5%c^i;;xg?prPt3{%5-hdrg6_SqFX^L%-f6X#Yi)S?Tye^L5UTS2}7GJ6e@A+9yq} zN%`s;m9cVpqTfkOzel|1p<&YFYigofSMfW!QttfKtX~xp)X;gmhIPF`K$I}IhP=N1 z6}HgE=Gno{Sz*+yzn8A3{87)au_LfYPspXCbVPS#=klRXv->4o1zlx8GqSU)Mn|+x z_f88&_iOxZ-T3Ev8m9>Rb%PyJr_6k({TW_`C;g5uT@{EDFXRw=-cHd-6oV`1Zy^= zM0Z?Seb?Q&*64GpMR_OBb7J@=A{HZ9fc^0t;Rc6<67Wij`>k?#F~xB*x1xoUjlsm%>%NUwiZqwDUKV$sexX?Z42 zMcFumdmTnr*}bvV-*SFvCUh9T)98DLG#0cpR(9@v;@vBk-RUIVsk(hRvRdI5r{<_` zIqFK~r|d44>5lA?FFW%_5xYij%Z#e+`wJ}k_?`P?(9cbtU`^sYZ*=nat};nC#~bBL z_w|*1#+~-%G53G&*NPN0_`GY}@xJfu!Obyd#xDB{-5nQu`nh{M4BmoGmZlV3?DdEH zO(`u4{bkH1bIrQDw>4h9zj3~1RH>v{8f?1q9y(B(i7c( zSE%w%Gdx<w2G}`o3Zsn{xnYPI49%P*~hp!G=THb`p z+)~=MfP!ubvJaUITX2NjlGGVuupHudzGd?K7ViLh=w{{jhWsI}%AvAo_NeaU?XBdI z2aFd!wY`N6zsZb6s#z+;C||A&lVDK1q{}M>qw5D;yFdm`lWxh^2=l#yi|Ai~i@m>` zA5M9WVMn*KN^Q}p?$L?z@s%K>_|maK7)$vWAOjK`{}`Og>V;(?-PW-I z=&_)08#?4FDCb`}%U7&n426e5jKUa=!XRY8wK+O8EK2J`EE>ahaf`0V8X#(YS1ka@ zIu7u*_)(xrt*gR{l2iDIKz2At#3z~tfe{>s*-If<52IKCoUBCbgOEF}%DF~D`8O8x zjX%Un7y-DW!&p$jCl9e4NV;HT6e9|V1_p$&jPRYW#)w5@A=J7E`ET#LK@I~T9xq@3 z8+edD5jR<7#Sk{?mfms5Xfsntb$x(vU~~ZIGseU>TbRp;3WgsH@mtaLNuMarV!f^{ z2d31S+7S(W&g1cL+3n*bK8ZgWlv5XM8@D*Pp3hZUaV!s3iT1i4IA{e;l7_w=Ulk zOsEk_d6Qd8~jZPXyM!|7xhT3#FZ`pKE?2#+ULDXQ& z&kQgH2VYfAn0G3fJdOW2<@a`)r6ESF+b)&FH%AW@&>j_2o1t_V4Z||nLRHyB-vCOU zj9=2BlYDr4QlAbAqnqlCi9VzAjRvAu?D-i$Q0q5hLz5lodOGGm_BmO| z?-Pz}_ZjTK{C35~KhY@QHTh{jwwN|$JMLl(uRPrg7|4Um252;crj9_k06>%#HxhgP z(7~{QP7`3$t~~t#WA)$?CfEoN6@WD$gbAjPK>|QhNT5PG6m$qMl8=JJzzX$r7nP%U z-LTwnG(^ZcVQ_%M;1B?U19@OzEtYUzl#`GbCo2Z~fF)dhD~jJO?EDi$*dFHA3wlmf zC!qikIvof~w*swzyz|A?-~i#`7=G^X%wmi*JdDDK0rI%9e4GM+tO5Bi=vBm-FTycb z4=sHN;jFo1Jl0Xc-B<}ChmR_jC*6vt8x4dK$0W!Yn(;Z|S%4HgBAXaZLz?>o3x~kT zXsT2W2M!bi=!p-<>d(ttF9>=qP$N-=kj^TO_cmZ)kdceV4UDukz3(_iHX0~)_rBvj zgz)0~)zgPHnER0H*e5xd?+zgDaSY-x$}Cp7NevQ08Xz|mTo#V>o7kemK`1; zK_4Dej0LH>P=_;uNTAOa9gpfGN)!wvf}lQBnB@{CaM2-(j0uJV&F{t-ATWGnI@VU8 zh}+$O60C+Yov#-VE$HTaJtI1^`>q-sNPQzLZuD< zLqxj6HMW2;fCY^UAfCf0jc#nwQ;?AtivcV=q8zIsA1&(^b)yydk_*g=8FL6J;DBR; zsl8!t*kBmgfIjh-fph5SDD@2o9AUyXA1T1!K;ZObG%=B;n~nhY{elI~jbWvVM+o7($Rr584UmXIB7vTrESmHatVkdN1L8cy zuoPo5gFx2~=_uZs_JT%$!j>qOEg*XU&Q})mO_t8cI)WFs3?YDoRDsIkpioo{57EsB z9RNyS!brH$>2^njeP?D@eQ<#g#wZ^l6YUa_HqNnyg>C^60Wj%qI??nuewgSazi4Y)Z9KcsD*l`J z)1%THAPU`d0f;D`DEfB#@Fs&OjTKBF8E|1MN_GXngRs9y+!7B3>dHfSiEdKqQ6LhE zaxH(XFVRzZtfj~C1L~;{%@9}UxJ_zE1Pc<&oDYL1PI1WFOV$5e{*Hc%ApO+)2|OE( z8is{YgOxJLlC!eY-rul-;~187AS-57HlX06>*H%}(X6~FtFjnI-UaqgWfVMEy5EB+6mZu*3kmjFwT?_|dMf>qH1>X4=2#hxG{JH^9 za0_VKS}0G%f{J6%4hO)DT87|5Kn6U+;mcDWRd*1KA#@Mej&KXL#z-)Rv+#hQK@(-< zP@!HxT_pDI)u@-e5okA{;pZ4Z1T~_U&Qd%q;cx`9f}x&GNjCtfGyA_Y+Y|?}hZo=g zkwc6;4)W3zBToh^JO1OP4}XsN!}${^J&xgY^htTfhu$~M>;0amGw0db4E z{yI$4pWZtlg2sRhp-1^C?4H%ccqD+XS(F(Tp{VDZERJ5V9>~4|k|OyEqHGNR0jYbH zXAamzU}WW^Vh*r&i&26^tXKEuUH^pVC``fZ%di%p=KgZtd+7rQ z$f8MP-@#+Dd_;O}3|;(}h?M3g+!*CG}WXFVU z<1i6!(X91YjqziSV!)u*8_*W;`KOr3%K)K&{uNyuqDyqeW(ySU`WNL|SPrj!gW~yH z-AJZ>6>Ta zYQmaEoJx2yEf)98;qYYnwoW(N3YM=G9CG(-2Qt9Ayjzm(EC6Kw-A zainvAvBDEvx<=rKNJxa9^m|=SY0^+x7E*ds-Q63w16KWN`)@j5-G84tO z7z|YjCbrWe@-Z}w7S^1)K-qNN2v!?3y_1E}rL%Na2Cg4&mly@;oo)%Mh_e4sr_(!Tnwp2-YDXJ+M1m(? zp2*bC`PJoB57}sUTsIpc0$UIF-ncl%i6~4jxXb0}_68=c_YWvi8^Svut=bWU z$f0jIh&T{txS})b%GVPo$@LWUt{{Xu{M8Aj&6#JwP4mixY;%zbbMMM@d^$Ax%F=!wcw`8nQW%++c_#lD=912}@vVj;21vkPi;^gn>~Gr-2+SKd63`L;+&x=D|We!JN`K2kxM=~<&|50Ip$+gD=vTMoqLYnw%o$=Iq9XF zz7DyW2M6f~2|$4XA2C!wU<~{OQ9*?mEV0Br1hPPc4q*^thYqq<$U+QNV35EJHHtWv z4txYcguf@)p^vM?WnnOGEp}*5I6MUr20y}E!FUBYydZ}{M;j@zAum{wst)&v|7=A* zHN|xx4s`_i{aAmJfCD)MDF{BvK>=D&j)Pbs2RIOesdPYqvm8VpoiW-$5>^|%u&fJQ zXaOC3;-`>^V|yR4$P>!Z2s)jhV+klzWl8VOF2qK_1WdWcl`L%6fGeJq-5j=9wEtckk1?$ppjOqvItQ!GLof=%JFFQ|A7i|fCgj< z!zO<@xz;FbU|MVfy&TE2VMB?O19tyt#AT8w+=;y!LyzhFar+!M;ssUfWs_; z=NT+O0#F_@KNg+QSJkMR=-9vls4U=Bv%1x;el@IPtsDX`xYnIRuzYN->(4b9sBSjV ze+*TWd;I5K{5Vmt|AEO04BKpbHH@&NJKaN}LkNz>kg}hWs9qS%9v~$DW>5@gi=5Y7DJYyKWSRq}2Je0M^2=96?p&(~FlNBl~ zS|Qkvr~J5wy|69qd1J^#vc5RRGp_NCa~!C&-ZjXth3nCUyyV{MwNN8wsCr8m+{-qH zTie;2LrI%CDyq3f<{j^?L{xt-;AZ*H$0%-ThlGs1r1II^X>ULZJU2OG`Jv(+TYB?6 z=Q_6t(ll7_ISu^j^j6Wn8RG1n18Cq??>O4iuJ*OFz3s&MxXI%_pOMSG?)X7D+I2vn z(7N3Na==UgaPIcO6Ta|FBK!61-Q1PDs zJm^C&`qA^3@sdCNIv|hw)q{uf9Dl+h`0!`9FM*+yUOMS>ulwEezW2WGkLg+8c-0GE z_^$sw@{_OpwPV}o^a_Wme^4I@9`qQue z^|QbIx(|Q(cTN8I+x>t1?!Q0&^RNH?^Ixd&r+=-@9{|Rk{q> v}iHpaL!+fBfG7 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

    WdWh%0pT}n!`=m4 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 z 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¨8CMhu_Dxg;=Hz`g;N10M#KlpI|A!054e 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

    5t&PuX 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

    +bPbC*WWEI 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ⅆ-0Oj3|>$EdFVSrpC|gz}1u_MR0pH5YTN%r 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�+KmLQP;yU=8$c@N+5+o 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%0DqDc#R?-LG` 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 W zP-_=PS^Qwza;lwyp^xdbyJk$xd#=|%VU+H%{uGm8v?ztn$-}ODM>4+UTCDdrDPEcu zv}`v-KIcKhIkTL2Gl9@8Y;UxA62%-ARkmI&g$ zbnJq^dkPV&vEu@pd^+kJuV-go!rnX6M(G~>Y#yHn*%=KJ}D62?O0zZ)n?#L@QMFWY`sid!Jcb+i{drDXK@eick$ zexYD6H8)i3^YO(IT))KdJ&B>4<@67T(($h+u(gBU?HaZ(JBWLMI_tV+1mR%<8i?Es zBe$7=GSPsbBnxd?w+F!tMwCg5GW^=_d}7%-W&GvPxMdg|=fQxdq{TmxcvDaaCo-gx zn?(4JyrI*n`OGC($4L=Caj6OcOwDS|8M%dlwtf2%lH5~K-KgL92AHb&$;l9Zl*nNE zIwepjlJxXS;GhIQlXR?%W-h8=n09Q)4!fZv%+Tc>>zjapqy%YmLydH`*-aAoxSrox zd>Q**@Lm*${Uep}--cH{1yRChwCQQbznBPC@gFjYNa5Ik#4Cne6{I~1gNO?PbrV0w z((tHDIx&P828^xarc>jN&8GRj_<3!Y460u9zO3S_c>)9Cz?a7$3i=FQjL zSh6w@y%U^{$qWHfP6a^)ZE-Y5@zsp#+5sAI5bu2ggwY#IgORcgypl>RV?6nNOC9u( z=B$>I(9ngsm-0I_!>uL9wF_!$z7Uo%0pWCb8mY(t#?9CX{{IG-Bk&=F4a5fUB`y7v zeUf0AQ^c=r3?{9wa0ld~e+DX+L{ne*zR@nwr3z`2aXr`j2Jp z0(9+OS~=P`La&6o ztg4!vRNzV92Z=hKXB4a_;n)j4RuYx$2~z6pjI>nJJ0XiC>A*=D!6!%o5+Fw8gdL6T zpGY7NJk2hc5fj`}0M}jdbeWJquNp}0pY3A~!d(WvJeP8Vmnc{Vfm+FnlLSm!y(Uf& ztY=n^01dgIWnDemB=#t5N}&Mi0}!$q5dL80lmwsP^Oq{{`v}e@E8G3f-Wh!(QbzugDr(ii_H1N^gpq)+KJi-t z&d#ViiNg}xgGbP)eG1l1W1UR^K&c`DQZ!;@bkLr&iQptwRFRI_NhMVyBFKZ1UXoMB zNrvBqk<@Na-6|4&l3#a%k2{k>pCANCo}NUp_Ek>UrZjR@$7lj=vcEuFi3=wIkV+PL z*3*vn!s2_dt3(ViyeAwT5lQ*QOZmklC(Zp$;t?8&7sC#&0)89xKH8+ey>|%?UxL6+ z&d!LdaT93d+2+KVrUIz~zr@N(&3qi39 zZl(+7|DizuS^%yoz={AO46qFf8laBD{6~iX%n2Z2cBcQRksxs4|HHBu@|yoqBcO@{ zm@K!zf80q>;JHk)D$g;Vceup))k%w2gTf*oz zhBh2tWZaHi@BbZi1n2(lwx#}#Q?cJtCFYWV8LGTlk=c>F)at*e^CF}BBL;GQ6X8l_tQTV~hRz_dkAHvmQO6i>5FJ`}S(+96+v~Y)-h0b-r_PQ5_4R^>{ zB$k@rnkkEXVgI$!?7OaBs8^V{Xza_kc7A%WXJy{3yQuO{D=5F-&HXnReH<(N^Q9P) zhXPMp;70iut9E1`oyVr?W(js7RJC}vx>RtX#3(%bW0#5A6dqq zT0|#|<5uSnR#j~s!4QmtCoPv^^;$`Nxi>qf~KyXLr4}dLIRMtgeqTio)J}D?FI}5#k z;qA>~^IPsFIv_BV-D2S)F%ft!-3wViv(`D=bv>`QZX7-aF8tu&@cGm;Wfe`y8%nVi zJBdjj&Ykocn+VpA9dEcU`M$*sLCAoNg!7fBCJ(L8O|;MSG|oSmE-kIRU}WkU9M8!3 zbdhUvR`%$8@TsOY#$aJ~;X*+v77jm;dw4NAa=N}*)%!0vAAUCk*;^3T_nSbWs zdVcDz`!VpL-e_7@Ozj7M=SUjxYSXcw`M^wq}3MQ}JE~ zVoeL$_g6Ny0eC2Rm4;7HOcmg0E1ti`rV?TjOA9K1?ivHEiyWJr6%-K@6cjrud*N7J!@odnb^mx__|y zZ+-VnL_};5@8aQRgk!3yYJ zxiLy;B?H#MxRIKQZc+`(%0b_SFoQ&*t&C7sZo#YGX5mo;J`@p%2>@(+oCrTa`%MaU zSrt$KQVLd`%yi2dUCL5PR!mtL?W?9}F+me6Zz~1^{nZ&qm{#w9A*(cEKz;(uX~N1I z0pu9~igQv;qV-B65P^WVC9Z~I06#8)DRe?piiwB{J`&L9^hT|AIy!15a(X9fBCzUO zy-EhbRz{wy>w_dGSx1Qxk~fotff1FM6cAcKWc@F(Kvx09E{GES)IT4PT_Spg{s);%asO|xg*Jy`rInlz(HLcxzh z6-Wmb1n__rL!-l!`+(3|#9qov&aS6Jj@8R|6XU*5?TKC1COugEY*#_^u_1Wp_+h#Dk zz65f=8uIzJa7Iz<-n#O|t~h?ZEd5EhepgH?Cjj}Y3&Ki{q5Ybw@;^ZyIHs;}M{ zFSAQO7*}%%8oGBu-^WH?xkY&w+afRDq|1bv!5}NwMpYi!en&z;8g)j#jpwIFdmHlu&CQsRV}1G$pnHkQ@0noi zM_I3*jh4@0;9AJv!Az!(ze8A66Jwd|?-GeYij$@`29Sj79YJil`3vvFYE~B_r7V~& zXpt2UO)>u4DmT@lZyc;H#-b^Nm*O<}+JnvbfNWgfIn!0n(%=@qCVp3(w_(^ zHQGH#x0AK}ylp!J7b&nscCBk?aK2qp3b>2oImYA;6>~R%LWzWfN8!nYbXusS;pD8n zc#50dEwsL*AOuY|OuJi+DwPzB)X%1R*xkxpPYRKW%BFcX(MmT#3RURMrhU`h#(hEx zL(_bMU*5t7^D&o)Y3YArNa=1DRN9F!3SMBy)#(ti*m-Bx`-!?WftdxJ z!Yjwlgc)`WQkvR{@$UW1ec0WldUB5(OOu13ywk1Dz8e>aYNe+t=+;u&jgRva;N`#b zLwlE)klHIiXHEEF;AQ+CPxA$-eW%Cx!){_uFizy*j~>(d-K4UpFJjN`=uuDXCfD_T zk$Cgtr}fEhN;4`*Doj}4_Cgxmt)DBM@}t*5X%CY&7?mrVmxg6E+xsxln=4=YqtDHE zFMVnR=wR>kdwkf-Sk=!{8voJnRl#_b6eWbZiyrWu+RHj@4^%z;acL+^S8}~c4s%q2{`ZqjGcjOcMzkGDmC*zc!kzAmk zGm0)W`K;7cXz{PmEb}u@ZO>?l?R{vzPd+mSUkTo zUOy$5+}T@Xeb_Vp{UGTB_G+;$rR80B_5(~=_-w8+%g>2UC9m?!sA78|y~!SngNo!Y z`3^UKPWB7Re#T$@>Zt8J6#L9KO8o$_FaEG{?qzE@SurwzGC-BZ~ml)vGS;|G~m$EeBk7;8B_v#PN{DjRlh}m z8I%RG^b#qQk6Pd{QZc?c#2^H#03Rcpc01X%Pi4=Z+ue^-7fAX2^g1`@Wz=QPBKPT0 z7n-&rj*T;iibbG>)zo5Z#p5xz_*PprM@3?u{<4VWagSMlMRINLvV?YOmo;r=YM1^B zHS|aKxq5{*tzY#liu|&V>_(iMyYY(B^l`s;e`VHT?;q9oti1uWRd~uRB3}_(54H8L zFqW%NZ*!3Sc;qY_M!!{q`HVUmN~)2{zS*~C@b+XFPy0FrEWU1>?)x)TUgis(_+$OW ziC-bA9=VVF*Da<`#_Ia3OLp|vADy0ziy6qJzZxUTc70IkEV)q}DZZiO%sw#~Q&W|9 zcgyM4H^Z_1nwrukB~zZ$_8+-B6%jL=2dKBxs|L08<9%+zhxM~0c}#WLGymsLx|F&X z4LrZ~HU0HIJ)H;9)e%w}b8#GggL_^zO+#l-Z*C~eyIU(XxA~LaS)MJh9_}~D^uLr4 z@>`g{@M!MXy5`YkKFW0Yx31@5|86p!&!R-^aqO*ahX|gj6&Ko6oCXfocN7dk8p z)t1=%#Bsi=^Gv?xeZME>>Br-hqAar7NDpFROG40vXxWS1)B(RNw$kH@Th@A+bWN+;hEMz7tFFn;V}7kY95@+ko7gXj zJ^oY4bUHPCae$6x+)h`0E4FoUNGMg=48rWp*+d+58-8C2D?P(uP!8s``g?hX{#7!~ zCl>}skElMfY`(obm2SScY<`H4U!wleHl3nmji$LcXlPzo2s>1zD8n&g5yy^in=cMy z-98yAUzmqNPw`L5F$AzFmd;cP+paBtHjbrrbXCi91$jR`g+ut^WacYim^YTqHo$Zb zi(n0G2KGz*5mHJ9--1JUr9j+9pcCwqM+C5P8N}Qaq(LG#jUzjHD91MuqzVgUG<$*| zfTfX8P7=AYJ4lF`OhYQjJeQ7A3dBE%<5rNnyYCKax^6OJ{rQzHesvdXe^&Zm?HAG)HYfmxE$4*y=55~uN0MZL`xf(j|GUy#pBz5=o_?7thT6d#K zuX~57-Dw#|xv8kbC+rESYB$5^<%5L?@080Z_7os%FbFvaGWUag9|^U&L^C0zQX=ap z3|N!Z(ija%$%^+tv~Y+jI_9m8ov6{rkOJStV}bAj_Xiju&vos<9z{HvuE#rJJn|r8 z@Q%x`E00H>#~6Yrr19Lk2)gTvT=fcBO1Kyq#i%Vs(Braf8+`CFi1JPu7*!e zcxCzgvzKq)T^|<(cDKvpXOi{y`A33_`Cou=OKGWCrQZ-|{1>51U^$*U#<}2&R{kfK zI_Qs7Mh#?v1`!ngPEG^+{$?jR2R4dhFyetRM)2Es-aWRw&VxMflR~n0_#~G6ADwxB za=jGR8n#!n(r3 zz4gy>4j%x2+8!1p8eyj<1<|Y{&-L}AbxwP!FPcPGRB3Wr!|PaGq*Q7A^K+6<(k<#*RV^vG+K+}swOEc?7mkdC zu8$>7wI1U&Cv0`EJ8O}LwNV`3PHw(deDhkNJZbMkr7K0Hgy=WBMSh5&Yrlxv;frKDChIFs{kbhmk@59!rt^xG87~SUQ6Ha98DudehQTK{d$dg7ESlP0%lH|h?fl+Zf~mxrptauHW|M8 zzTQxxJQclK->?x`J6i+4F`XgFrRY zMBYf~Py0^G*}~vrch1ogd$WZ#qb1j|ls)4K%S;QRx2{{hPI-*L+gsWCs`a7PwUKF; z<&{>cnZjQ`TSR7@;8tx@qK)6jm}|5dRvWG%Gu|n1w%?F$cjmY@2!x#6WVls~xu&@( zsO8co9`r6iufufHo{>5Kp_pq22kyqq=jix$m!US*89V2l_D1%Oe_AS5y__XQHA4=( zj=hOa#d*JmJAdwUb_I4ZN_T~tcX?8)_+@a?6^jLN@&*(OVlQ2~hJqTew6hx*zl{`Y zj;3jhEoP6H`Sd=j;m2Zk3JoG&4AY)|*4)e3^s%^&Ew`S7xhGJmC#MmW>({gB&`@+r zUrf_ca#okr*jPdH64Baxbx&Zqs5xM|=UY@=ALGv^E5^H~j_h9T9;ZE#Z+qX?{>*CZ zmAzrd5dULXzpq2AyEn40*N+e;+NZzKH-Coe5$nJ4+r355r#7Q=m8P$!vLCZ~#^6gc zuY{SsHz2X&%S1omi5h6LLS51fit!GfKeu1A8l>17_+31B_)z275MuTwHM#)W#|IvRCj z)b!IRXW!`Et`|EhzSJp_CNlg`%NB)x=nDOzOGs9th zV_BK3XL`%96)5b&i^Pr7|6MZ@M&ky!`G|{oUyjmFC30 z$){X1zl0|9n|>6|)^|6tG~S&__XoBO&FIU|z^rCQTqnmKu?$^i&JMfw5oTvScV=(X zOn3IpE{U_OT;-3Bp2juJ&0(Tv|7=aKiBIpIGjE;q{XL)lmN~z9cYZs1ZaR7%q}mDT zpC^-;yYwfXWD+HQ%^#}F(Z&#aT&L$|X1-Ydb}yf&|4t+p&vEu&K0 zi1Gaq#we#|ws52{|3$_;yPx_bbt$Q2-R_>NB z3;$Y1N-Vg=tmsJ0e%hM9ZT-g>{D+P2kILMNUlvn93@_Gt#q&~i)%tLWnsYg;Xw^S! z<>mL4GO^XT0LG92-mremN<_fg&(2k<&DDgBH80xrD`M;Mdg})9YaaS*|6JAzB^ZmX zdDE@eGPyS<#nymisZ5%UI_se~v~xbHzi(b_q?T-i_HT4AE_Tvx=DHE`C0hF~)*cx2 z4RO~E8*HKcr+s6VCsq4ftmk#Nm!&SYq;7058E=#ZY^=o8cbBYTdIC_rbK8@rn^3KY+mNvN*2T$84Pgl{7I~H4%A~C z^nY5+#PX^ycTqfqZ#J!MrB50@9v8ej@~3voZytCz=HB6T9)H=``J?o#_T$gKX1jqG zXM%YrY0PJ1Jm;}0KhNW|&ISiAt{tEAa9m*gmpLPvnTjvRS1xwx;KyXN0%m1^00wqd z!X8PQZwtG^VPK*#WP3Z3jq6D-EQRNe1OlT$J2E-^#}I!@j`ljBV7ZrbCrRSz)X3WX z{CjK^Uo1w~9~7HcZzobE**z@NYSz82ATQPtt~s1FS~t37S@&|e|BL0ggl5*8f7|3e zV}EUcMVWMhXDNRlw?|z2BUW5<<2Jz|KH1;z-fnAk63dH~naRCpgZ?)|1;5tqJ|8J~ zfGKr&H1*GULd~3~>2jvb>sN1)a8dv4jn^*3mJm82Ync}>mrR~XKAW34el`8$i(%N+ zrkevl##54+BF)!a|2}GAo4Dr{4)3%*=Z%Kq{g4Luc9I(w`Hg=<3D6<@Xvy=OQTEIgwUdS zy|T;T{(}d7L#DU&@0;0W4vwaOBK)Gy?@(1HC{6M!`dNV z{+T;67Rg$Cv#&mwI?oRg=8=>yTd;I*yM}o)^P-s*JmI%;@6DsvjO=4dM&vTru2Z}2 z7nxr_zHed~aQfQW0yEU%WgBQm!>TG71+se_%HeecsDRi&6Hu+PqXl{<_uBfvJb@RB zTz3*ZY!&Y?ZP+H>AG>0kl(cd5H1)6RaZd0~`LRRBtFg%yNx^=Rk8m#ui2Zo+aQPC( zKl7?0D(*d3+L|dx$JL?B+lmz)PH*Qke4Ig!imAEu!WRoiqxn?iSwaJlVi{Vn@G`J)rI{s_=&5YWZ6&r8bD19@Z>_H3~ zXZPrpdzije?001KCtG7&zrOLo>r zYV&E4_1mLwZnrMJHPqVd{*8v+dbL!pWE;KrQp|ra$i#6)DDiN}5J#y@gj{`d3xI_7BsQrlw900cxf}nYycWc&g^}ICK^_OuRoLE^lOMzd z0Vy$8u5`cz87vul*;q;0P~VVX9tkx1y7(IS%@uocB?TOfJP}0cVoS;2jon%`>VTqn z9mU$yuG!n(G5apTdul`gc_E-iZUmSztc7vOtd@rGD}kJ(tvNx&8DLh7DQ>ayYoZbQ zW-IP|lvs!B)R(sLH15CN_n=x}XtZVaHeqi%pk}h6wT{`+-8^`&=QiS0JO5YE4FcP~y{s3$j&Y*hCwqcM-%p zfumnh#J-@2v4pK+a!}x@KFAU&PV{vW@54f!REDT{r67BOTffNJ%61)W%@$RGb*<9f zK{PhD*+$D?3c6K|OioxK>bos@rjr}D@?;lS9!((~^)voxf&f-PGF)5Vw1RRC1&9hNtrcoK+$yDNNJwgbg|P$W{}r2SzNHY>O9!;@bRA@ zdc;F+gX5Iq(LV#-`mRzk81dOqY6Ebd{PZhEQ&{$y!xjePXlQV)H}y8vO{D@UIAWnt z62x&Yo2)&TQ9yBa5=4|Y&s4!j(doE~^1n+M!f0LNk@ORy)Ol+evBe*Gj3j{M2W`@M zFR`>u=Q}oGc)DIC+cu>|EUiQa9gB-?PwXSUjQ!t`S~fZwj(jn-A8#Eb(o*8qp2}2u zQGQRaKD_=nTCyK*WJ+-8r*dXRS|3E(XPh7Mswzl(wxt9kgPDISowibxosCo#Ot|l* zVm6a+x(|h*)Y_C@scTU4g>oS#sdnSkDCzt0I(|hmqE!e-%K%YTE2&s|&4;gSyZ`E}WCzKuTDW4WTj6l5 zgZuoQz95%Z-_EP%GJ6zX@?}@Xa2YLDVO+1#C}UkUFK8Uo&r`aqmrHi)`~xK>HVBu> z9oiJ^kuH8TI9li1-C#J!!yvTfM3Fy<={=S%``~6i2PshH-rc8n-Ug2dtF-;6fNx>0_x+{p8-yzn@9$fmr-ztwp&P|& zNEr-8Ol9PKI8BSn57pj6JJCjWUbXJiK8wiPfn>kQUXEuNJ;m==`JtW_T9?PTn(oGC za6aQCDUloE6H-z#pB?4PTd&Z|iejWxUkT+OYR8EC4ox3iv3l9Uve0i)Jv6=E@aB?X zjHT{1@lVl)(yJwqw7cJuP;>C_r#Jn?C7pa$5$_MJm94c1Q^K|K6VX;*Y2Y7|8-6}= z?Z``^{3Qr|o}lg19`;%-KxyxSIlC<0aObyHj7;xa%{`lk)3uMRohR(F;bjt-5HoPK zMn%YPY@CP6QIN{wkHUfJbeaiJ_HY_6E9B_2yv(8stqXkqKAuRe#-dhxQ4z$8ZS?n0 zU6@AEPKZ1{En>7)h7&>TR#|yPE$p6E;f~KdKu)+joP#dK*@fM{~foBWOAI*2}(*j0zJ_!zb6ddj|fum|8d&oOx%+tC|*(O zm5FGn@*@Z@oQhsI6ANYq)537jxZG-3pk0o1(r)&YkHDItHdPbC>T*ZETdOy_eDOaQvP0NaG9)wx=ph zm*YmWBUum}t}nr--lm}p9p)rYE!1ZyKuq99hS@}zVAqZAN+Bz8M%V=pv6*RHuV*IM zy)ff(wjkNSiDmVl`)y&i8bn_mMVg3Kt85IfPT_a@a3NCna8*1azq>R%ylqNal=V}L zU-92pu;{aTAJH4!N+2C3RJa+KvaFH!C>J7(-P8*ldw-YlOQOR9VcKfQWr#~*xG$Si z`I=uFIJLRT=v(GJu}^CKpc9z?5x7=U3jQdZ$JU``XKGX}!(#pkRwN1yf)>C2&B1t zFB}#KAz|rZU^X3b2gZ@GiQ!D&?$~Zn)93nF7-X%T&7ntNuM#B`{=okW<|_|0NGit! zdz((LDNA2`La981rQ>$7g<0rT5x;JTp=&n#Q?AP!*!C>w6_Y-;<^6C3!o*KcO2EW8 zU9t7iHE|?UI0RO{3JKyJ6_DK&v(4o8ckC{m2A!kIkBb|b(@onJu?!&*a-*gkJ7!nE zW@1PpY9tSo*Seoklu;ivVcq(%F39P`*X8wHEPaa z;X0Ppk1VUVbU$SbrGp=EM2FwJn;scGE~WQi>^SV^XpNcGPX&^0W|~&n7Jm1+h7Q$m zW(9=bXaq+B^Mg>5kNC%04BbqM8+s?35>4OV*W3RbfzQNc8ku79dR`|4L(|a-Gb)MXpCd%)G-{gN-$O!;V|HFYJn+nhy*tpUUl_S<~)o z8W%a1xn-qwI)h1rJ$lPGn|@>V1s9fi(_pJFZ7c-#x`}Nf1SXGdE_e_=HJUa(8U`k) zQ=WCtoj;-ph$jByTG%3XgLDr(BKw%`zq@3N_oQOv|?a_5Jm~a`;N% z@lOb@%sSmX=&ydy)xjI!V1u|xO<)4tk=b}d{C-xF@);)S%6T=*MK#+cc{bQ~5M}oz zO_b>AKO1KoROf6P>}{JcotpM2o2rxYvZT*eE{5a9tO{L#9S`_%#=Y8Pck3w8$HIz_ z8}2^l`p(A8T_t19YgFA(#XHm5_aVpgj`m6MHTOHRHO6icGl%VzW0oetsYZX3Yy@)W zO)KZMoEDrhv7bUUHaqS!7vET*)l0&K!9_G&FxoU zU0uK|PQe`~?%W(m0tY09rIKezuc$umw{rY4aMFiCQ9+*KJ500Kme1vulg@Zf`BZo& zC<6v5(IaeT$;*Ko3zE5y9vQSn<7zGuuhH4p9U{Lo**O&0&pGBzj5t_FJnOV;99+!I zo_mp5=G$pj`JqA*1h)2h&SQovZGG^24<`jTb#GV=ph$G0?a*oZ4dGS#v zHJMJjUeI&vmQRr}&dBc5m8SPMh)@ zNqh{9Apan0+0~ELCLSyAdlslNlfs(Z`C=?Ch=h%x#_@)CmRZ8+!nL}jwFRY{(>CNV zIQP0LVWS9`VSn|r1sT^AywgRQ({Nu|T9A0$@p@U!R{2GE#aLQpjhkFm&xu#mLY8}j zg4^spHyRe@h3DG}(73KE&zt+h);if*RQvIQs+8{2i-WSkdRm9q!ljU9ZU@%&UKxRo z;39ccL1bG95i(kp#!KA6rGjZw8a`q=*Y=d>q1`)q-=7t1zZjv=H!g9)$eYN>>qhlZ zo|L%eb+FA?lQN!@Jjl}giSC!$CwCc7DGfin%jZ#3*JjYf?m?#9gWvZ;>t3M-_E0wH zaL~?b(n`5rACF{>qLKxr`|`oIblj0#o5Q9$?cXioaAfL((~3X=*jNaD-xO0ZDNI!@ zDT|`isT%0ztm&of-JO^l`)e4mn@sv!1tJY8fTSlX5 zd?6eJe*FjH9<1f(9{BO8*N4(~H@mVN2afMT zU_}P^%%j#X88-rj5udzM9zXkwkVud|`Y9453A-}p&H*SIxL*>Wh3zecD(GT5T#bVh=LsKW1I} ztj>9%FJY4Ce=jBhW1OwBxb|z`r8LPhQNa%{izLrN&72>`Obh)C4<~!u?qnWFSR3xT zSt;onZgVAq1@=zT>2fwisW1C9@A^i3o&{xCI)b?7y{F^baMETIaAXv)YvI>9;EaBI z#zf}p2n^m+68QdEwz-JkV1oIhK|UO}$ci4=zV@^a* zP}`uOba{l($mG261w}XpLdhVe}Dh_`U+>Sf8>TY{R9(6mG z`>PZg+pmxosDQ@8Pg@cX$9rBnO`3|J>)*l0ut0Z@ zg_?!-BKJPZe_YwZKqYp?y_%~mr<5A;dYm|Wc+qnrom|(s!IZtrLc*@b!nMPAm+vN8(w1s=OB zm~anKVvGiAxyIm` z>Zf*Nh1Guew?^92^~a&Z4jEiT>?Sc+ZuEnGg|As=T{%an?J zgm4%7NUsa}Hf#Z1sf2h$;L35-$5C+^F_%&-n1ok@Pp@a*rd7MlnR_kvH9ww?Bg287 z6_M$V_G1pw9`qJVdN}AK_N9yQt;u(RcsgF1_}}W%2zW?H2)i%xQ-nzU>U}cl6J!qi z9R=YpNfy4sxoIocg!Al^fCOUGM1?_BX}{mRPhB*t)V0NMMqkj!z0g1!uGgL-CH8T= zh8WoCs)8W}zdOE2y>3A_0i{6$3M~CR+s)uoahE)W6=N|%5Ai<6f+z)XIY#O>t4i%q zHbeovAyj&Dz1(&tG?s>Z;(aWo?`|+$Z{TSXo%*v@(a_gS5sG+U@eHF3?Yw>=I!f58 zm%7d_>-9M!`t%~}OkQE5;W*|svJLDb3@3<9wev%95i0QH66BF5-f$+}dxK>?zgO-w zPq<%kqfur+rS_@JpuV_IE5&UNf7xGmShffhpQ+mEhIC``*9}FHk33`UENgVZINaUE zR5@vWWAUB>%N-zVx^gWis_3Q`m}rn6VN^Nwr^kJFpT}GFoQ)qI!s%FBTG(xhF|uTo z95h4?6Bh(9+q-Ixt7GIw3(>=jH&O={?A=XHfN4vBZ|%1=1a|R7S@;z|N^q76eKD%_Vy<>D=6O zAp7dl|DkH+E!E@YbQ_kVSs|Dp#_H|&q(fhF)Nk;)1o9FT$a3M$Q)G6^gvU~&uz*1a`lHhhkt<_2Bvyp9c}t>sqU- zJe&k_sF>}RNjD>tMVI(?CGXFP3J4t85+qTEcau*2&dX39uGN@!B^Hyfc{Qsv!oZJ@ zNxZsU*zK=xh>srpgJ(jMU&lL>Gd|WfWao{9m!Z~Ti-(``JLM|MqrKGlITyP%Yc`=^ z9;yiF1mU*gZh36L89$;ZwH@s+5FLsV;QOr8ecSk+m@2`Rl}ZYGs{_WPHObE}Q}E-i zN5%WcY&k-YlDqFER3u^)sjrLR1mh)Uf?p`atI=HE75-`dt0K9k@%op<#GW*qM@n4l zb*UiXUh9*J)bIotOYc(YJ1iKi%?@ZPh5Mcx@A-A+#KB9y%Oi< z;kz%WG+faCy5ha~ZyF={`RDmwzbdn65`oiWa)GrKjle52y0SPs?s z1JgR=>k=OCIgA!X;=Vn5;O3I~zW{bXiND)Z=u)@3-E?kdr8`IKidMTfxD+BdQKEo^@w`riQ)_>|1eZh)0k z;Jzj}p$mR6gdxP=2E#AHe{-d9J}s=_4fAEf7~U?2!}?))|Ax54CYB*^5ggzXi+IH0 zWHF3c>|qzzFvdltF*t3k;|C zQ_5CGFO+e7<&9F=ms|dFb+b%kFk`gKyCgH3i7RFor|qmo zio7u;f6jik`eIG#WD678yT+Ndv#o8I9ozrA)E?%x$=K|0le^r!ls2lr z4NP-`aop^FH@tEBW_1Tsv+c_Wy1k6;c=Nm8S3EVW>1|7UE0~T4U>r@|?eB#%d@J3S zw7>^`*?j0@1R=OM#&ysIEj%gTXWn*rV`V!8KF($b&9)+M4;~C|_)6b|4Qitf1*D2;meENOSMaLk1^EZLDfI zL)7UqWf)^Z+1TT1D9|c*# z%2tp814>;We?jm82o8{i5d8!2`k*@qd;p{!MxHhM|KP#_D(`iWhrRP)A3J=@ZpyRo zzzX^!P(HXYgzWfW4N3^X8rG0_8GzvnYuEt@2oO1ttl>U)I3r~a@F0K}2tdI2eE4Gk&>KJoxIp6Ejj(vY4tdRH@JmPhKmm+^8x+m}w7>{h z!3Ic#J`4aDltCAW!47~yY;+&zfu9I2ocI|R`N72mpycfWYdN zoPgXFRV@V;j-VH&7{K+~36fF@wj9g3APf$O4^T!%>_ZX^!3lr>kO;&)e8JU$2@ke_ zSWHrS>_iY8fDQ~F67mZN+(`(?gWvr_ZQ#Soe{h5X@SPWcfD|%br`%e>>C((X zCw^E73fCBx66wi9`XR{+j({4nUr($6^N@iI$RTOip>^aTl9a&^qz4X+4%wJVc3|I~ zFh__i;>!3R;&6a5N?{_lOhGwR!O7JPbs{t-*e8NvD3+D^DP0MjVk)8{|F8iFjE*JA ze+n4nARgj_9!i8Q(nJ>+;j-+|7xZEw4#W@O|3f0y1{kc2X?VZ^?BhNb0M%4t8z~S9 zB}p_Eq_>5k$yMWfU1Qp*hc@Pe4_pK$?!>HcKoac3Jjeq%&QKAw1d@!vE&hY*x2O`6k-6KJVC5vzzG56e{5!FW+!NUX6S|He;Sn*zHx@n$<=zSfb}5BJUpGVpk7=4!{eP3zNwvQ zN{T-O!3zAND5+61c9?edr)zQN_<84d`e%hm6M-J6TbX5T31~nfs6vUQgGT6j0jLQw z=zvP7WooPft!eyXogW}O@b&CndpdC8;icEHhE}Sf2!z;!YF(BCq85`j zX_eZR&IlIz6seJJshGmim4auMe$$u^*O{)VB_`y&u_^ha=~BTdoni{Cy=k5HjGU@z zp7!aa5DdiOsh@h^p8D6IBOdC59HeyyD5BbFp*~lmMyh88YSBrmqka~7=0g~}mi~i3>_ZpagO?saHZYg^Nf{9mc7YxN>RvtT zW0|QwSZfzlE5Mf>N*Nk|zb@=ObU_#>DU%s&r4Stdfvm@_EX%g6%f2kk#;nZFEX~%e z&E71&b^$%;V1k-#E_r6PGAzyxEzuUO(HqFxmN2rIjhee*2Gbq$~rC9 zX06t4E!TFf*M2S7&g{a1<)RMR)JllG`9s*QE!(!O+rBN_#;x3cGOhl+)!Cx0`3ddZ z?k(T;t>6AF;0A8sR%>83A7Nw56oum0{Y|7I`!(ysm9@AvjE z0T-|VAF$~DuTllD0Ix3sKQIJGumsDk0#6qM_eJqeum*2`Fb8+=(N-`|T`&gYuLqZ~ z37;?uo3G)DuwG;^xK05G+|LwbD-1uu0jxj@=dcd%Fb`iV2!9s~w=fBRs}Df`j1hQ2 zwr0Ui$N&=euoFKq6hH6}CtMJ3$`E^N5if)SWUC~?OA{+>w(2byYpdRhaTK318mBSn zPVt0R@m;uoFcCw{IA-ezfCLk7>m0oB40G!g9akpmiXSBez zG6BGkAMe=fgq={Dz7rw67qc+ z@*5#Cw-)gb?BxSo>l1)MM>27>PJse^27Ney2kh~G3gAN$aLY(=fCpTw3pl_KkOWDb z04q;3HCOWouP`hVsRM&6EkDj~-oq4}fHFh!J!HXWguoLhz$7`q0az;&i2uY15ReS0 zAS&O(;|xFnaf=mfu{HOzKmYT}x^hQl^Op{A9N%IRRMb6;>tv5r6?j12jpOv`Ig#KnoZ_Ycpc8Zz7+-5P(3vAizBk#|RVv zBo{M2fIuXNjkOl@5L_$F;e!J(ve2#o6L`S`z{^QDwNpPey{7a-tu#vqmP^kvOds6z zOu;0z08ZaAPCGybWa|)o0V4x7wr0Q@6t%*CN^%Gw21&?3C_^<}*R@@Pt5iD}RZrR*pUqQ@m**Cwr1aTUU%qT zqnK5PD=qW16#~T;6LvXU0S6QSw!SkX-UDM>t7F5)J@|mw3;-(6!4o*dTyM5-|29c~ zclL>Xc5WFo7H4%i0|i(^@)Sf4O<$`AP~cAkM_Lm#Yu}#{jJ37ywp;_ZcYn7v3pYLy z_xs55wvM*7cH{ueFlu)}kKn@%!|-Q3cWmFoY+rZveY8h!0B?i0fB$zNi#Lgp_s^KO zwxah!BLGh?G&yrM;;`UnoPc&S0T={-^|j76Bm008IK%+>i8FUMfQPt4l}Hh3%QkFc>xo7ju|=6rZ|>=IhfnEmd7ZUm+3WKb(p7rxta$z zHgh=~uQ{B@c{Pu@*_L_b<`bIBxt{Mi8q>Mumie3Wxu6ev5BqtQ+4-I0Q=St#qc{2n z8@j&Pd7wKwrB}KXx4Dr|x}|SAr{^!Ef1IQnc&Cp#sfX{U?`Wt)mg<%|tGBxUV)}_| zmg-iytJk`%!!GH@G< zD*yRA#BV&uN9@9~!Rc*hs(+|bmY15lJ|354ZyF$f&tYUCe6)foqE~$YXB}cy{eu3O z)px!9@(KC=zJ+84g!M=9bzzT}TlzQ_B;PyfCdl|ANfe!DTgnL7UF z6DsF_k3RQQe$<0L=8Hb*uYS;&e%Pb_<1i<3QFMsdLeWtU%@H4;k7pUj|KJJIU@=w3^A5-;vCh$Lg^l!iTBa!cW z|Me%ori{P(ABypd{Q1Xz_OHMEUuXAQ{@jxbe)!M7{+mVn1D4j8KT|v&4TAYNcJ%lW zWJr-C^J$kLuQU~Z=gf{ddG_@AkYrGyLx~nOdK76=rAwJMb@~)))SW-6R<(K+|0__b zN3(YI`W0+gv17@WHG7ufRJ3c&Zgu+>Zd|!@>DIMdl5JkSdvD$i$ro^7!Gj4GHhj3J zTEvT8`gQyma%9Pq=Q6f@dGBP*n>ly({26p;iHb#+Mo1Zdb!yeCS>HAN8g@&~v1!+~ zeH(Y~illXWZv7j0aN)yw_co4u_HpIQnKyTSw)k_y#Hm-ee*LXGxc=2gD zjwg&AeR}olL7I0Txchtg^Xb>`9Nqp{_WSww|D7K|u;L4lzyb|C@F)Bbyvn}@9emKP z1tsiDvI#AJyb!|-wZcn7t04Rk#1NV4ki?S)ED^;NRUA*j6=M<+#u#O6&&B^58#>X( z9Ch5Wv=(_xX~rOh{P4$t^3kV=5X!SCpCDG?&^#QAoRZ2a_43imi-z2iOZKSDXP+Iw zShAvdMsOksGR2cJ%QoG7lPWCXjHt^x?WFF@F!51;bE17h7$OMy*qoElLJb9y&qFD? zlhH<3%X0^Lp!|oU6+n2x0|k62i6btQK;Vf2^jTqx9oBf_fC38g;(#EsI3QCoJo4dE z4-Qy?(tK8E)e8kY0HKR{xbXFWeLM;RRu@2+XVNPxR2151rJYF5X$^7|+iV|$R8oRU zIzR@04)6iPiW36OCxZ>}S(gI@Tv&tLbq6R20el89VqJVfNb?^L!X;Op{{hZD03RJT zSVJBTbU46?afcY8BQH)Eg54tY5o}OvHQu<;YB|nT+mJ=hZb~pCg_5HJc6ee2A5M_x z367G$=ZP?U2mypCz{Mw3TnVaohye;HfP*!ERL$p!9TZq0-8DeqNC7a`2%!KF9Izs2 zPaW8Ri+}bxq1|~_0Q&%ppZyr^wBhuak%7 zkY|L8|EX6AO6N(FqXXnY0BU=U&1VEM1~671u%9l0gCF$iwBTmh%2@5vO;?fajp1H@ zo%N#RMrfV`Mvws?87M^nYXt5Y$Zx>;M1Twz1_A*e1dI$qfdMuMm{R`*Xr}ZZ7p!oh zqXC9E0BJA~$bkC{?41X`vriwNeAE*yzxDLhr?E(ryDexR9UO4rgaOu&p`>{bkl_ml zbilQDfuk2bgeMTTSUnD4PX`H`-v$T3kMKpNd?6H} zhEk`o^_@_CuQO6U>^A}~1R)3}bGcdJt`2Y+9h@cpspv3Am@c>^K0Qf*=HV|qNk%^oS{}-qAMMsV-Pci_5 z7br=|6$C*Z8_2*sGGIUabzuMsFjfJ`u!AWC;RN_l!aTYFB?N$Bj$c4v9c7S(c@!W7 z0rQ6u!4NY_^>K;T!`=$QYEp<^u#@_~r({nYd*-=9v+dD08A2EoxqrQB~3h0tV1gk0LM#I&dI=0#@Jw9aKsO z0|>zYT)>6|j=+IBn4CZkFaQt?#0NH|)Cyqw0}t>+2T!0>Cy)R3j{*#!1e|(85%$Ir zAHZ~_3SfgFuQ*YwUez`gg%(D++9fNAPI3F7170}A5q<=VtQ^^gu@1taNzG#)9-NAr z$i%5!}=q>|#fEKJpb7vN2+8ZW23L%U-rC zf<07ZISV4p)~2$b742v#wAa&h7PSr{?Q252TGzf-C7Lx z)fTww;q86IH(cW$cTv7QZE%@u9pqjnx6hR>Z)MxD=3aL=(_Kt|bhX>v)mE2K*cC5u zygQxZmKVLo1@D~3+ulc|m#WN!?|gT=-nF?GzucuSgU-8O|Nnm0zHiF!fUEl7#vanZ z3BGKA-9%sqyGFri(Qkw)EJ6mi>A@MUOoPqW-wJ=&nS6WEk2G9jl3_R>{@@22*4knh zzZk|bmhp^fTw@!T&bU7wCER2uKN-qVmhzOTT;(aVfgk>W9*<1i<)~zdQ&H$b7w%DJ zGoP0cxj#35x(jXC<(6&aWlJ~ZOS$p~8}2dYF+UpAp%(S1NnL7FpBmMvR`se`-D+3A z8rF>V^qBc^;V51I8rMk45-UGV=2-t4*ufU|u!&u4V;>vY$yWBV15IX6YdJ@`mbUAv zl#fp{8{65|_O`j*ZEt@Y+~F2?ox9KvdYHCD(^hwXP^!)8alaeh@s{_z>0NJo-<#RB zuJpS3%{~&d65jzA_`nHXaDyKl;oc@Qv|ZG1huhjd*G~AvDPD1lUmW8Z*EpG{TBCh6O41L_;REomLS6*|Q-yG*T*ZIlGOvn|%yx&yfw6Aww zbfX`C9qCC|da--%aiFi8O8Z#))Tv%|t6v@KeU5_DpFZuVXC3Te7yH=Bj`OWIyz5?{ zlGMxIcDKJB?*DOz_t}4*c4>cI?s?by-ud45RMWk~cE2><{a$#(A0F|Er!(MFB=}qt zUh$Ea{NySBcE+Q~@wkS3f|Ni-J`1Zel z{QWWv{LF0r&M(g9Kn%oS&89#M@~{6M5CS7m=l<_P0#E?s@68HO%~qhJyujB$U;s{_ zeiQ)s$_xbm9v}oxAOsMA2_(=3Ul0Z_jsh*j0v~Ju%S;2)Yz5Y(1;~^42bm8ahM))UVP7-g}4%)DS-R-j%&Kmp5a1ngxV4-z4Bu^tKJ9>=Q@3#J7k zQX=m`9IcQHGk^)a;E6Wi9$Ww)b^rvJAOq0QAQRFgPqGacGC&$qyc*F87-$1xasy<5 zB2)1IhTwieAPI`b1MVRM#AO3cfOd=^k5JMmj}it|5mxCPYcV4eGc!~D zCX+rY6Syu@Gec7}hmSLV7s)df(;G)qHCNLw5%V-73p80%HfNLaN>fl?6SZQKHg}UZ z{mwSu12=OsHG7jdi&OD_(>;Q-vvkuqo6|Y54mod4IU$QVpVK<8^XQ_JMW&NFr-UD9 z4m-nBJgKhf(2hF^OXk3HJlB&wb#BZUF7VD1qe4zS+tWVpljmB0$u;G3n!e<$>JvW$ zR6q~T)1tuTDv&?9>Ptkw88iof$fMCN~09ix?mqZbVrtyNd+v$=D{DjmvQV2K7Rw1OOrG{v2=aH zYe^UtQX^GTor@(Pt}`b!g$4^#H!en9)mMM@JarXV4Qo_~)mV@9Erk_XVWd}=)mi_aH2{?r zS|Oxar`1}o_35M)TYvkbTDR3(zg6=<6v;Tldvp|22KI6=2`1UI*4-4;GU26=6}MUl-P4A9h9r7GmXVwkFnM zFE&IZ7Gvw8VK>%eKNe3E7GyW9U`N(uPxe1V7G>R{V^`K?Uw@WlM+j!)qGe~+W<3^U zPE2NRb}MR@XMa{cp=Ts=mN>*nXDtk9p~7c%ZCjGoX&q81h&DKk_Gm-sY2&6{l~!uu zB4@YuYQMIyy!Io+Hb^uUY@;@7pJIg`#VE-3Y~MC8%@%G&VrjWzZE1FH|MS*Wfa{G36(RL$TcYko5S9|vZdNV3^C%1ZsHhLYG zZ^qVow-HyDJ2^@9H|H-kgigg3Q= z!S;hsn16*UGljo)gEf0&4KFNl+Nh>KW> ziFbr~w}h7%ikb3=fi{Vw*otGWiH-M(ub7LcaEgDnin~~h2QQ1McZA`$kbl+gj&nDU1KE(5vyU10j}MuV;ct*} zw~!lIk}qnFZ#I%A8I!-Ll5O^qGue|f^^sk-lRuf1;bxO(c9ct5l|$x~VK$Xl8I~KR zm0$LiW7(FyDv>34k#CuoVKkRLc$a%wm__uLRXCW38JPpNm|^&s|C8C7-)5Fwww9ln znt!=>nQge4t67_6`I>n+o3|O9aXFM*cbdc5ocXnzh4`D#nVp$6osoE*+gYBe^_{6W zp63~#$#tAf_n!0FpV@VvWw)RInV{))XXSXH3tFMkIiSHep%)sWStFWPwwxo{qOrE2 z^Y@`InxhNspz(O4J6fb8q@KYzq(>U1{eSnP3HhW`+NGspqEWV@Uz(;Z^-BP_rE6NJ zA-AO2IHz|Ss8P44E%~Q|+Ni}hqcQkzkD94rH>pW@she7=dv>Tfxu~a_sbl(NEefl< zT5GEsmATrh$9izV+Lfh=tkXJk&6<`$%&p%Vt_{q6<= z`x>wVTdRvS-`2ZyUGE;Sb7HrDTeydt zxKSdwiyOIhx~m(zvzxWATf4j4yFHt`zgxV=+p)u& zyw4lG0o%OOo4wl`uGibW<6FMvy0+)rzVBPX;2Xd9o4VS z4_v_)oUrSg!5#%EkfS)9gi9LGm7#&ev89Lzl=%fp<^%N#4b+|1Kl&1GZE1&q=f z$)?v_&bvUewv{Zaq@O>miH+JA5$0#JYkXaEDM zz1nHO02qJ@R=sM8-P?h?%>#?7eYbwcw$?8#3?x9>t)1Q3-2fus2Dlxjzn$KB0@ig~ zb&>aO>Gs^c4B8EV-Dw~NnxF|#0N|~i22g+ssJh-8-X`w-)AQYWYnR!3%hGUw0TBM( zsQ?F3Jq&Ij0-Au@tA9NO7Jl9x9_3#o+{OJGw1$9wIJH0uG)AA|TjF;s$iS+SLFDd>-hp-nfOHe4 z34_rhuU!JZ8tcQ zpQk6^^fv^gajWRjzS+P2!6bm%A3r3RWgeIXBya!)s=W#Bend{+_nABOxnuR!w(vFG z;!7+7sNDc~zg;8d;dAssjXoj{G9CjAVDWqZ_p_hkgWt6&w)GER!{{Cbn4cr`fpMTe zBX&^k zA?-6EmmT#C4FjynFqe_XKNWuqZ#vC*&|%bnQ5!0h8nG%*iTR{970EQL*s)}JMxcQq z1rCMtg80Y>=D<9C`Vz)rFtA|Kr+oYR{R=p-;K76o8$OIUvEs!y%Q}7xIkM!*lq>gS zjG60Ir(vmD{tQ|IS{hW?y3H4$M}d5F5#nev5XD-gnQPm=jXSsQ-MoK$`~D5wCFtSA ziyJ?V{AX~&UmGWX4*lQ_0|O(Nej6Zlfw^__-9U?hL72VE%bP!sKE3+&?AyCn89l!I z`Sj~Ie2;UpbNl=u<3KS`3I-w67IxY7Z~$xig#RHB1~f>Z6n+v;NMVH*UWj3a8TQ9v zhaP@tl!n4h#TjUxfe3$E91UU+!FUH1h+1~3Wx(1EDa1A#Z6fZ-V~;-m2xO2#PK08S zMjpxGkYMR&6OvB;WMf_szId992OfZf8UxW_U4%-031*mLj!9;jFFlE7nrcpFW@c;B z)>&9*1z1`>Fj{$_5CdV*M2s9}Hdop>aqN#TH3UJ>AM zrgd!YNUVy z06q)B!i;SNLA1#y6E$&rLVMac5PxeK7W*L_R@)5Wqh@WL-c8T#S4)qjxXPc;k*^ zmUrZmU-r0Hlg9_6z!`wBj{|{wppOqL1pi_3xkpuwdg`jLUhn0uOP>1c(ZQHc24?^L zPXJ)-GrE82cC!wA@WKxdk?h9j9sBXgxiyau1w8*22e}`hPY|YC?Gy3ZZ_mBs%6|`a z^57R2#0o1IE^-F*c#z!yZLO^p%H7XTfBh|wkH5p>=l@yt=938aiY@oXM2SIr4FM^Yq$38Bo4-5Jr1NvAS?|Ofi5bWv1fg~)U2}wo46sl^1Dum2D zUihN(5v>3q5a2$17r&sKaECnXp_p0-#5J)nh>!8iJ~sHg42%qi3Dltvp9sY$Vu*-T zMA8teI2O;eWd$N5TH=}r6e)^vjAT6j4;Ih(p(~;hTQBNh=_nS)GRkp|bga!9?`R)2 z;_-iU31K1}l~cz+3UZLI+M^+%qsK#5D@1@Kq$3{*$%QF$lEq0RC6xoG>_u{uoa`h= zE(uD@STdA55#ePt>B&^8QkA4^C1ghF%8Kn}E32%fEg>1pT#7|?x(p*5b8^dI3X_h# zEGFB$XUtRnk|D!vrZbwG+bpL!wHMBG zGU;(S?4~J0sFCKJbDs1>ojUK?mEeW*o$y3jJ^u;NxZzWs!rLd({29=MDl};WO=m%^ zaxi8dRB;Qfs6}1YP;XuoJrZT+wf`&^$Bl|~q|wT#MoAi+j=~e9vUDO!UkXzcnzVnK zG4+i~o5)X8)^w*lW!6lk*;C!zv@0PjrAvc~)T9FGr$AMz9b3v$qK+`6POYj{E5y`j zUX?K_ot4%2xz(_Wbv;>4=2#Kq(Wr{^DwI2`Ti@E7vKkYv%xTUaTbfq7>UFPNm1{5g z3K)+n)0*-GtYHru7{C4%u}>MQKl6Xe*vLv&CW_VNWShjusTTIKob7B$Dw|8sQkIW| zU8iVIi(06F)|IJk-692R+SbZ;wyS0BY~fQDwcd8OvaM|^d5e-+>W7@bE$(G~OG@K@ zR=D|8D~Xf~-NPa`l+j(%?@C$!-R$mlx}XGSTOU%?kw{fD&!yQ)3$xi!Id^}!=k3US zP6Xcf5-GMT{YpEVn;WU(m!%eIFW$<#lFc4UzVO}ea`H)F0pk|Hg=}tY`)c3?NBEQQ zy@-Oz$lXhN_nXBdut!YmUywZbFZzve_S73y5tHb>BQC66*9qC%gt)~a=5M{If>nsx z*o>C@Z;gZN;RgRVzYI=EkUxKNx`tf zTxA5G7r!Iiu{_giWzWP{%N5ygnm;+?A18Uo7@4qze{A8;MvTFBj#ZfZ{NVsogs7@r zu~*MD=lx9O!W72wXvsWi5&uJqBy8m~p2yhaNy73zC4gT}I>iFE4u zrW(hiMm1zf&E^#sal)XMb(x`j>oK#J#d5ZFm3{2%=ve7+hC?8xi_D(lf9$sRIx0%ejr8T~BElwr> z`P;k>HOIMZ@8<$o%)b`4sFfV;1V&oq&7ShI)$Qw5$ql{0^z>(VP;_q(4ur~iHNz{Vu+rGH=Omp}FCcP`hp4@k%7zRNGSAMI-&c4t=~ z`_@9geUG0U>$iO9g8xVWC>hBIfCkuc*j0JQmvFHMfBk>qf13Aty*Gf*XKV^+ffaaH zljnD!*L*|uW#H$4;CEfmH+{C2euB4r&~$%yWPAFDg03fgA$UqAxPTqfV*+SYUZ#Ow zHciNve5BQb45(Q=xPsGEcwZKQHdBN_$RsvncFgsJ+1G^A(syMRe1nIC&^K+N_EARY z7+m**G#Gzz6!(2Q^nx&$f92+DyoYa!1Bd*lf@NoeofmmH_ugpSOe|;uY@) zdu(@yk_d=x1%;KkjBjRs?01H~mxz}~hla>}t0;?QM~ITAjhC2#A~bH%m|1)nehTDa zDoBCMHH=C(iGfIr{uhdZXpHpcihT%koq`+E{RZv*l@eZfIJkCx7daR`G&rTj3^m?j^0gB zlV%u>)0lb@dHs(DQ>qw_^_YVZIFgH4h})Q$fT>ezSd>*X zkdzm2-!+yfrc*_@nZ`$tH@B0MsextalV7!iDAssu$&>u2mQKW$orrf*bB9}rgSvmE zagF$q=pubS>50xbPTR+f`gW5OrIUzwRHiAHOzDV0=z^6=L~V$8r`ekc7n>H?m67Lx z);XIbd6IVLaaf5^%!!yfa-D%GdAg~DcGr*w$arAsoBQXMGnjzf$(z4tX_zUTVYzjr zmy`&3eYM&DlYdBlRN0r08B)7Rk>7uLkYG7>{t1e-WNr=wom3>9Xh@x*H?|o;#SGAsSxQ26*P#PVqT^pXp!P$CS!=Q)Z@_wAhX5m5#*+lR}A>GWek_ zX`**|cD=}L2I`Qa_F$DblnR=SElP}qNRIOh zx1fHDIH3H=UkJv8Wr=p6SZo_grb`!+|EHp6cz2n(n3&Y2!;RhY%7l#FL%uxNjv;`yKwC3~!zj7K=3-1MbDq+RU+K1e4wYiC|TCS{J2 ztUXeHcdBzTm35{XVE;&&zp6sP${xcStsF(I?iQoHDj3Vktj`Le>jJK&DoN+MK-LPT z*s31tnq#6#A;xN5CgyCA1Fus=uCr*a&C0JWA+99EuGi|W1#7SeJA{7&n?DH4unp_3 z3QIu_E3p%6To4;U6pOJLn_3nNK^p6^A1hfL%ReAXvL&lmBD=6AtFkM5RVa%;EDN(S z+fyz(J~C^wH#<@^JFGa%vpow?I{Q67E3`wqO+c$W4<)Y)CLDqmuq$_R0P9{cw;S6^ zv{mc>Q${O050$T1mnwhtDx+YwwJz6eVH>XgYPDzkLs*-&`qZ@b3b1C|p!=GtZ%cD+ zi&k)pws|WgYP+^ilTuZKs8mFHo zs_x}rME7%g>$%Fxx0hpkxyq@4)^&E-xq{1VNn5&VI*BlsXU2b8ZvC~VIv0i7Mr}w& zs8QQ)7bdq!$A=U5xx+gcq3b%hn1`@9j?3GR_G)qL$cv22pE3!LW}3P3x{I2MZPvKF zs#Lsc7YrkK_2Kt9QVXn2&IRi2^!^{V9|Se3+42hXn~%D~ZBG zOt&gLH~WK)Xh^~$3RW--y=%9`IatFpET_R{P0DDg4=R7YAWW8IsGBAC8AL3`MQp?? zY){!+cT~l3tH^`2D8Bkgn)aBaQ<=S_>r2zPYW4`mkvOPh?8jbP#!rL93Mr`H$)Vx7 ztBLxbaB7Vh+=_}iRRsojai^15oTK=8j$O>2L8_j(YK*M=$Dv%kfm|~iM#xjhh*#YI zm_SKv;un99-R7O1I;-jzafteti>Z}aT$LQzzBuK@oNSW#+j*i)%q~aDf(%O?%*Q_3 zoFDqC1UQ-({8;7di@R)BtJ$H^?4m6^fW_?1&U(x+L%~lf!b+H+uldAE{K?8J%$X#; zDC)+o{DZD*y`)HvRQS#LY^&icFVwWA+Ub2Ld8&WRW@xKBs^dkgSo)F2rmM`H(65`h zehIyoyO)56n@Q%VTH}$#|;IAj1(+0ehsLsI)am!hCaJsu99nvIS%4%4jOh>O@(*Lc9 zMz()Ujn&-h)GtGnC75qhJtVTEXuq4)Wo;f?EzVxb#Kyd)WTK}LY}RqTA!w~X&uO|U zCf9krQ*>R|{dQ-D6(zaw@t>hohZ1? z+r3R`y1hcaE!@M+*1!!d#Esm^O{K=|z{>61$j#h}^4!xc+|j+;)Q#P@ZQY2H-Q6AA z+kM>LE#9RK-a<6q=l$8`ttRNr-kGi5Y0}>DE!pplCh~3Hh)v&5a^L$M*!d0rEBt>A z;AZXLB^}@eF46-YDF&|K`HbN6vfvL+%njb$5KiG^Ea50p;TcZE7Y-sC?%@#3;c4{Y zBYwUi?jauDMt&0v}wws)iKL3B|Rihy$ zY!bL?a{Jb$7NTH`2DRZStA$Hvpqp}{PP=zKZ0G)?OZ3FjF7>EK+|^qh>XKGTp3?p;aj z-FU1+`LAWm?Ai`zQWxvXPO5*)4b~G|?bfcZb(!t&4wdKrE|A*ofmX+~o~s5w6TP0F)={qxi)(94RRvG~zP^~yHct56De9mc$2Imu0r%T|ok|N752kMt{wjwIUTEN>#$ zZq7(r_vsGl9w@!M{H9LNst4V6mAcX1+q=BXX$g6a<>=)m_w!Q> z)QFp&bc)k7oo(FS(XM~4loJ2Eol5ufxbGbs4w9EPW_A8p|OrCDW z(z$u-o@eQuZl!&1n3u}xcaQf7Jn&lx#gU%xB>awj`uhnQ!#@ATpV|6YSBI9$qbYyR zgxSRONAFZmU(pw+CrO)LT#h-szm`n!;7`3#yuj%!b%*TG;=duDD$IX6+`v<_%7wGV1H>2 zUVBsMXws!kpGKWp_3DqFUB8AMTlQ?)wOz8teG;>0x^YWlmTQ(P@R^hA#=iWp^KjTz zHw#}XIXTtJ%7YKKyA&?=$ICze_h!x(X7%Thp>qXqJ+ybkqPYX#*t9s~&c?&bml;1h zXZH8^)3+}={}vO^w*YghF2TYM{C_St2OoqmLJ22a%{B`!#4tk*H}r`@5BqD*FYR=b z&#L3JD-Xr@cvFut*GvSEJpB5)Ewlk;L=Qxs$ODbR+ZMFZI<*d?F~#xp+iSh;W~*;M z!*CojtooMIu{b3EBWpSrqpVBI$foj9$O4stcH{XOaPJhxkq_a*t z@5J*(IUQuOOfS`A%CY-E?5f5;=|fON^E7MkFF#ZCDpISqn>4`b&;%4x-|RY6O!Umt z@w)Upt?^S+_oB|Q953st(Ek}Nn>0K7KuSzXK^L_3L`3r&HB3N#C38$+lbm(dQ+I{V zQeZ)CH9szY#Wcn}r=_-9Ykw)sGh1!98I}LVN108-iOk%^ZI{_-owNGPRfBXoWMDm(w5UwK2D9j{4Mun3 zW-Hc|T}3)U4`#LWVDMQFvX{(6nUWHecdQ;&;wU3vUk zC(74nzkLZMhd+M#^K_rY4tWGQrMb0!I&Ja^j@@|1b-3sPy@ zjO#o$qR)KkN`wpF*cw=%yOE4l&s!AwFc_=nz>atUToQctXQ;rKt#!`x6QNx9vV4VS zdG(qd%E~l6(EZ48SpNf3{e(C~BHC|$M?_*0LsUe#VQ6(U6q=fh_PGu;E{Ci$c(D7KNy zg9IcDdw(z)yrvPdKOjsYLa&BVZI;xeiu-0tRSLLo^O>a6HoccvcGVQ5{&Pc49f-^V23u?tKiqxIfEUCtOX^)H=5(@SdZRwkw z4o?$Rs+JY27nEm9)w1w3E^k9WTZMsRTpykG`5*uf8maD*9|U|#!kj8YkEWK$?ciPk3&2*@<^=VR<+SI2utf*COCseoE)vtzi zcUL{@48_{kx5jm@<3wv-Ur5)#26nK8P1If&`)9*OcCwYdYyukF*$rZLw52`mRzKU? zJEL~CwY}|0U)$SP@l-$D;S|Ss#x*`!i(h=>9|w8J zwb}85i~ro@Cr9}q^hq@utU11|tpRBi@#9T0n!nf)ser*rrHP-I5JZ+&W?Tl}S zkZE_;Th&4+F}j!%h9`%e^0R;9Z7~b{YC-*(%Dc}e(Ak~4pZl}BaUYk5%$KyOy8{pT zI!d$#^!GnUpy2*|d#K6v`?th5zq;~sxtw8bug`w_H#_=H{-O$$92pk-AD=3v4Wl;? z=0xT{QdhtN_Y2Z4*8yns!}Q?vfC$hb{vY-ITst6_nsPaiNZbD}?AVOylx!Ht2dQjH z&Dx2W@9+zu+Mgfd~2u1*q8G+yU4q?9NViN;CrN{Pz-Sr|4ve^ggu(+OLZK1Y0E8eS z&|DU5nH$4ZsmhP-1|4RorMLHr;AxQfD+mI-OlOq`&yqz5wF1&uVXvcNQC`5u`+#sn zEQ$o=>;>_zc7xH{ff$XbSdCa56hwClp)n_3DeW<$(ZdXs7@L1(2(7#&0Teckhjw-y zhjgv_stc!fgzBlshN`a&K*I29+hFaZFRGK@A(rV-?o)^_29LJyN}vJyl(k$l1;Jgk z`H8U-&~^}2Ps_##noB#AtUJi46YB@ix+XxEF1*jC^4aaK!OVa6&n$n6@fx_T-L+FNf4+xcCBOR&liK~ zeL#HC&=r*N-f{o@nDpndM(9bWGzPCgiLiAttR=;uC_ou#S7@ve60U9Ku6`WS+(=E= zFTuAWL%S@CV#@po<1+fiohHhOv6#@2LrsQz7swOOYGVhXe&CG0FuaQeiw`sHNF4)4 zXANIQ8DtOY@*cK|lJ%pk2y{a+vz-PGLU@){t%XigK~0l#<=(1IlT~FvSnTkH`z*Xv zGi@ejIR_it+e$!pR7n`hFphjIHMtIGTmP;tOlj@J^bzch_@Zuwrr&BIL8Jmfv`wnG z09mcrN&U{KSdLX4=G5E5NIbz_o4ItPkiDD5)RbTkhBg~WBA}PfjOo9U7`4A^fD4(z zWS1lc_{Q|s87b;d2!(K##D+Sfqp(Z4P4|O%tE$^03 zgq#gEMcuXR8UbQE@WR%-I0nNAl{VnUk3?BRg8jh7X;SZE#O186jiT>jxm|x4K;{zo z%lXsV&9O(3Iu1tK_htM1C4n0cReGbwJnk}w;dOZx09VR}5@j`nu`Oln#wDfQEUPVy zfuIKx1g{}HBV0G=*XZ4^6Q;u7F5SI{pqUOsw}UB!Clb>G{<1|6aEgGpy^mEfmiGBjy!9sxq>#909k4RyY5YChN2?nFW>np*tL2MHJTnsvQFr7f(eDFNXr zaDIJ9Ri{wt-EIS zBo&74{#MN~8OBJ&N_p8u0%pId#G|Z$2f3G!6oQmO?1G_cJRUqR16`lF#BbFZ2?g_4 zw*SqnzpipE^W9%1$;=0S(vVEi2(TcOZUN1)aO3JiCgYh3SLUyY8|*mstBV?Pi<+D| zi&_?o+RlqQ0gJlPi+V2?^@|skFG2qwbWH=G0wnf;yC6Y;ARwlzt#!1psJ*c0EHdg~ zfA=gS{d{^xhYmV}Laj@o&wIMgs;fI8wCBXu3x0V7h~_zn#*u@)#=vM3MVn_oQ7FPMFqer8~F z9v12hqS;?uJiuc2qoZIj#YiK&3ojHG% zdw#HgZf$eHE?o-Z$+n;4z@_~FjiH_vaI_tP_;+uEE5_?>&Y zpF27oFE1YN?jM^N9qVWv`*}^$vsdVO)xqHTVnh-vrjp&BB4JZXk0y(eq~Z3HolTSW zexzXgR6Z1`GZl(JNu#l+PF`@h{c2NLvMQG3nM*1w>!m}U`q|UaAP(J)_7l@7o<)vm z>?)2tcsN+SpO-}rouO2xt_~6n5GXntX#Obvf?d5|RSCan%T#Oslv2ruI(D+B45qK< zr&BQOhj=ea)8?uw`gC<>e{k?r!}QqQYd<|}ad~mo-KG=Fkxi6A;C#W`x<+GZ6W+KXgAmQc82k2ip# zS6`LUFv5>*>?y1wWK1lXHSpBkzPFuZ3q>EckPb~`W9iW(a?^fG)4rd}oy~Bz@5d`XVX0S+4Ykzw1aCvaw#pUp#EsVlxY29jK{^8{Q>h$KMvw81uQ?I>! zg|s;W0j*GFzk(u?4kml+IvwHmr1h*idi1`D5k<>slDv;V$XX!SPZP7cUq&gxQTd_x zEP6BrZ@ynzNydeuDC_x?)_RK)3e_}lk&7o@KCHo-Ucjx-kM}Ro*B1bC(8YYz!CcVX z&o#6_AjWeYEdT%jr2?pzkb0)}%}6aB1lmhbk2aK6&_E(~1n>-~n!FlVpm~WENiQ~* zqqoc7!hyD>-0!P;*DAyioG77>hQfFyeV1hkS~#HAtH0Jlep-m7PED%Bz3Mw!G5kzRNK zUy#T<*Dz~8V601m#pw)LM6lZR)4Qp_Pe(EU&j(wnK)Sz`sO8s3gYY(*(~Bgec^d8} zQRpdFOXS+?fcbl1dQLPMpJQYcmBQpya48aGIC!rlO9qbx({M)hHb z#ob9nAjHpxf`@R{k%ClTzr)Hc3{%l;#-EtjFO0?6#Dd8WI$l>@n`PSuQdS; zQLijCxNPQ)@C$7tlpkUOYFKq7FWr=)%R`KPc@!s?!lj*cEJ4egVR`NNgv`o^YjZI;@vZFc)TaCpMp*pG7u zhnFv3exYYv{oyb*JG-{G`z$8rJUCPjkM{BLa|F@+IXs+R-|z13F8)w9Nh&U@`1IG% z;9?Kh$}_udVQKfqI~v!L*k0J==;)M6ByPO5-kmM_keXOi^L1}3m(hk)+_HJ{XIIQ^ zc6fA*h_}LZKdEv9S-*6^V9z6#S0QWx7(r=h^Fu7_6=!F)o|1A`IBwR-}9qm z*4r~TUbe^pgfj}H${j*jhaA8hY#&d)B64iBy`&&SqL7~U zdU`JA2r*f2Z$J{1$ zwohVBVhuD9aFiZgD0F<9bZ|g2mo`m~uk0Ng6w|Poo+OQpHp#J@dYXr_C(e+@$rKyR z_A0WfCbz1(EKikqe7x$OXo}#5k_O49E=UZ{+*FPo?}vBU9;ArLF_Jl=5Ev4XH0bG) zYGmRfk_fNPuO7@rUIfC~`I(Cy``}=|rKNgwbZ~rp?BIC+;P`ZTd1iTib9Q!fetvOw zesOwwvA=(?y}fgIc&w$RX?uHfcXxmOVn01ToxK>m(XrXti}ByAs%lzZ-dtZtZ*Ffd zwzm(?&R^WWIX*tv-#<1yJh;1idT?-BRaL#by}7=J@x>v4E?eb7PpY6{ zo>6_(Qlk~~H2|u%>+KY<|&!=iOPoqdB%-3Taj+}a2u*k2YXw; ziIEKaCQWrFKN?@?`g=6h@2!yD8h%Q$srOm_{^jxS;pWDFZ~fkjQklU8p;;T2VK}>y zmgbXxl*_vh-K}b0LJq%*T$lgtd`bn-iIDNtfA-RS{w>w=KctacB}c+_Vl6$P^Z)SS z3VC!|u0FbwAUp1|kVO4+=eL{rDnwAx z+Em~zPJzR9F-;Ft^41?~jaW$4*AZPxH@B!M@-#=O)6%00v9v&q^=`Wiry|>->4h#QjAN{h?*Dun1(#$9eiEwIO;?!ziPcW zg`)=aQzSeIWJr92Yq*@V*|a~tfvgrj!-D7}N&2Sr)WBnSnal;xsjST7;m2o;YFPaJ z#=gfpo$Qv3JS|sT3vM9>98=ZRHSJ9`wP-kP;O%8cU(g*7;bi7ujvjZ{I@t;Ly&?I5 zP)_DSR(2Q!lWS;-6sSL9&OhG#D5kaIW=8og@+n#aA-=$V89-hmt^oCdkEDXx;obHiyub=IYS!O0pgJC#3{$V&r^;hGCl{Y)XYC@ANEqiK< z*(J2P_HeOF%MWqP^R=0KP0xn!_sB_ACiyEcAUAclb5E_-TKt*I~TvVavV5mR%ay)6!4D$91n6xipigbJs$k?tBjs3NIkX zXsiayOg@|%qt|(b`%kQ%A7n&=l(gy}8GgIeUU{sOz=%$P&_lB?+vzo<2Ppw`RdZmk zK+Tn{)EK&x0`7WWnQf1S%(Sb#{J7y8%*a$W7(207M+^Xo!$c@BiuQQgV}akj9F8|% zf?y)~Db**1^R~~Gm$m1BcSKUeEc*=ZDmlWL$o-0>NVr>hC=z|?T?!Iyldau>~? zNdbt1>S*mv%O7pi<5e|0yh$GJ3(L}PxTxJ3RdvmSMq9_-L)+CnL?%zKX7x;UF(E-w z)>@ue_42@_`Mdtme@&|@PaJdftRCyUd|99L#3|shYEt``lJ>h&N(Y&L&V&W6xB|hB zMoNj6-v=E2Mtp7N%b4?6GIVSuWft50UGw^DILFa=*o991ocPFSf%~UIds(?nv~ous z>;zF`7xvgf1+3He@~}7Lv&7!A%Uxf;j=EES$;aQ6k}?T=*94`fsQl!I?vKkQ{!{v5 z@ig|E*xf4E`+Qf9Mgq;GkAp+*)V%WN4(jdT9we^%DI9-Gc^Q%EZG7p9<{gh{*DTBa z%H*$QD>h5PV}iUBz5W#*515rdYJQ&kCG#d>5R2tGk%*|+kqdCMkijo7iRuB_ijBA2 zM&_o!=YdsgGQIB#3n*-PUM;dm9uC*G{2ST{KM6sOR>-w>sCz~1Bs?-z5PEK%`_3bt1>9a47Jltz?pxj3hK{i)$?y&J<({Y4BvuoT@{;dod3s9=K51C9GGkB7y=rHk+dwYXc~APy9q!xHoNRM4jh z0^cD4g^0Lv$of4MR=K3G=tX!JW6V~Hm)^&tOW`S3VX{_{H31NEY9yJ617CQ9(#pe( zQh|aBQCe0}I)PE*5ZECaMmrISDZRMj@lCzR6ply>7dR^QnRVSWo6=|clxOxX06Kh> zlU1~HV6^rsSd0jgCPjNF0K5<}J_<43fzJX&;19B5g0g5dNHLDF(Rf5`ghK4&l4ws6 zuwPbeTwqKw+bc#oVVxha?}#u zAcTdXP6!U%LT3C8M0}h~d>qT=V!fvTaDuKh(_dnIyqWKAW^ltHzAB5O+67S?$W*V8 zsL-C!Vuffwh#z#pF$%@^xFl?3zy=hOZnh^Z(^`1W#m7bZ<7TYFe<&nOlv;C?BrUlJ z&i2O7K@%DE!ndr#R$LO-T;ex+Y5wX7?m&}k}-8gK0e#cB+>u z=EFp`x4j0%-Mp4M1W5~ilzJ4Hz;u+#9dw0NKh4WIEhIWk;9hFgWE#U!nyBb=wo5j` zmy)*qgZBSD=fP3$p~quWqr4Ls*HRVM1O$(gymVgN6irmmeo+&djEPI)`1b;poz5zq zJ|dDVm;Lm1wy${KbH=sj_Y^bO^wUKy>i;J3c1Mry$EDVkrario{^*hb>zdnT*R;Av zFQ43Vbj?n6@3Zy{%4A~A{2lwqDJWxqHB;|prpj8H?Gy_IC;T-0MhKT{7A-J~VukRJ z%Xl7_snnPLwba^!D}%d@8PMy{TEmWaKq*IEPRq_tzmz)XpZzR5d-qw^yUFJX^(^y1 zmGgYqUotc6Th6aNKuHvw3l9W|v7^mb8E0w@Vkul>rtin)*A>8)_nF7?VGnP^(JL@6uFK#y zX0kS%W1U~_TLBVPaF46-rDEany+U9A!kSC@V%(Qk=3qYmvkC>_Q-SRdVas1N5#F#l z5|I7Eni9`!MPYV%Rm@HTQsH#$_CPcqaABIdR{#K}77JA}$+Xb~ekkUmaGjDsLGeIb z_&T#U6%BL^rg`C0RHOlXY6^RDTnavVY0{s&yOMib>0M4-iks-`P_BHW8NUb_M4Jy} zy^wH{0frQ?5gfLLg&Fn3Pth}mfq3( zbnSN>mLDt)U?OB71O+?~zF=C?N}*oFWwOLhgI(LeKF>Ks;Q&pqpvBZ;u6*oiDv&hI zG=+ujtW}(VV7Jmh{@nht@xbj=rfqbELn;%Q1cX+qE*reJWP!2ch(M?QS7a(GvqJP! zp1~*df1f;DKk%r>dzu2ytpT*Aw15!6B{-BJ`#me+BIgKJ!U{1c(SRMw*vLF9`2hA* zV8?eRnGOE>Ic6vtc;)BUCp{MiB4D&S3;_qMQJAlXK#=PN;5k@IHzd@HX=gh5PyCxG zu6LNnhN=mlKsYf@Z8Ct>6yOQ~UL%7U;Pu9&>aZL*8DGL?54=gN1(|&XvwY?t^EklE z*iwzWxkI>!Kykl@pGq*fwy(bcY)h2#3oi!$lL8P6sIj4u7oV?iRBIvsDe~u+g5cD* z>u;DYRdav7EA9n`*wd8k11v~1X#=429F}cUFfR#L5;R>8JE`}luJat{m%bBMgOc)B z;AIyklET=ANB8MI_k5K-X8yuZ>obst_O9?dVdjl*q~e*8a3U}foH39@3`w6S0*BgL zZzwgnnb-9_e(fUw0FeQ=h-d@TW)GG|S|nSKd{C$o5IbF|No4QlZUCt>xee5O;e-Iu zIN)Ct+z}7(2`&Ya8$iIu>t?NA6Ix$1v>Hse2?P;$GeNd+G^i~vf9*oW-V|(+^N+hN zrjdhP0>BAxHcM?|AcA-{t62&FNGuGL2H_3`qX8ft}cf32o*4(CQy@4X44Frd6h(gQ59J#lm$5J8Nm$ER?#INC5UG&^1#& zQFuKAiH3fy3trHJpnw;=Xk>W&*YM>E`6b=KH0$4(*x&%&RNzx?0RMNU(m@(}e0fk) zkK#;^vQZ;Gw-tTDTw(;2B!Ih^q%)IWngB?i=|oPY7m0P1D8=JsOuNLfG+JoT zj|9+bn_il4ObX~yC<(M@$RvO-CLuqUVT#r%<*w5}?qk*ka%t2w(D`u(sF!(H9R4K% zpfZ!^VFbKk)Or(NqKnT>zn7*H*Sn(3w#PH18ij-C$Nxa~O(YuYnRbD^z^^bE+oeAE zAJ*li{Kb5}wfc@VTqSH#6n&ocbqS7{CR$}R^IUWzo6%FFF-865N;aZ zn4P|@t-cZEMzjYoFHvZkOcbX?X*B;cQK|*KviuVc|-kd%W+!n7D7) z;K_U@_N=pnS7ERrjNf$!{ZG8p7^kEJ3fA!Omr@AF2K;BBu=I|yw#=`fidCjWq$K7T|qA69D(6CkZ=l&*bAE_=2PA0vT~#5Pez zFai%i=9j=&Mu5cpb@JQSvg;}h@a@zApgj;bmzoC{+_c($i-ZHZpKd+$UL}av#j6S@ zwk$ZZWUI8S)ULyJ?lri?gGX8Y=kVnS)EZkV%;*NwBF|=bQvtf?>t4oHj;rZ+}#Y`FeCg3F3SgK@xYQaZpP9 zG!P>B>OA=mI~wSnnr1}xE+!w>RL>Oe|J-#^0{T~er;99_YS}WYSPY)q8eLhMvlUt} znR5^*_;^&|$@pj@zx2`$%*9RnocPu7gJd`3BMhY<8Q8;)rkSXO{W1jyi1WJ*0KF{e z+}wIFl^;bbVdo_9b+skU4>dn=^DuvW`QAo1`9C`I-&g99C3LUbi)KKpWY`31Em@V{ zg&Xw5uL86OzHS2n#2zeiFD+4Oxa_fq@RBJ2n{)#3F&Va=|2L2dUkMLYzqRPP{UgL- zUodaqxoSVTi1-2w%?W?H%bIAYtBSX>ps2s9@ygbx4AEN|0fW6$U0W}kpWl(C4)Yf)O>#UnMQ(br%&?I91Nkx zB<)?n-@)8A3;7Iz3y6r2|BaB_A}2)b^-Ay>Dv|3~QL6_j{H=cM3aCYw8(kVtIY%7w zi3^Sl^juQbTKIf>U8e-XL^=u%S@DVb(SW-Z>1 zHdgLQ*Tl>JYCi+$Zlk{XtvCFC2$p&|2g2J|v+dFF`nsC|V7EVYuEtBgBuc%SnUX7^|ka#X)T)hB3>yg0IH zDpS87M0v@x7`YILav<8fbJAQTr*?En9JJAaeYeO835P!S7h|3)srj$Hv}p01dVyrvx^RwN9DDlT9&gSU@;l?>&3LVb8j595Z53ofPY+f(%W2n zNFYRTz}RB(32ym#rO1BQHR0NsZ&JlL1yWxjg-RY@gpN}vBP6cA~qY}Xj$}9I$fbGN-{DP&FAdW z_lkq1GT!(g4WwKN_?9@qM@jFvgaz(2Jl}dHYG2sE9uX``E9S9)5-Ofgmn`=1i6Cf& zmu9>4dN_z(+wd%Vn-6A{;06(bg)E6z)oye?#R&{IW}^Vghu*9}-@~@{0ztnzmv4S` z+VvHZJO|H_u^kfb^HU-J&YqGZIc*Q)j)3=^S}77iBXb>cv$S4WtHfE{uaX9V>7gFd97;vi4QVKdwXp=>1synO zMF@!WC?>=4jay8>2}1}Shy;X9Qmi@B>={N`>Jk(>K}L=SLx)c_P1IUOw~gbFdTB?d+)DX%Hm`6;H=^Kf_k6ka1c7{ddgMPd=F)SH9|m(l0yTn5$j`;iAWPA-yU8wD?O z7PnJYQ-`;7RSNQTIe6bN_XS;r+oLd=D6)%MrKZ9_8k;7apWY!oAi(oVDz{>s#_P9Z z+EPV>O2yv-n87bP$$`4KL}&B2JWH$D@lP?ze{bBnnjolF78u1yj=aPsI*qg!%HblG zq9h4IpWyJu$LZ=NO0RV$52NwYC{Lv-mfl}=dtk~harbZmGk`oT@%4H-#4tP6$DRXl zbQ&o%YjsJjS}y{p?T@^CBN3CpAs2Znt5DUqX43KP`y=UC>j&>}bo#;T$zD;KB@1;O z;l-L)R!vuslApyiC8d)~qrqOMb-L4a!3gTpD4@4cHdhzj0O74Mn3oMjXpE4nhLbg` z4|}nUceOrb7d2Qp8$CEI_TZ)AAl#)M!`XhBJ zOVyF@s9E5*{bu7hX2p1rvj~)<;RceCb;AYcY8Oc;AhQOyPn6gWPooB;8j3$G@ZBKF!a|t%^u{r*Az8;23RAGsVAJ zK^Hj`$-o`EiXfU|JL<#g1lF0i*mT-?bp<@&TqTnRioi{u9nJ}u5Y~NB(z6WuUDlB_ z2VaFBTAEUZ(Z&TR_FAt!k@e(&f`S>I;Jm zT#?yn3*2J!L}dpbCJ*C>blc?d>)xyxpwc@hV#?LZ`F%mHocup z>74d3vbmRxZaGsYhqS8X-e*=z|EB)!uehH-28#L)pG@ft~TzCKC@i#ukRT@OT7ztG?L5=%1Jn| zX#@_kb^j$|qE0}4|7G?}^gM6rH?=YK=ZPtvckb%PG^i>XrhVy^6BC8rgvk+NQclF) z@&qQ+`^0$FY}}zEl$SiS+@5ame!3R$^w(DS)28cmvxTm^UK#&%6@wov2$vNTE0&O=u5XTn< z*hFBkc)=gKpMjZGm~Xd?FMPvs!C_e<|<=M>fEmEZlU zlVeAJ!69HdB20&%ibt1neTWP>v2363@hrGPM9}C5eRNNe~2z;x4mk#rjT0ulT5g+0foxxxQWykySC^TRQeh=50#b zo&L+U419I>i9f~oF4<^O<=i!A3yCc`wG4};F!##2Satb9O%<)TG&EJdJXJTQG}Vz> z8jA=8t-NbF9Z6!5*Mb=sEAet7TKYB}GK|tcHEOZBTE;V4CQ(V6epRh9IH{zmx`KU}cY(_VcrN^{WJDjoCq)GRY5E}ub7qwsdbWvIB zRF~06FLq2b;#4~_QIDF?q}NaBxgV;RxT)8a(@Phsor2VVUexuhjOd-KJO93&?n`Cz zT-)=aPE}cXJI21yME%@O{iLGW=k%Iy{PIG}dKtk6KwteH5rembeKrQ3j$hG) za#{^$u0|tAnGJBPEyJwWn+F6&1qs}#AkTX_7dkd#wP3M%&v@ccFw!W4olgb@Way3b zr9fbai2jBcYDhjExeUyRC-_1mk^KO--e^W5o*SS!Xfyc1A*i+?ubv3G2Xn&i&&OH<_tx!xtRi3 zOTpoFbPOUg9a)28bFqWwm!^q$KGS3>GNMBd$T+Fm1-)f+9HZC)(AP}x(gS*7yKoc; z9|hvwn-XlLo{$wSZ65)DH=+=KD=o^5yG!R}QI9MN@pZw1h8rqVVo6gf8=MP$ndOSY$!Ey5K#9D3?M3VtL0Hrf%K@(1l^G%SLG%F(PhL z{fML7TL`Y^KDngtPEBS?N-+WG7=FYklT-Z3!1YAL=m*o+a55>`eiUBUDyY)jw@K%V zj$ucPI&DBDL?9F13^3B|D8yJ^Ac*X2o*Njlu#E< zzZ4^+0;PWdp-9l(h2Gi0SkWpaM+JeJp*3l zt&i-D4F3U?sRZm)v*R{}Sa{Kx8-Z4X3renCW0_e-?8Lj^A9z zsd)7%>3!?ZNyL}Jd{^x=AFNp}i9kf&Nfo2IQV|zCC_IMDadinULFRvA9L1=65Y9xbs4DAptO}r>y0QAi zD_+<^#Z@>XG3HDpW_E_T&saQf%_65an!S|3L-W8kSO2=Jc24@;Ehf80wqGYSeC}&Q z@LoJT%ko0LaD~+c(#aBe>!Q@Tw*WB@oe7JpN*lhYIHP(Hf|5ReLq@dmPQA-0g#kOa zZ>gYEu0qXEe+)*VBLx(iB8Hj-cx$^+Lt!3-n?xLFrvZw?kLu>CBz56GzB46Wid64v zy2$7;o3JtIXok}K79DmJY%v z#lFM|iWMW(5(~VBjDqgt$c|rW#>CSek-g2YO`dB(jccK^+dGV#nWr;8@4pXHYe{*o z&+jGW%&wPICkW0Y-0bIl$FcEl+l_%{=RzAzSr2869@j0q)|hD3wrqT$i>WGp zY*@DPdU+!cCUsSluVDB^<<-r)gU3Io$j(K*o;c^t5IOfit?HzV2H`(eRevC0o@-w|XS<~xU8dGnvNF@erky^G~u6kr2 zxIKUGL2l`tne{N!*$_Y9THtdYmGYRkNP1kkwW8X)Xp;10c6qtQGu~urpkle2D7mxT z6N+o5`%>KJ2TN*`+9A+AS(DT8%D4De+~ZpsBM07`Z7DyfcoM4GM~~U^L#xUCed0QE z8AsVrEY@#}HU`T-3gp>djC1oBF}oH@ac_$AK|uB`7RL`fR=O#g$rOOvmMb*oajz{) zt4`G#9ba8^z0UfX=QiBVTOqpRZr+w>FTDpJ03xy8-^2~cWU62h5t;BoF~{&hAYRy= zeP;@lF7p;oj5D&weMvO?F@h3Y3b`?IMTz?7`imPST#9~LxBRs2{B$h$l}4`INZA9n z(lwcGe{}ZbzU2#rP+G*9UU}{bmQ}kdEXeSADWv$C>-yiY^S5}CNy$KQ-L#|n+cO7T zc!4|K@_+aVa_8D#nTqNvslBCcKT?IaF_qlR@Z`IyN3(*)cxm-*dH*MB0bb0R)-Qm3 zxPMRo1w63}aGp4b{zGYTdeZmuz_o|$7ULpEb$dJ;Aa^Gqy60&OE|40V5*YU;F#c0u zLTg~+NMO?Mz~r646l!29b5I(8(DRYNXv+Yzm8Z=jdo7DQc>X|lsX*oJ{Y#(LGA07d zMvlzXg7S8P-cW-sm|q3_!G+g@->L-{-O5ZE=cB^~m*9d+Q;tg}j>1-+hqtbu1sv^! zd1T=hpP4Tqdk%7Xj&d`Dzo>;&-wOF^7gF;iq!t%acg_Fx#DQ~bFjvpI%$si&%-gGZ zL0XJ%y!;^z*FrvA5A9G3?YtG*Wf$80B(w(?+M5#E_a?OeQ|Lfz=-^1`(4#MHB_|mZ z+l?c^oSw_a&Hs*D{)JovhkmvT8s7<>z=chwWWEXF<;*1d^V9J0pU*uCTc`~w<2?Ju zc{qCQ@RNL?>FNH|`1V5P*}@Au$t%2PlWO5xbYW|s%Ky>@LY{=%N(HXo3R`;<9tDZ@ z%&cs=&WH3{-4WD#dPVoSxPArFAbrdt@9|odaBG(I!}E`sZ4$~nnNOHFAvm$uu78&X zGQ{t^l2E)Y)LZG;6TazkATeF-Hc{oVap0j{<K7pxnyNIz#{Obuuvm!Y1WT zJw(rU#&c3Pczkyh%kS6E3S0iGYOH@H@4LNuB(q8?)O{i4aV)z&_QCRt=P$0kiT?kU zM{ZtB4`lTUH!&y}9NogJzg9!Rf%BG7UNq9QJd)uAGp zlnzn&lfN-`ip!Uungs8;)(OP$1|JHI?SCGkeTf?&|K zV)H_eD<2?NQdEu)1yj{6gy)|LPrC>v>5J71y)affT7029?IIAYL?0yl@}67$yAY** zs*_#Z3;j%qBYG~}J?AV5^<`mCo8zNv`2_m)^knU2(dE~1Vhtj1la!7{iqZ_+Rtml@ ziOlC`yETZGL~;Z>7-qyPiM@aKDp>5p`wtCbAIlq##mYYSD~XqX?WPxtwg~wD9B6~U z8^L+E-108&5Q(Zju||n6LrRY~Dy3*o#Q&EhlziB>%jSWz7zsX+tecBhma1P`?klhU z?${{RxYdx5UbEV-e7*VabjbCVqxHt?t!Kw4*NH#|j8{cyO9;CCl6cwHT^i+6bSH}; z=0?}$`=K`~7)OfGJ-i`C<=rw480kLYoKWe0(Gn`s=M8`3sq~}ROVu;ND3 zUdK(&GVej0I)lo7iVRPf?5MtYv+Q?ccMSWGkIOJB&iAFjBZeP2a!<#oup;%Y&Hs?yrKoU7qV>+e6dC~cHCo-1vB9#B=@ z`ua0mdAok2MR}+Bd96kRrU1GfSTIb-=9=mrvD;FJX4ea69S2JWD>6NUC#WE0AtCFGL~e^%r95ws-4;5 z@(1EF;;g39jBEZrZwcPL-R^VALAjn&j7jcu3VWGhC2A_fw5BR!h|XE&l;{7;fYW5ZfSV;uA4wTFkt$i>yUcyFzKSyalb&+^~)#W{>tt=4=K9zT-`Y*YR@=}2h&<)I(= z{p0LlvSrn>@!OGcal1cxat|89t|QVKpC9eY*Y*FE2=6PkbK9>awx3Dj!Kd19BqxZp zd=+7r2eqfH$J;n+q#T9IwCUv!+xfcPqi@=1XHzRVzw)bk%UzLh6!n?x6glwn*lu*Z zT7#==zaITL&k3_27~V&mJo_A(DSnT4$0|00X*cEL#sWQaeXl-d_xTHqjgVbUpULu# z;I|V0k=>5?rYd(c5}-?vCr7pB#haPFJkEm2^{xNO`DT7MTD-YZSxa-io%2Xs40Zo$ zzkTr@Y|H33#xh`Jvg=DWm2p*R<0&bsC8hwEF=(UqG3Xn?Q?`)59L%DX|NROH=%10} zIwm$fD#yNGy4SR3qD%f>kmvJ;?Sbo^H`Z1s#(#4xw_HsPqeouIeF<1GdVG0Tvuefb z&!?M1YY$qLMt(oru5_?+mq7mP{%j%l@xiYR-M3uS4s=`qW66Up*u=}9|49BHgUT=a zhTx`tB0#m(NlEThAD&;+wzc(d&O8DeO=tF`o;GK`-ga)i_j_mgDZ`n^mJ{3b?7Hox zMkXous07owMT>G@?Io{>%zN|fj|#dP!?xz!Y{>tj16zKn{7J!~7q|G1o=kW!V^;H* z#itZ*qRPP%Gm-o$2MPmsR(*7PLWND?9rd_1;^W-kZO;-v0lZEEpa+v}9kr6K)C#91mx=t5 z9~CPZP$bg>5|G!$-iKSHnZYHNNK3*#!yLWZ8KY88e&0X@w%xZ72mSs!|Apx(!48-I zBVEn!%}L%7t7qO``j7r%!;y6fQa(f3Hi&6`c%32FW~b2PY{~Lg`*>#Ga?cI~}mul1JTi03GamY8PaeVBD{3mn2oz<<6w%$PgXvV#JL%sYe zs9ODiDgWP`I?oLMfA9H0p5rYy>>>3tDO~w9(Q$yQ{AaG(CpRZlyin`fzaSB0x;Rt- zm;KPvYbP4=%2#eCEP=ktPHxPG!BG?9{Bo?%p6(kp-}i|Bvioaj6!4L;Jx{vk7Vekr z-q$u}$4Hn{B!_~)W%wKe-2}^(Ia<*IA7d1+5Iv{6xMxh3n6?Y2%OTbQx0F_r8zWXn1vdm6HDO_Fsm82cDQmI?8E zx_{s2`Tm}B9LFDX&hXFRHP>~$;Wil+mn7#2A~rS|&683ClPirt*WE_E(=0hNQ=%My zxX?T6NYIg@$Ro3_Y#`UB=(lW?d8a;*ZSqvJqx5B*qR#CRu#=`B>cstQ#O2tNs|H zE02l79J(5IsaN9iVy3OC?HM;S$q?{C2KZ`NcHTi7NnC20g{`=aME5_342+YnWo2I| zkpKEg{#J&(;XQOgvHUILcelo~W$cr0vuvBCv+uMrw9x5B1r~QiX70%3{8Y%fA*g`A zuS6f zNV0W9hh9*4ptx^h?@6^s*g4b=Is_5%29%k|W2Bt;S?+ZE69Gw11q#klMCb9D=$2WZ zie{HsYK2e2qXyc`;Z`@~A?H7{FU2RV4jgqCaj*_Z!YR-3G>X(sa$8{>nygzqG(;|# z9{p(@`cvS&sp3(uUbLHdDp$F&ZS35Ew{yfEm|ISs?|@Mlt=X?N&wu=Az-(SXV&6wy z`$X-FXT>FTkHzbKh`)X8t?`Gqmd6t8KP0#vOZ5DZ7;r2pQR0U91b*#~Rezx$aBR|r zf>6hxVPGixIBx{Fp*&p7g}~)U;d=o3dX~vokAbLzc!i7H*-&8@3`E7{tD8z&0D+4{ zFuA8Pg)M4zV}8|DY13eGse^h3*5Tb}i?}M7Kkv05 znqA-^Rbi8s+a}kBa$V7Amtnn7F>k_9$+G8avtgR**9HnAgh|^B8PIU)bK{?BzWVK~ z3xw!O*9aAp$4u-MTk(e)V!({tWyEQ>`~3TEa1}g@AsA|iE8zl_%#K_gJ6ptnxXoCy zxYXSiBtmBjTn1m47{V?w8r1HQKqJ1G{?~4gn_+W^z!fL8IStC3M5rN&(7L9^l4zlC zFRvacZOK}mI_rK{r<9>~&9K=GK15hDJz<1(9~Xg7S(a=Ctr$hDu=mu2rCjF%PHgj* z;9GOu?#Z9n=ycuP3t?$6=VMEaLRf1h?)1vi&MDR9Rv47zwufk0&`|j!bM1F03&IsT zzvd564KIk>zemm5Jot8{M50d%JhurXR^%W%a+P7^o*gg6@tr@L)z(I}TcnZSk zibUZ_$*tlx4FX>^NH~cgq0)%Z1bVH&UIuV_1OpbMoY_5jx8Aig00hDdQ<|JG{2&a! zx(k>Xs35n}pQZYB@ud9RlY{s*MR(Alc#V7W$D#Bh<&RGfKD>m)T>`}itDIx8cYF8jgoxKOx~W_a5xc%oKp>{CQs++n_AQUPeZ4C-ceMg_-D> zy`kZ~rpECRT5-#CJQUV@^=e5;Nl;M8ikaE$ECU9G=QJ$t^>jNyUq zon2X3vAwwibmt0tR;E~tfsx(HW_E2Wqji8$-pMR)UY}iHmH?j@IY5VTd~#uNiox1s z7JOxHySi+yt#kCu3;L26^W8RS^J^^5JSqP*Qk~TuZ?3D8VUD3onaJzZ1I2C`Hyzg6 zJcp1b<~x+ur^Bht2l|CN_W1f%8y8MQ+ISixt#e&IseYHi(G{bx9n-qkDQWEbf#z2QyyO-V{0RZWtd{AHdlfAA-N%m)ZAV~46%uiXV5tu z5>a=6FrKCav=7DX<6o=D_D03rbkyN^VyDLEWo;0 z{Jp4px~uL`R8tZs*1L#E=U0?n)Jx(tkxN>c>_Ao#!;Ku4|h+sjlG0$NyisQKhT!7s8iK zDUq%F1f5eoV^HDH@LUwK{_@4^nC}wzJ zyr=FA>;E(uX`U<7VbRB}djB>UElM>mjHhy4TcG~eV0^KacpH9if6mq7$j_AVAB8}J z(cjVQ7k}J@h3-_fkKtHiU>QalUoCKPnuE9(I*nEMuc~P6AZ*GJ2$KkKoC2DPjt?U` ze6D6iskbUk$LROWT|y%0>Wy$Loeo7}ht$DH1OwOVc3SZRYZmCgBk!G#NBo8DQtr2@)xn2_&+{4tc|`>ABGfu=(5_PEiCW;RmzK5_F$hZwAwD8 z$X|9z5?{2|3Hc`Uu0#DzjE1?&pvyYOL z$Gi^FH>)x=wT?p)DGG|qc=NUn`6F$rZh@Re^JLAfns0V)k@1qU3$@JJp&r)r9D}hx z=5}iP-r?R0m&VspfPR=lsrSTTv={U7q3K1|vxehu)42L1b+Y*rf-N!d@}U4 z>XlmL!(D7Zy=Y6t-ILJ{{F9ih>ukpP zlfOC7E@k=jc)LAIoan~WG#~3J?uwmAzhZ8wBe_jA%g}h2IQ96VzJ2e)nP-^-xBgYV z|A;aQFMWUL&-l*Gl=`>GjkhOWP8f#!{P2F&;kzB=efwq3(ZS5oUD-(6VkXs ztDdFfZKmzBs^nt#oQclGw%zfs_@I;%JckZE?J3v{(<-3jI#B&a=Je{ zGWf~8^3$zEN4}xaABb~RXAD_&B)ehK?aB(DTZ`)rUx$~0^C6EfELeWq`MIID^7)r* zg8yL6MEzb>A+*=UPe|$*`}e1!yqBSeuY;h1VwZJ#N1emodmTcF8Z;}!vL8O&of6-l zsP;Ku;RQ=(nzXd@c~^5K{kyAOYM#zq$KFPye}?cD zOKyHvTKoIU*k5n&m@V|!0k?MdkePRq=O5+Pb{gz0uBFtpnYwHDzu$XKwtB?8zID!L zsc4}>az=T+xO_C)Z8bIS!uVRo&akxGR+@RvlI5LeO{;uf{Bk2q2Yl&^$>1sE&f;e# z=cWEcT*l;;D-FFN?{*)lOn7!rJp83pT04EQO0csX=B_>D2|_fA64_^D}w=I6@A#*S+ZdMdESt4iE~9o6`vAaN5sB z?ypTZc>7jl%2;#2BDr_)af=T>^W5UTf=V%huu6w_M&NkP4UK?8t_&Fk9Mp}DI!A?V zVo`s{K3AxyO$_`N4!VGWT%bTV_5Zc7_uJVL`lIhzVr*$h09(;fVmK(J4a#c*`Qil? zqodq#kbjK=BRm7u-s8o^1SPq>pX#IjAtJ5FL3?cIA0x<7{1ECQ9d(2oV#9{2dpl}G z96B>3bnZH;dl04tf*eH$!b~7qbd)0R`p!W+%o8IWG{}t&h?n zLKoD-#Ry<648$G>vByBPjKZHKA+<1p29A!mt_Qme3AiP>G3?;$RG9oe8hMl)v_Jsc z6GFuBMC1`~$Rq|b+7{uc1q5UeNIo$e>5nPr4wv!FRiv`*NUkssm9Ri&+gR>mH z-A1Bc)r#ezT0hg5kBWe@p_w?;g`K=yE<#oiF>p~$c8AuWy(Z4m+; z-uUBQ1f+M^LJRaCb%HzwVn+%3M>b*>j>j{v!?}h~|6aFqPI`H~?4?udla=dmX1JvV zCHkotau1Cpv_qS`Etjvu`6CFcns&dg#~rhdGYyM7PlXCc!WVwRO+n#T=qOn_>Ix>% z)QC8v;ID&ub%6}!<%t@cCvKPkBP8C(MNtr~@XJ)fmO|{_J~4J{CiXHrd=iaEvGZTA z&1O)MZV#4Wv-<+;YSfD1D920%1m?#I9vAls+ z_enIkk?`VQ)P;_OhsWaiI~;?K1>nseCelnC|IktRd}w5@Lq><4aVrczkD!LXU6D?tLubxXPNvI9 zZr1GU$!oc1l=BWY=A6j1x(R$M5qZwW?mO`OfbDF;zH+`*RB#ynX2ki#eDm6T{7C-F zKY8M&`L9y!9_TsyN#rGH3lJ7Pwm+dfc|W{zvXZE^j>*k`uPl(`Td?xB;NH-Op9z-5 zwbnUNFQ1MS2J(8`%`FHswOo2$l*ePABT-n+TT~HMAg-O`T3~szz)A{H)E#Bsd$UkN zx!C$<@lmJZPTs=dMLe3qn{KqRPIYNP!#_W%0&zEcR z325`>Y+M755yQ`$Rov39;BTzx-6#^6EGXsubo+(0kz~=g+E3;NpB{}?Jlv_U+9{G) zDzM_Kv@S$D0EaA6E48{Rab^{61{F`ts?MFSa(AxsJzn6=_wmI}mCk6@EN^v)0nq2J zetx|ASyZ)iVfB5p&T7}C>S(^2%g1Xj->mU+u8|C^0TkC9 zs#S@q{ZLqYuCvyEvG#0xb@>jl!mREnxTf0K+pw-Kez2~gFpx1~`Bk!tbXiRmjPHJA zOoHFXKu@c~O|kH>x&~u3NQ4R!FoLO2AlE1$0d>$p3^dWOfrWvJP(XKZ$dcVoauHI6 z3Ib!{yGuy0I!FZsCDXb-7a@7j;DaRi?VLk<|hM*NVA6wpCz*DnL80I`=x9Rw!9KRdxsqapmH z9*Pts&-^o(0xIQ)3ZOy!g>Vrf==&~gkN?YkH28ZONCf+>*r2}mZ3jR4`+>0rmO5yp zo9Y*h{s#Y6+6@6yz8@y_@X)`N)uDS2g3!gi0`%U+eFHr78ohI09h4AL$+Oz0Lhn?^ zg7<0lB9yL0H26NcdVO2)*m9?0af2!D#~cxa==ou@gfvBiF{=Fwqy39i(9QIZU?Qlb z8+6*D!I<=Ojtx7A9?+8f@!(|xnA$l<0o`!@8SLDx=L()T1Ao^6xv37=`XdF@``ea~ zBE)XII(5MNbN_u=>Kp}fAKPF|1(g{7eEGTm?ScNIF9)1@Ai{rYr9bx^#5O!y?z~3+ zk>v``b{%nY9Y{_eEGq8Jv1rJX9?tw+bK)eZczHO{wKH*7Fx4NaP94tI0Y&u;h3yDd zrGo~{8(P!47iIg)mitZ!fG%1LI$US~lX?X3`^3>_reM7bp!q^L@#XN(u^%VCgF3ng z7E*^6`G*#k1qai|_%Yq{2GHRi2*ovmbGWx%dLpd29=!MS{Hqm|f`!o5f}^(i9|+#L%ZEpA{Lfrk%tL#Y!F8GhWBIGy`50eN6!7T#dP&#B|33*=~S zQEbxYd3cQ_?2Zw%+Y+jdgA0>k`UD6(<|h~pAF>34>3E1J`RvC3>|Xu1ImiT5NDejx z37?G&M_SU(o;_W0_VmEwx)TDn_by}V>(`Q!B0xrdOtKRa;x8+!0D1nszP`QI*1FC` zNlV6Fe*WzsM)3PdC=?FROLYD$ASN%X8GGerfX8GtF>3qP_lR+%dWJ_lV~>Gn2%2`^ z450n|*}s>R6jsjItFO=hG7GE~svVIB{AZ1|ebjzphPhGE!&;u6-eWTNXtYHqm)9b~ z!j|K8b@eYxXC_KZH@v-lvlvbH9!Q(c)7O|?UBI}}?9buJwXcn{PA*YdwDE!d+@|%t zwT*&W`hcl}a8s+7iJEv*LyIYlwP{@9E! znA!^qSzO!!gow4dvm4;o+fdKk049<)*S2>y*LL)L842W>kOJCXR1C0vI5o?BTQYFd zm$_b2#M)lZYFH1cq_LK_07uHIr2)fAz>L-Fat1&~vr~+1d{oTHI73|wE8#RBRTr6F~DN{^Vj7drM zP`)-gMYnmkb!a!jFJ+O?J4y+xT%LY|YHk-&!ZaTWg zL+ikRVhBzpRwtu8KB#_P8>^$3RG(sVRo6aV_Vy5Us+|*(r0Y@7DzF9Y$Wjd3j`JfH zaRA>+iDGc`t5c`wx-N|Mb*gQAJU%}op4!W#)7BMr>Z7z(m@Y;%8YW*vww;=$j(1SWTXcJNc{c^HDFBdF#_rw+nwKuey>> zIgfYyunpTtSML8DsR1Uh^6wW~_DGz1@SQB};QDv+YP9;<(s&P^P3!k53)b)LsHS$t;L+i1* zG>?=7dzXt9nG|93jFX`d*Io2z>T?mN`OJudncM&HzQj|Y+-zYOj9bSL8yd)7csrk) z=DB#xDEeNG5$sF^=<=n1B8;xU45{xYFQf$QD=!sQ3>4hW-&4xI0t5FO865y$#RT$M z)k_o>w<{Jh%caG;m>;PCBwgyg?Y#VH2(gf0{`~+h-*jbcg>s z(m}T!e0ml2k2>q3@Gg2xd^bo`u^xaVb>B75<3=9Ox%-UCeoXSG8quRi%1{d=LBt=g4YRGsqQ$*a)GH+L)$`@b|iP7cnz z@6Z%=UH@*;_-~>G^d)`$hmrnrMd=x$j(8v5#G&~4-RG*e1W;!PYzy5}uCANIj-~x) zeh4M=UG>=SOWUM*45q&_b2oxDk7H>2t59?Idhpamp;1@PWQ3eY(N%+Ux~INJ>Z|>x zu_~_JowgL!{XLtO_eV;Hr0;74Okj=wUdSJm*1numrRKXxZnHdXTo}jFUMQa{Io~UP zc3sVArC}dhzv9#Nd1tj9#b1xnJxwK`x_9VM9(K3T!i5fp($5qgS^8%T&yZ}xuLHaH z_W;tmAwLemt9f38zKSF~d3t7_H%6LUgsnAnS15&irSZ&3^%it@>~oW$rr$>4VQ13f z_{=n$1l%9Su#4+={XWg1IXG=bkqFtuEyN6o*6yL;PFkQX4Pu3d%#0S#Z|F$6nHP&BQKH=~iL)pN}C*=Dyqe`D|OHuv54 z8PDeCE{STlyB0lppUSnMV7%SoPV>lf4wpVPtKa{a6@*HnLlij_Q6s;n0l=Q4F>pPi zDt4^|kH5fteDTTfw+zouU00T7i8Z5*YM$kI8gmWvVl4TTQ2o(AQ!m2nChnHRW}(J4 zL#=i@geJUd+Ui%2;B{OX#mEkP+S-$geqT?P`Y^h$c4z3<5B`?%t$art&G~}XHFE!5 zS!%iZ3IC_!G3xj5{`swUU;JmTeZvj?$~c#|e*wP=M{f6@qjA~>Z>^<&W6whOr>Jqd zZj5y6Mbv0BcBpAzgy|A{g8L%N3=8HXkwXVw92)%BvwqWTdamxvp+QBoA z<+pQin@YG52*H=95={Wjkd+~9LW*d01tmgAy0>n7JO0StG~+uIl$p=@zb zM*`Rgi;Pc%&w}7$1jIRYgdrQIb=~Fsb)gH@5*JM#E1B3B;^6mW;pcErX%PI8tluLL z{DgX#O$6euQRu`&8`*@={Iby5O1!J$EJTS27R4ZiaZoWf9EXEmi-0^LfX@N%0pq~p z1PE*2%imZj+~j)r^L8x8+fA_*#mfdWsFC;RVTL%UO*`x^C^Y>#F#ZNYdgCiSLnrhi zQ>?>_hN2V@h+R758V)Wh8+Hy9CN2wqND1>dfvHhY2=7R=Qe-JNK04`eG*K+_=)iMv z96Z`PDt#zCCIX^{eUg+P)9onHTkY4BV3QI78SsuxPl_sR4;^zvKI6Ph6^KP~yB@QT zuJ#7|JHF(Yz^t$_w21I=?zptOLC#w-`Ffsa7%o^+$k|QUAsjSa6PE4`J%kBWQVifr zCYl+!>u<(FhGX#j#>A<4++BTwn9pM~5=coMk*A4ROtKM+e8sGKH8=3;4d+$z{w3=p zT5$ylHbx{6<^w3sBzhGWw=)k}#l;*|3{XSI^HKul?ca1oya_+)kI;Ii)CxflN1{P+ z%pg&U2$sUWIwOKG0)g|qp(~U#Eq=c}gFx_tz`UgRWA+J- zTCbdk6Y91S_~%~~CE1wzM0xo<-c@&7CC4fvlK$07nww1s^AUg2@#aHr((~b@4Ex9N z$C6xp{*EFgmnHk?M<1!9zXOpcduhYF@##C_sqx1ov^r1)T##p#MF6tQ-Kd>0(x!d8@NEB1d8s zbKOHn^6{D2JB{|g!eU-6I&pFjo(=qvz?+k_h)w0qO<(+g;woU}V&50!BuNPI=OSNv zhJWaEwML_Uh!nvi~;19ZY7P>4JUI!OxYZVcF3k&RvG9?N-Q$*U8 zh4{m4I};1edb-s47V8)n+ki{lw;%WD6={1pNK`%^R4#Gj1uk0&-HdvARkW0`Sn}m& z39q7EdWy|GJ?m|W63*g5uvv-zK&eutHAs>SJud>6Eaec$M~#K}3QG^1FM+3iz-w$e ze^q{VZ@}$9LK);m+0Db{Gp0dW_JyKtC~f=FBL?Nmhs%YRY(GVn%^f> z%adyD7TM0CTh5CZ>mQ3B<+?uV1y(>R?Usm-MY#}Ik^}!hfni~VMPtQKtsVDf(WUlJ z`q338UBaeag=n*<7(Iu33*~l81^CBi<*t0z4w8=@x=Nl)R=Mp|c12Zr@ReztukuT+ z@Z}Q@G^-9fUJ(33IJ~YpEVVkStC}cT6Xdte5sl#IMo%RU?r9s2XiFxSLN~66WV?x*%B%8z@mU zZ}dxT;?y;XnSVeAR)h7vs7o~wUwm~CsL|dni5dO+d;2SfN!HS-vc95b0LEXQ!y-w3me*#e!rA@YDMiKkSSk5^T^(9B{)PaTo_tAix*Y`>$H`UtIEgzS%f%1=QwL?^xN zmMZx2h5iSBKpJSMDH>m>y9~Nx(XYS;sgAYJ$wJL;^()Xp_D1B}e+Cu^@T0h&(Yu2R zxc;M9m|`JZ0}F~M2J4a9@zO&JSdfO%Ac)y?QUH3CJrFfE7%l~gyU>py|InyMLvrCL zBgB=La6kWcdlLBS*huLZy6nQ}m1QuJJmBhwM6n0z#|rVMq=Zaykh-3sU@1tTD(&+H z*^{qEKm7qU7q^;{Mz8GqLrAx18kr-F(vV;&XrTq<_2*jDVWIL{{dCp#w)CNqo^kYH zq4^8_3TSAc3j#r!DET~g#)XDk1_i1>-HXAbWdV-#kOZh5rrZD3bwaR_CP*2{?`bo| zO)eNA@Zeanlan-QxA6cMSfMK@RF!^=337L(2S`DYB{Z?aLfpFjD0W-lpD~R9f$3YL zz0?rrcU0TJSZb{m_2ZA zZ|Z0RT{ZxzqBe(-L|oLJb!_0a*7L{SW>m z+?o#Z1PzY(w-YWfBYI~zRM6xP5RhxSMSSB$fsYYTzt}pOB$yUy zIi;k%yk{7J8A8vZ*la-#9SR5=M4iQlMsSf~4~WoVH86$6Y8aoCU@zX8M7g7dB~M9UcA+ga5ZIzW@lE3Ty-tzL=V_*VYDj+UwWxfPr=O zd}l0em$oe_E6VTneIF<(LLd-~U%!*cIns_J_d`HKA{A?=YFn zQN~6^MFkLlVlo!Srf0lT$9;_-%vM%3^)WVLV|x0>o2krS%iC`Dwx1im5X$HPcexeN zaH-=@v*RWhTB`(;u>?aq-ZTSdowE=KsV3V{fnFHp08=!8EI4aDH<>~znu^dU=@pKo8JqN z0cS{;#wnrDQj}a$ssT;{*a`40-*|dTcRVIwXw$_}Py`F$7yw#(38b`)`J{Tv?9_Zz z?+}L+Vjr+BQ&eqUTdl6+Vs2@qVNby-Vs^_(j+SC6OhQR5M}k*&FNH`;VRYs@ZqxDW zfWDpPRVt~C2Q+NN#VDqT!%C`-&6sx#(9~rRut`IJp&5rTLh6SSbP04@@1P8h9`GDN zLnXaKr$roXO#4M^P z9)LhV?o10b+t(>n3cHCiG-NId?AiBG+Sj+|kvbS*qj^J8zg{dOEtkRysW@_Po>k(g zac`(IDrP&0MD43TEqk@s#amqm4S3q$NY&b|=lKL6^!DG;j)WM%*8oWaR_Xyv1GsGw zNMa?#1Nkbz;{a7#Tmw|@FS-GX^PUMbKfR=Q@y`E$Gg;Ng8m{73)!wa4 zP|OT^xV9!}w7B;1|IEs-j9A~_&vQ#(zBokxFO>E91u*Ln zx8D=m^=4?|-xMO4eTA1&&Sxn#(&{=&sREPln6> zH8x_Sd=mb-xL`I37cH(o75!gW>)P;ioV$`!`_%b8Tm9*{|BOxGV7^JLvRi&a+|{!S zj5kJMVsW8GPpm@^>IyTyzCB)^fbzW?c5F7uw&0vX)JnD{G04J~$37YN*VyvYheuGF z-IU9hRJsYl2UQww%#lJwoRlmbEv{Sg!|+KYq>gG5I*3R0bYn0Nj7qxmJayS?K93Zp zym&WKrW(Pe$ZdTYeNht|2)zi~e^tOE1shz*ubwSfDp9!Mh1J!qpkL+|5H7pIeJzB1 zNkAZkewi;d_UPNZdgH&wrYJvD+VJSoB>@DF00eG~lRWro_-|H=K-oMg_(%Tim@%_r|`a3JXo26r@v^e_p$3dN? zCJ>)ty5P%4E^8f1=f&b|_P6bux_*df!r(|F($%k&&n`{g@_Ec(-!Q=rcT831-aqSx zooH0={UUw9+&T!My3zmO8$t+g{o}y8+W_QNUQ+Wv;i{WMZ<06ed^dIfV>a^TgM#QV zu1$5zQg1t92m@mjZ;kuS?e|oUDW#p;qKAk!yfr_^+uS@Qde`Bf{xHDU7#P*wtJ4&o zUiq0cFP6{slt#JQc^6^q_CkKD?$^bleRl9n^xP>lR_V z7|MryI#A=}$jsdfkUTM7tmnzM#fJ6@kB3{ZZsm#iZo6;GqWjVgY9HU0@lOdct9m*L zZ>&bt+iHDF?iC2T9O)Y5Fe;$gbD}joOSE|2M|0$xe(uTl;s++5k;J>X)jZ~$AlCXX zwttWY()0Ci+20Kw`N5%R;Lr4E-M)zD^pi8%@*OOk##*$08d#nwRB%9{gGZ!4B0b5@ zsxD*cQ0fNuS4o?_oE2VTs738;S+u_kX3KFn&t^n0NR=v+O3^-DyH9kGA0rZdUJ3qKqYWiO8{vy5in_swD7L|$f@Lus- zF!4J1@{k`=X=u33XfW{+CkCajk3YZU$o0G9t+c1*%Rh~FiO=i4H+X#FN||-7N=W=u zhOAEYXWhKW)vnO{tnP}p^o353@i9vee3BN+0k4H#eB~s|pTRzH&hJ%v>{d(k;%tG> z?!?xGr%)W0OM3{+#gF^lWMJOJqU(%axRbw|LHK4qagzSqmB2@^=E9ozFX2yJ^nN;c zWja0YPoB&ElSH}tElGMKLXEQBSQo$++}mcpy?Au?Bkgzn7tH>8o|Qk*%Ien!Rd?%I zPKxW`74`!8^q2*||H6GdM=r5)*y>}z=J~xw*`xSh5Alp}{J}i@FZ7FwANWu~Uy#xh z$aOE6H-2F2DR(}BUsD-rg2IC}@#{x{IrM;}MEuUC<8ESLW_h6We4vn0&;sR|sCSSO z=a@2gpv*i{)set08qB8|YZUO7$icvBXM>+WLN2!l zp4EJMll$rQq)-TopNGV z1s&vidKC*g#0K9{dUD+a3Ixzh2?(|Mup5eQKhK7HC@FgGd;18qyUQj*^@(sDHkchA z!eN8YW5A~=phxqejg=8LLlKYHB3d4XTp>g6;}GZBU@an2D+ww@hN{sa!bC`Bd&qaa zs0)r!SA(LwBXF|#Ht>B4beDosV}my+AX!a+ejM@;9nvubRZ|DonLKIWj(Khpw!#&8 z&C&M}@COSTafk@{cHRFF8o`){NP(hma-NR1zl^;ubjm*D6~_&%1k8j&bx6p6aW93@ z2pwRxS{<7P0W-N@%Zeio>=Pkq&)2V$UguQ57XCNROEc#BKo~d) zi6NklP(ge7NZA^q4)F~K>vQEp@QTQ*i#+iv3orlq{rZG`eBu^1cMvQi{#u#}La2x6 z_`C%r;@_Hz%Qtz4{)0#e4tL%)N$3!Jdj#aAcP!5JceJ~>+?hb+Nkpu%r_X&K2!;sN zl111MAc=|b$0+eSROntr!hIi~GuVh29#~W|K~D7X!P$hs8*;&qpvW8X`iMvj4kXJ? zIVOv6#QE%Fd`{g+aQN_MgN+hAhfX~PDdmCSxj-<|qbC?6=zE@|oEt~-l2e{0+tTxq zYD73Nywet{XobP8{EGD6)9lAkJ3r>Wt0lb@!Tmn6t+LTZp&QQ;?Vkbw1YrWg(Ky4+z!{6XI zIr;cNZjw42N!;76yf;($w~ru|QL8-Zf;VFiI=zZ_07V(UeWOW&`;xN6Tn-nc$tfQ> zlN7clPFVktr3He=X#IzG+S!*oGk58kXHuT=CcYm=eQ9N%BYzjqw4U z+Rm)757Ly#(cZ>8Ue94+bA<3wP%d>C7dsaxk@r+P&s`g4L4aC~WdFmJV|!C>JTFC0 zBw+&sK97A9=9?dJGqzyvo$Y>W*20#DKd&5qJMEg5cfL40GUY>x)4MZ9_OS&4uNL!8 zKY?6{$W3_!J%R)85)xAjKJ>SPRq56*3qnwcf=p#O(iSN2ZoQi@Eq?11GFxfS*p_o|3#5AmD@FRZ%{_J=DE*~;WJBWVL|EzEmha9;DfdpP z>}#8&1muIf7uot`A8vf$DFl2T>%hHK%6tAWX)gQK(X!v2&&w0bqN>W!eP#MvWwM2F z2tJQ*H_H{A%TY&cSE-4|_eb9Z&)MEl{CM)Ul|41=T=Yjl2L!S6w*dvi{X+$A^7?D-!Go!qJDllU~Q`AN>?lkrZXcHt-eu1~9E{2ODQ${U`a9vf5& zLOuck+ouNbqr}`EZSpzC_|<}sma~-tkg8{rRYyUk-b;ac$=-gcp8|Fc5sp`#xC9R= zEcbATKb=aBUXsNbV4t0@l6Am6JO{j}hJX-NiITF(JJqRtHG*?B*$Gu>rP`fqwK-kY zd8xGpJ3;83nm0SOct^3i^7C~SFKR)GPUc=!p^_zPzp+_oYxDT(K~HP#&nLB<_nsQC z5l9LBnUL0yTGK08Pu;OPwvQmxek^)jmvU3H0VMiqqVD6^lFX9i=M^ox(zCudwn}7k z?GT#{%cF-@>admrpE8Ua0-ea{+$Z~mR@-%7R=$71)!97fE5m~wADAfE;oT>?|5|ewH7OOzC>xfWyr3x0QnZ0YhzuT-pYra|E+ijP0EMXMy+cz zWVQtvmJ?{L!G7(J&D;Okk7*AoYWM1H4`8RGy1R7N1a>|v>a1$){J`u44h-g~bX8pHGR3=ebp&?din{W;yUsAX3i-P) zs&tncb~n0oe~jtYDC(|m?4DTae$U_Y<#^9G!ycM*&tOc?a1jt?>iNm+DF^qCsq{`5 z_By-tR>kz*FY3)}>|JK|=7W3Jb~~u%-+ln+hF!i@)PIZP@7~kt07+B#4Lf0;QzRHgVklrB$M=cz^6CsQW(NP{HcDI_a)Zr~!_1oQf#k@L8=#Lj zaBu}Q2u+;1N13Zkhw;eHuge153Heh8;lVCE%m6# zD^CPh?SURrM~-7z-ZG%c-dXNRyP?<_9?(ikI;{CN>N`J0PoEZz-uv|WP35&+h+*4=gA7B%2FCSW6vD*W^2^c{UR*P=0ide5Q zGgk9HLxwZJlWKyn{REJ4EDVgNv)@>-w{=%FSI{E+YjPJyHjUQS$#Cb`wLM+tL$~#u z<+ZYsCHd7ApIDfj(TIZ4?76u08+Rbxw^3lD5jo5X_q(+dlk3FsU$L$z9^BH=xJ@2+ zl;|B48of>`-W0>HD>hDFMS&O8MsB`a^tKZ8{jxqPGlD+>4?MJCbQ`~JX2f}Z2;^0| zA%2qcbcOTIb!&TkGYB=q?A^+i-h8MFd3pPp9Mi4Kx)tq!#I)1&#efh+z6+^2L=hBrdtDV}$-(|PAvU)ZijiUnl9W=Ju=}xw!3)-?7U8`@4@U#jduw|Ea(I`@zcI;GJK0?(Fdi zlscW5S1%nI!!NOr=uOz3oC%eFDTHh0_b-Q17|eIQGUj^XrL%IPiDV5a-b8h7IbOV} zpV-}-LGqC0xBZ}%bR9wQBYk{C+qwJscXMv%nEqV+r|8iqx0#WjOM|JKg0ibxm**+O zTl8a>Ca?b6%zvEHn`1V}vZ(jjV9ksUu1q99gb;JM!1Kd#dr1suvnkg}L4v}aT=U^I zyYA#O?z1i$9nhxhDH+nW0)h2jN>f^ROXU_9hoLgNZ@K#xqnoa@golLK2nINklx-l{ zPidA3gY!M$JQl!q-QzBOb|=qrZ2LKL_*2*Tt!f-du<0(N>mgS4jp8aozUpL^-d|9u%z-8AZcnfG`F`!YZN)Vgw{ zfCd}M!>w_h1QWcDo4R`HIyMsmmr;W9h|3c(VX6?K!4;`z{ZI5|UaWu5I4DS%zbKzQ z1PMZ)Y6n5i*m4~7P+9TV7{Ro))tf3G`=1)9o%t9Z0+J<8UDQa75{OnR1W}?T>wp<; z&FT1Ow^Lu6Sch;mt33O_1qR_kVZ3RiXGWL#&a4|9zgntvI1m(nRil{;B9;mBL4R7m zXL#!8`sEj|tEYY(4;t}!aL?e(#)CQt4q#w47!490ltr_TZU(xrxw+X-UJnC| z+ui%kE^e%$mj+y8+-q+i9Pf8>a+#f({x-J0*WV9F@D%=aJm74BNpnl7DFN?jNX!1o z#ijcC`kEf*2!k`f{I?_-S4wk??YE5Wf1Wf(YN7+RL%@Lbe85#JeO+9Wr0qYifR7034IV zuip%!`IYoXWHA4Y{K4q&-^j@=`#cFOKdfb>0ij4`r+xr{g&xtq4~**t^aJjD)05fR z$CNM|X&Gkjl~=4aHRqHt26D64SUW&QZ?CcfU|`>bez#aA&?|O`qlA7F(l<;gM{1|R_?rwNB>9)Zf%_k@NIiUb3}HvV_NlQJDWO0wIK{OQ`qgf z^K|O^B9oNROr&w>I#UE&`Rm!u6ncBbW<)-a#59hGDIqhc6iUSZ!_}KdLmjXW`(qZn z8D%YNDM^w__G}eGNM(>hWRJ0rwXtu5u_U`8`#SbD-cLQx_xF8& z?>UZhIOdqc{4>{m-PirLzj2FrRNcQfI*m%&dXs>TAoW(iZ5&j4F7rHe3n0u#C0W+b zdDSGuBqiJdFEVx>v$s0`GH_5-gt?tKsD>J>R>YV%K7Rg|GE8nY3Y8g75R+uqknh0o&pK(Juii49o=p z5)2^W*}sn>t;S6%UlIFzUlh)8z8WR*;%(5cqPPHc7#sTG2cE6VPb=LUdNTFWG?O(; zbAJ8D)w`w#mlr4%}ba5*Qc%!ap_dGOaAD zMOVdMYXP=%%K;D^#P#jWP}%x7-eVTdf7`j_G^IJpHob_j|Osttl+gbVD3r|c=-}dTJ#va|G z+(RhE?sVT?@%k%U4lo$H`tSj@f(!H|U0@BFfJX2VeIo?Sgl4{L?CT-5IG={)48Ekw zT+MzlJ1fJdH=VBZ6fGBS`~(9zEyIgiP~v#g^Y-hf z>p6=BMA|FM4_a9qfcv7txep85rIwb9b*64%OIRP8>L~`Op44X~)av6FlA47S2sLQgYcGrdF*Ldtq)zQvUftzfzFT#BH;FTfoefke~d1>b! zp&D4kcK?FlJQEondfqkVv!0{ZTh5w_ZM0sn;na~o@Dszfhy^hf5ihogZIYZiqg`9U zm%kKuUDyIZ@NHAzz4p3^)@F~!CB7%}*wnK5}==v+pkmRys*9z3W9c{ucy`>p@QErR_~c zNUstmvFbXWFLz~}D`r004ww>YN(-%}AL$TtA%g5qR zylDi%9Js?(0vl8iQ$lx5p&W)pR$ud5~-mt^O*EY5&tyJK}v#BWe zlfj)bLg#nqzJSQ_15V+H_fALVFN;V69_6h+zq`CX9FC`tdtLmr{8jb#YqrTF<}0w> zizb^Pm?+Z;u&F1p_sO*ffg=`+O;93jBtD?HBQl;?R@d-}L0(315^f<~#hXP9zAh%; ztSHPoulGH~uzF-Uhm&vIO5)x9T?z`HRt~i;j9d$kWMnfeLEjumdMk^0!N(I{zROam z9hfIOb^M#&n&|o=O51953L;P zNLCpynY)s#Z*8u0T${X}^xJWI!g;^SLwF?4DbGf+WvE;+-wpSB=Qj)2F!@Py;YW@d z+u|C_ZUP@ZLmGXR;^}qJms(qtrT%(G*Ug70&?O#s#c2VBJSfXlyp?71V9_K|ZXnxy zHOKgNSqtX(&$9QoGHqBEO+FnAWOkLh)YX}rKLWNS?uB^2c(82mJ3N?Hwj;0SG;x^Y z`Kv4COo^|&ld(hMz@T_(X+^RbKbnU;DLzE__WG%PYSkcmp*f_q&}`&NrqIA@hI_Tu z&PR{IpwaD}klQ=SE`EN$Ct0KRq|Zh=>TC{{Qut-s82wQ`0!EX}-Q|tyIByBon{Ve#7ay0)4G67n>RH5(Rc+JRPCD&+)?65_vs0 zevDJTN_$S&>DrIHIG#+P+g@}V@trti+Nl%RDSc;gRGP}a>+5}Ykr(v8PNh9f@DH+q zPpQ+cp=gE;FmwZ^^jQII^#QvVU+)3O63QW5zzsDN&2>~Djf|JG2hBk&{F+z5b@~?) zDnaDuLG!^upXdS+>M*!6h=T%pOtE7V@k%j3L*Wv%*YGsX*f$FXE;k0>=wx9edII2k z0nN04VFEBM8bvbHg-BCo1LmdDKA=GOSwR;msQF$0W?@J0j;TH2Z96#l;A9Sg$O@VO zft64oF%*c68f1a@Uq=BOM>M7s8dEAnj)Hz`~6o_9LWP%K1i3`ge40}KLb_mdHtlyRx(O!|D6{Eo8 zWN6NSK!4dD2y{k*CN}H+3q05g7g15}lsOR56)IK`3hyPLe|q@0w$Q2~-_eo5#>yZ; z6exxs3{?gZyxyr2Y0+$2;B2A1xG0+*}!w2F^{Vj?*|zg}*A zrA`0g+B;D;;J~BCr(&s>j(A#C6okGlvI|PmINxjDkJ8I@ zIhsXF4}G}p{qAA~cxBGcN+Q~N!Bb2YDZU?b`phR-Vf1Q?sg^P=51!^!E8+^~Q`{g} zsSV+>51*jA1>C2dz8A-GKl)~9Tn0GU_kQf$EMiaMqA(JCs+IQ5<(NY+$Q2@j!Os5b zUi_m#E5%6Gd4e5%2u11fft=geo?2-Y`*=oG6Ha z0krK-h22J6KvA|RlUJgz;fGs8{ybF3&^#RY*94v{pdIjFdpy{IHGqc|auN4Qj0!ok zpO7h)9Algu`7-$glQ>`yFt(pODVs9iLTiPETA{I6q4JcK?Dy0P?2uG^uQw*#Hnsk1 z>WD1nPxhyiGXZDMy3#MEFo~unamt?#6JytOJX%QR7ER%){K}VuTW^cW6#gn?FLrS_ z`qVC*i!nvC^6S~*uWS2XRnIuwkW0&W{`_}v^1NVhiquOhDn$M=%nk)OYu_H5d^7O* z_Q(efwiAS{wt@4r-?V*0-cU=Ae4eg_N!L7^6rTwfq$UgM(U=jF0B-CqmuaR)BS=XR z#KHYNpFa0-w=}tA9hSjQZ-09Z!9h(HL%j<>8P1A4$ifb1#qK4q3eql8laOI%=ytDw z;fqtH?)cWYRAJYtc$!0v?8osrIh8ql-e}Mne2TxR?L`Hx_GhtY)(SOs|_v)90vxWz7HmR2e|PlBZ!Xz619aV z#b?J`BaT5H*9Y=E&YSbbC4ZHB-Op8!?dc+7^K2m}zwE$<9G4y}7rb#$u;}58-VU=# z3M4f9WeTAG%O{6`7tbNPc00QI%KMS2k$ph?$2~S zT+6Jb67rDyJN2Mobr+@a)?8k~#&@asJx_@r6PuG%#V|w2x=+Ofwqgi<%f^~qp>$Yb z!BaU2vU*M%F6v#m`?f;C!&;qE>C9AxIwUB?-nu)R@6w8sGmY|yxAZw9Z$Lo-iQ-9jg7jYuXPB=VJ(6BW2?}HN8x1nN2TlwMV~- zuc>)uvUEsT;i-!9HTFhd`f*9?$4`%!9l`ngBQ=K(LX_}A7H&VVBLQ#c&LmdEU?#*? zZB=px@;EV!msD4JA6vJzY6(p6ii8a(!5x)c*$HRzfq!*pA21!z_vfp_wKjSHmSak(-6XHzMx$4FT%LJ|E zk|*RQh5-{Kb2Gz0(-VA?WKxsB^X6L$jR`-27G3ilF*f_WAGV|C+<03Icw6+Uo9Pr< z3QSvgr&=B+wfI!mzRqjL2ZMV}#w`WB(Wh^&lkG3Bi7Ufo-qvQg6b!~xlgu)|1dhL$Vqqd5p^7ABM zMZ4_>sa;!))KJ~l#9Q1J(cYoZ(5cYgtsvB+-QFkG{!_c9^{C}n_4y&O>TnLy7;o!@ zS^MvZPHnR;4&ScJsx6D8uGOWAavywm)32S{un*k_W*Jio-K9s}JKA-7 z3MA;C8k(BU>?HCBzwXlkt?;q74KW^^LeIQe5Bs?u?wW4v(Vph|9zhnd^S66*^m~Qh zi;5)o-aF_KD<|F+pQJ&1z!2&vn54v;V%ITri-lR3C%BbW!mNr+6&Z=Rh>wt7DguYcc+d7k~6boVvaAaNsat2!bw=vs^=qkPLgXzG+z!wB=9hesp3>NPH2ksd zuEPnpwafYyi!pWb8Y>EBVX+(aY|Aed{EKh*gW~SHf<1kU1q5o$RA6CWaUU(PH-`h! zD~(dApmOtVkvby|1daE}D0|dS2>$_6=>Q9d1zj6UDL6y&9B-^dYQg-?3 zj4q?LB6Y`p2rS@I56`F^si$tYPONnx4ml@}V&H#j5l8iFn^7kZk6Z-)aIS5OKKrAp zyC)~G9IE?=vvcpU1@ITx*+L#%sxuM+Ef^^8{7l}T18pw4Y@pz*vR%m?G;0%|P~1Fm z*bj1u*lXOhXxT`dG?hjnN!+y;gNo#5j8_SUUo`2Tf0%whM%-$+e*plz@A((*Q#EvA zWhTGv&GiL8#y@L{yl6VGY+PdZGv6wg?cRecLM7Hs*+}GQ*?$4A1u+1I*!c_&>rOO! zWY6cimlP=U=6?b2T8%zOeN08TD_W7;t1Gy!Gy6$__1N&X!(ia#2ep$tj?(+hDRzys zVF=<+-aV~#ca1T?uRVZvSEe_tf#D0T`|eqXl65uS>pWjX8J&vBUs)ta z@ptz5L&elDe0u!yzVMgfMfp@g+ivx6Zu$_22jzcMA?)Iqdc0hxSoeF}O#^IAv0o37#^yITvxLfbjmt=G&Ue3ZL4EiVZ`hTA?S(_%vF z3*B%My}AJ4b$>)(`WUIo@l@n-E=sfMGOx5W1xQw8-~>Z^^K7FYnK+bg8!Sbl>KOGF z0w@9OwlY(q0#OtYJ@;Mwxj_2R`LFu0>H1eD_PM17x4hJp1JL@ZIE)}2j34!E)b(NO zIeNz4*QHDr_iA>Ydi{>^EO4xVmP-0h6#}kVH z!vd}PkYRuCBz~0Qt%I=(QeybADmzkUss;6XmeG$4_P??ea6fy){+vI6mTXYAZ=Lj= zh5jFwhJw&1Ah8*MOG`i}z#-Oer*wQr7IzM)kn8IkJ9`Hi4W{#p`j2a?Yip~I zn;VY@`sY`dRGmrRe@qS!j5Y(`0f=Nfsj_)=VRrKvC^oKcAJ0x7FD{3DU9RmyPaltu z9uJRh?CgE51@QM+&&Z^jPyfK^)GUCo0poS`C^l~yVCC)YowLJRI~zwj9{s8w(|rS@ z8>`DZQ`5auN5jMY8XlC$qUp)S<-w`H>;COsqX*-o00I42Gzy^X0YHK6?O)xRCrwo= zj$`m&2i36Cq~*_YIRtd?0NFl?JU>e5YW=)%G=EUv+D{rBPrz*TlG(o!fCOScx!MD_ zRbM-rQ(K*t7uruGS>v{96*10!5y$hRmN^lC_sedCOlbmudFw5Xc+lE9-`c3>)p~#)-P&s&#Nzkt(+9^#mDx20 z6L3Tz%IF+MXq=_4F5?_?2#!V5k8}Fx0pU1DK~WHs6juG%mU=KnLgEIgt<;3PXhnaS zqyAPMEa6~wufCb!?A-qrw@2C`9<^5EiR7dD>i(USv zxPzXLEhA#P2Dwf4@c3%V0aag*0GQPpep@%3OOB4_EkBZh#N%HOeXs@aX22u{C^9ez z0f;h?b=36f2S_zAclZmH|DkALT%qaT56nW2>q!8v20-=f;xeEk1AH1F)&PnIur>gp zfq1}wBxV+XU;|?XfN2BP`u}oi7N*|k)n22|+oyMmzI}3qu%m^BdT`_dyGM+YgXjJi zOShK-4FJ=_cWK0aJEfv2;{Raj-|fj-=dz%E?eQydRDO3uXD0K z)6uoP@~;8VRW19or#4NC&ODw^dhTxnpsS|JGl2Xp{3KO-ERQfS@n1g~fABdn%KTdx zx8(DjXrn!gPI088`r2#)&IK6!}sCw?ns31I!#0Pw#QYe^rLCaA*v)nmw<<6i>+ z9XmMa|Hn~AFQh+y{-2+m_E028gf*Plne{tTVP`%~?Us1xRMcHgyXg zV6cbe3z0EBNZyY|)&Q0scP$>lLcg?*yfOnC0P(i9v0X;fPs)O54Y)N}S?Fyg)PibQ zV*j=z7v@YyN{sZF#Mp=HdBH;<^gVC=KMMesR?~cplRXV3!UeooRd_)3TPlo?cYbE2 zr^f~A2SjVFA_ zhNtc=D>uUL=?%D8OzNR#nk8Dq+?@D-@pdUo&E*xh(BFD8N>Zk~DrqD4yLz)nTEN{v z?iykRXaE#6NwSQiN6p;8Vn=RG17;(X?O(_dt_6 zY3l(@r>sm=IvZ+ER(2;akeDut_LCJ?1n4g72S%x7_bk3eTz*+?iDP$>Fo(`RRMmI7dARn2=Z}ka6_<(D$^ktZBYeihsZ2 za8*91axJu_k^U>~U^1+L6 z%fi8$F=xXiqnXni6%>{=w9`laaYE7D&wlR2OV7tea*J>J+ZT$1^&f} zBLmkx8L6EraLe-+(=R=RcVSlOKIyUf#k5LRVZ1ZLOUmbJODBf$-~Q4`7LDdoMXJca z(0ij3fsa26-)fT()FqA8eE}{7nvlVA^C}3h!M$eb*nmjSycgbkdo7X~>Je>FHfYeL zCea-tqNFSJH3M69TVMbCCkhEQ*nBww_yOgD*}yLl`0cS}1lS+R4m{ z-$M4JV+Pw2+Q%gg4U#22HxP=CQy}nGQ($0>TM}A(UX>?-9H>)*R(e}KtnkaVTa15{ zeXlOclm3AGx!L_IYz45r8)_qCh0=A!79Jqv`m%Nkvx~)|n9Oh;YVcbE*GNx4rwjcg zblu8zAoqfVEK8+9rApZnf4guo9Itye)1>svJqj*zWS!LSSRMLi`nms zCuq7b1bpKL=g>f|;(kLZZ+Tq#=nT|aon!^4idh`~mKI1u7jIv8OyS`hcg+ZC`M|p+ zAyqN2K39QT_%fCuf17VP^q}WjvWbFeau`=WosxCltL%n&{&|Wz-01j~7^in{jCd6( zQ^zjqQT2**6vODmx!q5F$pRj`a^o?38^V2eI!rCLv+JDfbNZn3LFng`eXe^=-A~uo zoc%h_3G55&pldfC8dlGI`@Y{YQL~v6bssL$Nlmjsf^O0inN_g?Z$n1<*Kk{nuqdB% zqDkAKbNfp#ln#d*WH%GLYKCPe4lf+@|4#e0N43)R9l5EvUuomN`C-p}Db??wY4`Y~ z`P0+26@kLT7HPS?+*JRRPZLL7o*r`KbN&krDF@BFyXdyIZjU`CS79U(y1k29ibL03 za?=LU7S5topcwF={|!S7WFEypz%cLKx$yzAigBmgd%er$&+7G3n*wJu^yebnxv>sr z<_b*D^g1o#BWCM3!|FQc5hxcOcqI#cm0*93K8R1lN0Q(u)q3Z~L%W#Fpc|o9^F)^o zB7zlzwz>w~Ae?s!h;?06LsS?B-SN6}kN&lWk)v@2R8z$TT;RU}HfV1R2oHKwu;oeUnUcg%t=H zfUZ*C&xu6-ZdIM(epeA|#fkyJ@L*=ya9t1xApt?4AiCsm7FiHI_3bP-HbMrQ+X{Sz zZOaM)(8f7sAaWK#LyTm@(_EN3P!y%3`$ z;{3!I?rQ{rpkPw?7?Jz%b9h=-)Tajwku$hYmd2_cwpd0eKsc|+0Q0aZ>eIjU!;+&nG(9F#yO8AiA z;WvYi5yHZr5bTVGqC)KK!C2U!2Ha2?9&vK{oyy*4lDDc1eR7D0U7vUKPw(WwW{@hD zMhN)*maWO-cF_P6r!!8OI}_6->*(K>(r=giogR37;;7U(#Ee(7sg+O+`pb_ zx1XU#s9gpFhaz|Wr-q;+3St#RgAZgOJyL1y)+ti64R*Kt)54h@*IW zNycvu_FryZhpkcJICUq~$t+wIM{`pG$|C`BV~mUS$&QuFe5MS)iAB@0;{$rt5XTh6 zmO)yueb$-51cI=wHU?o-@!mKryC^K%kP2EN!{{*xZ3(9}iJXhJIhpofZx;HH%X3gt zh#Pp8i+VILiQKNRY?vM(A+qSV=GG3|*0sl7Ez9Z?hA>mVQ_kj3$>mQo=HF0u{6=R# zB&wQgg7QTx_j~2Uy>=Y|Hu+E2BjZod* zXqIree>uREyv-y$nZzdZp!)G~%g-wZa-Bp&%Z$I&5zF8=? z?B=PNy;<`i79M(%lO@a(@=gw>V_n(UQ8VU>a@WOPrp;D%-grxDI?)g>S;cd*h*_bPDU*%AL-5P$tWT(g6sIx3-tld~T&?KNx z{j|DC62Rlk&5UBr#@fx%LCsR51ZUnBIH~!QP|ID%7O$jQcV-#yyk_sC7GGXjv_k6} zX6pc6nc$-e>64^ZCcjp6L#sx{-e+W;=2l7X@k{Vr~A{uz;cu6 zX#>l5@`<125pU1+G$O>6%(+5lTj@TI=;W{IaoHqCi}i9n=rwWdT?p*G{JnQkwe!qa zkNBTX(g|;0mO|f6NFV$678yPX>S&*7fp(X24QXDX|L)a3fv25nuSpuo9a>|}&}+#>VaIgZs$LZPJF+t z%v#;A{_=SJ>s4~MPx*wq_*pPo)e^3b0_l*UT6pLK3X~2>V~{kzj)ZfPq52qzG7i3% zvbG-yy^aUAL{r+cH;=%_QZ)D0ENpK~-v`*7BWQ-6fwP}^4}(DyDaT1ve$+_ZY&CS%#m zz1KUZi~E1Lc6PVdLrZX>Ua^f%09+hW|I$P9a@pYdMuG?I0Cz|7_*|6PE$5 zeU+c){7ntBigh@EzAbNV`YI&on$7s=zT13{1>A5hU1s37+|Tvs@v%cs z>SWVyhVxjl+4N{jfz8DDAKyLQ>^=n--inRA{q426i3z2qBdoEE#<5EbBS@*Id5YkGfXR9IkgUmow4s&S@>l^}Fn7RXCj+Z8R!B8?NE1_Lpln zzn$vQ*-dr4z>gv6?3vlgDmf_B?%7z21#ZL{){SUXxNm4F%evO3= zPBx2P8hpKE@s`JfTf*%tQmi6JvosXU$gJqh5bX4N?*;abct?_)^qr|LC#H?55H=BV z2oKYRG3Jn*yMMWM%#D!o&cG}*;W3V(NK?SI`g(mR+rhIIaHOr|#Br)p%Ch>Ts*uecu)aU&2^PbZ*FTkb@J za3!60OA389_5FG1*LM&xnW=RlF&W~!i-E{;mvcSBUZ^g4#1TQb%iRYpDu_`Azw15a zdG?)%{m#*=LHTQ=8$Ax?eDu7rsM{XnzAht4LP=OKorg=yxzLLxLU7yj zjF;2tRl`JLQT2f$$-BpgrB`XuejC~UCHDV%B2xgcSAX&=Y=M?SRfvbk6&| zxa|KfTjW7nb8jPnY^^chFY9O416X}=OV%`fc4{=gtQx?yj3$G90~9%v=!A^^%ce~L zu^(>#2kB?0JtFJd2gcgRfy+$4$LF@DX13hlHl}A(tND!Hu&y4R*a5IE(4!DWn@^7n zjFPA3rOZkCFRLZ=OPc#B5@rMgzsBO`Up4jp{5sJCQ%hZaeI|jV^G4MhJ3By$GCCnxSW{-Xxb{^GES)|T~ z5lBZ{^K#aMN6Qp`eZWjd?+x^lspQXM*69b+^GITZy|W~46(eRcNWo$3t;zP*Z-~m6 z!TBvJd5cQL9ZiqUACLzqqvX~t`#>tGaZpYtZ;w2B;E z$&vj4#nwHqd0-2VO&VWZ9vGkgi|)t&c0hpMEq*QVzR%XnFSkq4h|HN*;Xv7$^hUU1lmxd^%W;`bX>kbI0lK zT-P$D)H)Gtumn#Y|Bpoem)2tu$4|Km#fDq|S0cZvp2S@FKgC|T7Zyd))j+XV zK7%aohhe7|64a=O(A$aK+S^>3=tfsKjx1NurTT5%S2IP^3ujRRnZ>30Ub8T8Px!&d zq#p%wTW0|h`SD{N*~>B)(B}e9Wl*1m{FBJVOdiAKx_|DBzk!|K;*#Sk`$y|TpUL7c z_rsa>(_*Jl>lcL| zF_cS`>PO>A-|kvwtDEF+2$c7Kleko`^*E2IX*t;V>DHO+b2R&hLAEy^M+TP!G?e!TfO!;wFMBALP?_qm?y2$%1mD@Rw!gt)$ zMLsXk5NRTPWVRuvg>rO$c|SHfek`Enl=G+@^duWd^cq~WyI;KcIB`~4!81Wru}-r+ z_v6p(wb0yWl)|X2teEdk99InDO$G?HkepYgONQ$?_tE7W9Qm%DDyPWj2J248eti4W z{`S#9q+cE~#`Cq9<@Uiq+riJG&#&^V&zu>m6_(=L7XkBVV264>#ukTcFU$9;n0A~L z8I~Rk!O*MjSEtL{GY&|2 z+I5!WEqw5uQ3^8`p;lP@#aVhBf)UMKE!Ir+(c*o9KGQeYe1%iOe!J?$?#}0k8RhE_ zF7sOMpZ11vP}V=x?VY>$X_5W`r>kO_*o>afP{*VE^Y;sqW;k7B1)d&n#5EkXnGFS*`$;f_~Hz>EfbLGho5c~}NE}WB9 z_QIP(fT9CSJJcYL6C~X=?j3vp1&sdmmT9QuiAM&!Wqewcj&^^K#;ws+}l7^XBhdAFADDk+CS(#pzQBTh$VVtK?^+YG6Hvap9jpy*h zVsQe=M!X0kjRDDY%XZClZl)Yo&&kFGfZcI4oCH()vzR@&q@Fw5h1*~@G;UY>fzL98 zSDClE2332l#>HlrXLdcUV$e!QDmf8&Qo2=L0vI;|`noZcOF6AJGVq%Pa+)C}J1joz z)sX$u88aK%AF?bv_^7ALM~|1o`}IQLEN< z;&S5e?*b-N^Gkk{6TigJljLfeb9D8sFLV!wM}W9@91V>-D@}OcpWU@c3|vF;5zoly z?2j{7J(8aN`>@BXvuG6Clz6HgHSy1N1qlMHU4n)S;O zM@6FO{fr;Qo6mS(FO)|ejL3!`|9tNFIwC2fnG*w+!9a~LG~5U@kSei4(VSBD7sf%) zOVFK@fVk-SE&cLe-Suqa^xBN`3AaYmN`i3GffqCa#i_JbNLtZBZ*N0=aUw)S4>mPN ztF;RiF89}?fUmM5)&*%9u&^{kA5x~{Mx1pHUEty;uqNS+HlWkDzBz9csIL+DT#)t} zi1wl$m>C4)K+6P*gP`nG$TKPgh&ywX`P;ODjE%sSf-o9d^ma zO+9@*a)`f7u>X7rgADB{z0mV0kTx~sfC82v(@LCxVCO*rbgW?Z*=NeMFj^c`6Hn_P z2=}7;Q`O(x+w)6Q3waf)7#baxLjXQtn%6;eXb_}T8tAKr7u&uHwhc81@oS-jOJHf$ zLExLLU^lgJTL}lk4V@(HME82``L!D9owjU0+23*>yzIfhx+NGKo#6HlcDH< zX?nPUG;AC6#^4v$?Jcb>64c%r(MA7$@Z$S>RMVeX)>~eRVOt*r&wM<;k66XCuX=tI ziT?<}(4N9Y@Ucd+p80g+%%?wkpQMaG-8eBuENXms3<}{9d4IT#ggr#_4JireeS}~? zYG!{FTlh$e0zJgR^krinXT#_huq?9Z7;|8ixFWJ^{*$Z5n`^>R>PFF1pEPabW9=(q z?Y*OgE22>gk0BU3Bl1T+JrK`d;Xcl9D9(RB&NrLZUJu0P4StM8plofF&qV)$z23Bq zootBxC>x(W9h>eM|M|YLJ5YM0d`#Jo$DK*|It0AZXzuCJp$MPjq+*oXvI5X2JM2sL zo7980RHSUuJ!RM@g@H$81Nj^(VpZ6A~N{mqwq z6!>9Vs#w_9(wQ%JMa`GJ(=`&(uPB?3ZM~FEP hc=v3&s7bm3n$hci!Z-DHi{6=Z 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�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 R?6S!_%#0rFS|2;|{{Zw!0S5p8 delta 4345360 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%0D4pH?cEzYyP&r-XG46}f|7Nc z8t-1{Xg;ojcG1Rmm8CfwT2UjC5+%9WP=l(u+iVgSZR1V?vcbkwEwsLC)D^f>zdNX(NW})X9FLY^m7Uk%C<^Sa5Q*BBAZmjU%-8a5+%bOb{gWkZ!A~TDM6_ ziKAgV>}U6AO|u!3UdXKN#o=^*h5oX=pM+-lR^<|O-Ze) zObYd??v_-ws$toN{Kj)V>&hx*Y>uNu8ogIl1_-THdWYH5ifXCQk%YZ1WwR7y*v<=$ zr%F|z>OzrgN?xy5Tr}*0fzWEkaoMyk9|~dJ-QrJG!9iX!B~PGJc4-t{a6odMvNmr) zF7&S|+S@O5Ycq37N)-9!Rn4NfB1;bnBw5(>g7cI%vOGF1L4NDsl zrE0H$0#@jVt=J%idzJ^vt28Q|m3_YEf=-fNRI(wB<1Pf<)y0hhlNpR*FK6%as=iFv z=-_d);}XF$`L6>DzzapV0KCwG0%1Mm`;flEn+W=H|HHTpWY~0Y(oWRY#T@6fU)+g? z@J7hyuIVv9ap1}yzCW)#Zhv0PXXJ6L|I>QnzmOT;`Lp#zyx48?e+V}EVCwzOlZR)P zCH=j@ddjJcp5y5^>ZVR!e&pV1>GbN&Q%+~~p2_*}(t6{{KOg?R;2vfZ-MHvsYl-o5 zQ9Tr&mT$71Qtj^Lb;~r|SNvep&1F;Fh!C0apl4W!+|EnrLW`r8h>U;m2r_H7u&is?$p>Rukr8|jtiDs7#N^(IcfDtO$~a&B~2+sxsk zXO~}UCO!R(JU!o1uS@4=nAlz_I6uh>_l_j5J>0jv;@O_(*Yzxm=t@(sL{EmE$Vwc_ zl6jSB4B68*Ee%IJ8ii^TtCLcM`%NckLv05}J&=vvB~8h*HcS@;j>!~<7zcZAMR=1l z71Sg&lcGoq@1@t6q;z2j^TX@y!E905+|*o`CX*H>wydE*Z)79u2@@gaw&``c?zvWK z<*IBEnP;nTbn@MqZI~!sgH=ov$u1?AjahvxmhE3pg&CN4jf>T{&Qb=mY}Q9P2QEm} zT<0K}I>sb-jquuD+^BjeGoy@^>E5)(>qM-E>EEV*2>m3S;b?lKOgfC)mJ#lsO zyIxa$`*~+S97rj)-f=s1r?v5&1qTf*dNNMmH@=&7F~F#I*+2i<-phG@-{^kc<>4zU zA7%|3G~O-XXXQLvw{dgs`QhQ8!#_Sf zzcxIKgzX;2!1P?Ogl0x7v8}~whM!LU*RKL%(n?Gxo2n~NZr8qXmKO1Hq^$9Rhk>7# zqTEW&a?6{$__>-wn?~hYQ(=o<`_3BkD&0!sjspILovpnq;QNsi%p5MD-1Lh6T&G_} zz0c6t*mSr3cJY-u$V-3{ueF3vKh)RKe!_;M%l{m?$3TBjY1g2}=XF_|ho8m`tkmnp z-m(hMmYDV{YHO?@<|8ph##uxaKoW9q@QQ0m?7i`}5?a7Dc$R@VQ zTvp9tIlO0@%;S%3FR{8$Kr9z*8O(xRe_ooj=z7$ivb}#45IKz(u310YzI(em=z+^Q zo2yx+cD4JSmkMe{-Sb$^h&m`ClqO|)JTz3=lJ)5krr)Ku9ic?{+2i=5awW{&BM~G= z0~2=IW<+{0o7jQk#9Uj&P%w{9VX*^jO5UMG#j7D%Iy#*(n zh`cUZ&s4P#d;j8$u|&WgDKORM#F4I^@U*QSI$C*A_9^j`AFcLE&j41J>!gBLTBWSq#UcKtEV}QM&XqOR!hi;;t zSL1YilNPl}|BDghV}mUCaDBZ3~+G2zSy1 z2W%o+-EWS=4bs)yq@NLk;WP>2tW1atcwWeLEJqC3tw;_ccUHI|EHyQ4cgfkub~CW? z6vf@3iV?WHI}+1T&%b@9?ZJ;W;%beI8okP&kJ00p<)*FUUl`J0iZ-nJIL0W%S3W8e zss38@mh=1_aeW0+d!+YO)QhFqA|LhdHs(^LrhV;I>lVi6T+Do=3dM6vr+R2zjMv?r ztY53Nanp(~GLgq_HWFKJb)RQ|_6*Nk``dVFOJKD2j7g>vd*79*U)eL|ne64QmCJ{2 zp+*$0Y=Y|({|1xmbZ0Db;pU!%zu?yw{7(bw-!FF2%&VObWR8Lp143$v`t_FIL`Ew{ z_^N~4>n{p=3x_W&N491xaA~3@2A>}=Z;hGKGtriivj!?C5|MTvcDqwzCZz(>#a6uh z3L?A%LENdP@u?@*OLAqcqGVbQPmWf!!1sKR@EzzE!NKB8y! zF}qyb)2j_w$ug^O-5>BAeV7wfOP&^Ps}TA*w%l1BSy6m)wLud%Q}SrHLr#AULZpAz zBCm$SLi+tquSM%m1Z=9gxc*M^^WSQRmOm}>X=hm%SqkS)Ao)!UX9~U5sk}evLbG3P zy}?!RevizMkqd*K%W=UX8w0jfe*k^?^uqNs!|Vg0moMQ97uewz>2l)s)tuf-6_@sI zG%X9B`TmdPL(4sSDE*L8@2}kwB$!HC4Ku`77i`SJtOaVnLy=qDl7$c`< zSKAo%OgD7@`;+-iC1b;ahDjxY!aQFs*Ft^#;n}uAL)jpLMmJ`Ta-#RIX75qVe(U!+ z%)noA`xtZL_!dG)o^)xfmRj`s6b#m?p z_5AUw#rcmX{&PBBQyx1`HE*GrpK%FoszTR&p2!epua9SZQ!ax~_%Mz6JdLXUu;z?+ z*s9MHM<5Zn(qWM|>Qsb`(aoKpuo>1EMk!_ZFv%P#m8^F}$7#?|ZwW(d9Tv_H6caw< z@zsp^W~BAMr&k4E{2w$j=X_kWaE6}tx4(vO$Czml z>f^6-BG&ge6vO(64~cx1WIT9|?n}kOku2g^VH6vQfm$93A~?Qsyf!zOmO;A@W}(3w z_Z9h`<`2_oxE6I*kK#R>9YUc-8q7n3eE$a;PWT_i#Grs4lwwmZ;^(#@&~3sZ2_v!O z-)Y1cW%##s$dTJfxRRK7I@C~!j&nxOoC;|E>}NhW(L{+BU6AS_@fM~8OBi7-MYbLv zX+fhteK>Td%Jzl0@k!~5TSdFuhyZ2jHw4FZ3Y6uy&BX-~qo`#0-f={X&@l?bXK14* z2@#n9V1=dfh$H-zyK4o!;5L5g9i(5o;0AZ@B&W?Q;dFwFd9<-R($C8N4y?mzAM> zZ`@yiI!SRq2?IV4qyrVV{|g>2VK}L>r>gOfO59$_u$SUuHJ+Uibm`FUfpMs(1`SeW z3xrCd1+80wdxnyu5lp0)>Oe8vg^WWp_*zpOwyq052U^tac~^)83b7hj{NOAyOqI=3 zS}?Aowh4Sfw>@DQvOfw6bJOj0sc*LL^ZP0b950EA5%Vp@xcyiD`&l*iehf?XCa2?T zt={2>!s2+!YOw+_ofVjnx4*9t8DHnDh4Y$JTudryuBh&uMjo2Q7YiAh5`MU%CPjkJ zf(HCUY50oBz~z$<-Zw6H{(@O*aHa;eM)D?auw=*?btbh~VxB!or(15GE0*!+s7$QH z2h62arjdt+L$jmma7PA1NTFs*#z!sDJB^$y#d%cS?7`h4vc`HEelCMJ7R-1bg)Q|v z+|U#>OMGAsf+ixEw_v}ymUt1xunH!}ONa=%4$H-y6a-#pV-8E?k*>4d;OAbkEwA`i zT@YVU9i`hoOfh5_RU=Ywck()F9ZIks8B%u)eQEq{3%36`F~N-*to-xiIDGb9f~{XR zOT+jui$C+je&!xk@!g}`*?Hbt{J3R?>95Chp=<5LNh9^k!nMb`hS^x%Hq!BrI_D{_ zE`Kpbzgod~e*6ty{r&}`->o)Lne>su>g9V}ee*dD_$Em4!l z5bE$B8*l>z@3h-HD8}n%?Y1MDTK$`UXnpAqqh<*q0gfXT4e4JStmHVasfIvNv6cw7 z#8VK)9nX_dGY^o%V&ua+(+l?|gi*{<3c^)c=|?lxUOw^pksyyx>U6?Ht|POj8S4D5kYNpPTP+(GJCy!;2y5N-tz66p)0Z^N{o*? z+!~hL9+BVfEVDX0UWY~r5Eiw^H~*B)(zavo4*GQ&invCz?=ofz87&*yB~}+wMHlp2 zT75Npd?-XH=FgQLh_gBypyLN#GE8W0`*N?%`W?#C@gp?obfhlLs-r;E;o8;eu2J*r zle~wu%}yKf_Y*G;iZ3SSU$i-f#nfSmQmkl7N0qGiQuQXoL5lF;wt1sHh_1rs*Zn0vY?HYWtxw*Q^SZ?-*vR={GLqWkR$G(LsPgXZ}nb%v#H%Z zTE?&v6PSk3C16*lbbXX`y;;|_{dLP|=x(>f*h!a94_#&N(l~RSZIy(B0wcA@{3rzL zx?H;9#G*XB=d$5=4KYFIHcETUUP2H;VzSVfv#Z-}POHC)FbE(B32}JCr6&`>JI0*J%$zAPGjy+|>k_Wxy5d1<=)s;Qyb#BL;@3*B#)XCc!J_5u*Rp&>e>pDqrQv`6% zUv1ykjN4&k!TGtalUUcE9H1PQx0F&1l?8eEZs*2X0sH z%~aez@Eozf^+2{Ef(}41g1kQ3Z?{PJpmFhouK`zTjvRGZfg?6r^eE zr)y9j9Zn#a&zdLizvGD#hP4izDZvvJ*dAH1<*BI;Jl6Ex?rj|_g5OGQj0ciPGaQt} zC=#D8Myw@_Q1WT0gkdXaCrkTMc^4Llnr14A)Zd?_{>HFYqtj_TOg(;-g0XN-Qt|!X zdDYM7_4Z6B@t!&N=@g{;A{M5?)|KM%UZj_&XFWhAs)!LLx zVZs*`HX{{3UZf^pS{L|o-J09FUtj9|@1vml%vGoeiA0JaEe#2ezS?~kBnB`Z%F4AkVu1^d-=-EjI3;kpuw|%{5dr>4Z>#-CP1=)un)Xl zSUiJZHz_F@{0k2c8T_-?JIbpd1<%RJ2RrvbT>~te#U~^~v<+!B!&f21Fr|E?Ckg$v85UN zfU;tlG}%WiHnB_tsZ|^;0;Lyh-1@S5-w+otWz&--7i3L0J9~So4m5K}HfX&dUw~{2 zhHOZ@7zAC)+4p8|hr}#QBo=~>9Omntnq3733E0Lj@4g22wz;RzhUfjDw+nRNWs=Oe zbO~65@HU{@W9vpl5?_6zRp~Aqq?e2 z>F6PV3Nx^ctxT-$_TL0K7}RJGaxFdF!LAJpaj!e226-7gT+mQJYOXG8221*;wii@k z<+(<%Ro*}7N=cX8{iFps7qp4ao&jH97u8-RXdciF1}aBBv{7& zZt?RbXj?IEJURZS6;bjdf6zg$4r|>g2<3@V`Tj)d|3szGLlMP+kzFb^4y+k`3q=Ey}8xW$FYUo)n=6!%pV!r6&sHtyw7%yTbpoH z@9%XVcgoQ_bq{+I!7{p9 zvJGRJ=+EK9B&;oDvjyANCA>u25NHIsWVLzW1wBV`bySxyZZF-RJBY z*A9${-F;5IYs9oa`%mvB{vNhY)@(5ezqwE=|MKN_Yk;}A&Nj%7SQ<-wuuk9eo4K{5 zpvYWSt5XKL41Ay&HFMG*PqKi8a)K9F(#EsN7Hijg2Nscf<0(xn@gramB|dk|wBPLP zQ>5WKh8YG2g%#=GR?dKNdwN)Phe8^arLrMo--jY>J%mi&5pGj7-vCVkgOf_!N$8Dh zpXm7eQwwjy(umiZSjJb;BAUz1pk!*MeVDEY3AND{89R0*Is`wo7SJXpy-(=kSj-}f z{N7hSQa{#8N}+~e%@M}pMNT!wi_+!n&(ts#veP(M@khyMcWFz2H&@kiwEDeY(LS?E z*J*~%TIEyT*r5+;=wB)7Le5otq#xHyR?$53F!~QJ)cY^oRX^FgP-bkIjkE?>^gnqm z3(7o==;7~fv>p8}(L7lt%#nnk(Iqqy|H-hgt%W_^FvP$EX$scEzOxAZ&n3vazs72F zP~Mu>PRyVMR+CKGJCilrXXvIg0`1aCIm^FSyo60{&;_>-l_C9%3EAs|4>m`rTAK{> zHBV)uUTqKM`^l8hUt#NhcFro?LJ(GOr|r5{;NSIC8}!SACn(}ps|gMAm*#s14@D{q zkDT71p?HKg0S&~V#`$*A*kL{S^&50CD94pUp-1>~zl-9!C2!LW&!dh3nO zZEEA+!5^M|J2dp+dw@%k#_z+^zp1dVZ(eT0k~CXnjx_S_$!_fLoWFKKldmHPnjfb(?1Nw??ZPEcY|!sWA%BLGNKme}khk-kmDiulu?THglDkD9eUa|G z=>f%b!3j}1HiAMAqzG{PK5crCOxg0Yw#v#yTZ(N}8)VQp7O$OeysY~=bCItZt!D6- zQ9(W$dqN{vJjp@LfYn7Sa1)Fa)LGp$;1VT5>ZqW^wBV3)YK4b+iTw%*BKP%LocUxD z%Vq*G`uLF|M~#}yRUguC_*F5<|Eb-KJN$&E_gj5yXA++yP#KahkwuMeF(4_#Bykj* zgDlv&Oi(zN6UI89=@gXmdvw(f0d}mL9(=j-ID3tHJFaOtnpks%wR9XBYR>kx)(l6c z9iN`pc!%Omru_=bVi|TF!8k`n$DEPm7d9^p{QC}n&5z=$z9+?bHT#jL$8IPaZ_@gC z5^Hw)@oFR4t%c#MimtN`c_bJ#$~nDGZSO58%(sIk<2nw;-JQ-H%omrjS5A}tVA*P$ zDW@pyp24Nv+eN-M`YGZd35M1ZWJXYtI&R->9`T(<(A<^n>xNi+#!6An?OO%aUrg9x zzDjX``qti%ZMK%m9^6k?SZe0I>T8c3=0(b7bM#uG_7@#a-qVNfEnUv?*HHJ|cF=kx zh1;cPg!k$dF?G}=8%^-rrg)6yPS*`vsPV+lwnil|niscR^AHqa!vi~%wyQgWm!Fvu zGwbDok6e$Gr8h8}MlIv_@1w&yM_p<8L{HzmVy~379_2eCIH8skWh1ujJ7!I$FuIGEu7^+X*6o1qt8h{l;NkU?s>f0ca!)(Or3i;({KF$cfv?Bj7CeV zBuPH2CET`lgBQ%F3Ns>^cIfUdC(qd^?nwd2$F{j`A^ZEXM z*Y|f_UH#!QW7~b-kNfp{KA$fIplGTacvho=+kHvV8b&756p<9rCfsx}7R$v<{4CRM zzaSIF;@j?f3spnY)&XK(Szm7F0V*G)6iqv7aB_R(7W<3fPLjXd-#1{*+Q#)kV!)ip z{Q_k?%vb9AxRJ{QK5r0kh%?Q{n3<@pYX!vV!!RJ0i~)#HdN`b~a)&ER2#u(EvilO2 zgN4bmVqR@$g0LVfu*w39G`u{iqREBw5fN{{tVF2z-U9N6V-)DSg_<|gmil*vDB>0?dqp?R$wYHI2HqFHe^AvpqN#>y}iEfG7K%Lrl)Fa zGjJB&wK?2s)@%oRww2ATW-@T7SZ!@d5q;InUewO!7F9?sEFy8biQ0-{0*TLMFv4h} zRu&0oA%P*Y?TO+J@%&ygUjdhj!uFLFNy_=LXsp!MUeG(xUEGqPg-!(KpYu98#X^ar zHQ7KP7vMr_4@+oO#C8`|SnC?jV^L!Y@Y!qzKsdAQo%2Lu_g1XXFTs{bcF{GoHX`!O zh~nPP2{=3%gC^+`Bt;bfyGc?R^9%+D0#DS`HE^LUBjA#Z5~7ZKdvOs*7Hv-=30eoF zFu1UwOp2kxS7qV$W<)?!D#oDLDo9S4u7w#%oWNu&;)c2{I%?|^F#*r(<+IbO_z$d<%U;P8e_5&=9~} zQ8$~Qh+9y=@nq3`RrMnZ@cQy19$z>Fhp%qMTDzdw0uE7^Fi_Rbqe9@~rU5A$Gf>}R z5lR~sKL)vjs&`JkimXG@Fq=SXsY{w@B2|7XcH0i;Eof4Cl49t?|S};70+B3p`Us z4j^!u|JU*;83Pi-%q*lTD8ZPJDzzpG1j}QxuvG|bME1YD1wGK(?(x=uk@wVIu|t|? z(x&%!R@#3)oKPxg2wxlde9zcm=zY-W+v7_ckpC+?(v-ae_(2sxG2OuI;>*FUcw&PJ z3J}@^>F8Hh*3UYUTKxkAZ|eo|32q)f4V6{VwxoC@^fYU@m(4dx4qAI{Km!o?wh8s;rtVty%>xln4}X?OO#h@eqps z|Gs9Db6d5g5SW>Pq1j%Gc?HFJgd$m+B;fT%`-Zmb64hnV(kfPg7D-1DeVP((qH8$l zM-7%mqNDGGcKeY;+=b%moYR*B47KzZ&~QdjC|fw-bB-u=Ar}~!wENME3#z!MvDJFo zgTPHQ+;6WUF)@ftvv;3`z&omi1|&+St-BGN`!4KQg{v-}nGhlF%7j?iAsVpZqh718aCB367wr%SLjJ+uJW@5+T_6B9O$$W9OC z35EW;_KqZ4r%MjQ+P=6#*ozBvQPdaYgj$f$th^SaX5ca{9N$ix4-E$Hu*v!uMsh`- zKZnso#R0oxwWgmSA%Kfz`8(Q+7kIo1;C1GtE9m3(+wp*Vr za3KOI3M5DBBZoRGc)sC$O>BL2r`x#zB$7~#G%0Uji3_SKtckriRI!%6p+1&h8H%*E z2ln+me=HfJ9|+iGBZ2oQbUuVe^*6*I)saAqcs+x$jKYe9Tt||{e5juUhMsi^6eB6o zfwA+nP-~J8SznRI6|Mpw)iC<13Ti%*J}av@3&`&8(1EoBEXY;hei;_N`ag^4G;oPr zK2K?6MeI@_1@_V+2`cKcCB08xjNApSSzws$pC5q`TLjcYlD5x8xm&2?x_mp8AM)u^ zZ%T6SUYXdN7}G?yIN#dk_Eu2E!uc(cvhmxcd(aCYYgw2)8H2IsQV9R8zW+?rDKa78 z29O#kWYv*!Hi*SIwtfLFubX!$W2I{D2AX}%PXg)Y}d5BXATz|cNydf~^ zYX5*91g3=m%qrRq@d<#bWVX0$=^sO2V)$HMk>LC2Yot(Ep73J z%q@w28Hsdp5RuNHOAK&y1g=~k+mcu>iDr4Du^APBgTyNkiEZf+>cMg4 zT9lD?Hn5x*+$~x}EJ3uNkh?&S4qUb{JdLCP6Jq_kafBu~lJ7!F(4u7IX^W-&3@*)r zMUw!(AXhS!&7TnShd2bZ0#57_jD{ikQZcXqv+=BOS!A{kfse$NB+@hTxFdL0OLnp% z5W~!>U$FH7*6e&yLQ7eCH_C zo>juH%#qj?R~2A_F|rU?FTl?IZwinU`0Br26<{g-ryKuY zj@1|(uS>U38QF7!QdFfHB}k18SOPv%(fuC1CJd|`I{L|sTQ^T=)7-0`^(=i=d- zrJ+p+cOnhk>NcINuA@#qxajlF`$xwg(+$5ZYhp&LofM5{Ow{!FpWh8LUiQ2V{r(*o zgI8Mjc8&L)^zn0UeR$@f>QBEepBTCQ{d6~{}+st^hCW$IDe~xShlfCZjac4_tzghpA!VGfFbm1dQX;)?v zc}i^T6QwG$ab0JUe5NOUo^`kfbbFBkJd&^-Tnb7-|>y5s+q}pk{KJ#GVdaQ5M zwXSCE^btyO1YCc@p<5mzY4gomGBoiZpE$Z-CjymfqJDSp?1wyyi^s=@60cooef)T8 z`KRms?eVX_r5pcjpCnuBc_mwzW~l3VW@vqJF<<#+d5*T~|h8;Xf>8Qq^^zg3pGibFLm6^Zfme9#qA49)+KO)C-wr?~S>*#fRI!O0O7OuNe3(QO1y1&sw*+<6`pX ziGZDIX?8O8Nw+VpRQ=8}-lNF5zjM6i_mu;;<|4XcBiFKbnmg_JPW^Hm^5)w3{`C`H zS3=`8|0qQ`Y$($CWS^TBL=Jr716{W(njAH#$*d@VO6bQuthgqh)DO+Q**8uX!8)rC z=k31R&zXLUP(6Y<9MV6+_>+4rC1O}OcZyzZ#~c$snCO^&bMKy@#J@o;H*}(PMeVN(u7)bd=f$5agF%JYp|sPmn%yQ^uH* ziAzv5y!ElK!PQS?^)vU|UVhmB{$|f9+QIVt1pVl?$xRAt_f@J_s561I^)o$}#~!e# zWIY4onG?tLwbRz$ymI()O3a^Rh!r(Jd!ta7RFs{%9w*DZIL{@>1HCs8igHk!&1%*C z`pDGr0-^Ax{QJwZ>*cdM^~1BaHq7r)vRSmzB5zfJ#mugUC@1*oM-4cW`|pDdTHW+- z#gJ7(nesoQT++AMQ%%L!A0ys8vx^eoa{4o_?zoxb0`OKfmVtNpqJfO zf1NuMq4`?>`u%Vp-6T~r=NPm)!F@k5X8pI6bZlI8VUb8rHuYqQ`kd0m3q=Oo&$uNk zR6fqHO*Tx0Da(AH+0NemaWjWRGXJ)KQ3WR=H3Ff7kbZvR>5 zd`)Nb${P<>E=}(Hv8C&j1dN!$#M-pxB$!Jg>}S&_(pLG0EZ#%&c1EK1ch5MROOy+y zAGccUUfSTN4|5ZHl^oa?b;16_VUsf=iHtm8If9+0!3|k52qbO1IJUh%HYV5nzAmc& z^IkEl>T!ZbJN10;E1dUK8C2` z;1FG0qQcnve@ek+l!WRODh&3&w~BSLVc-KGXHd*yTITlc+Ji%! z;^L>bZ{POzK02FMBsDV0%3@es6aU1;y{5i?y%-n-#CHp2W&6sjq(?lK-#1Fn`7TdQ z{rSoUnnpl(3y-$|no@vEAt)&L+&N#M$+U_@*4Nih4h#Z~Ea`52(GU-4BmM6F40Hx2 zIyxs#_z1kb1_n8QWaI!lFVMuA2n(M`Odo2fpD;26x?UnJjOcw6nS7|VmD&OvT|k>` zWaQsDH>+^D70I6!4Go})_IsSSI>G^(Pa~r|z>fg5xh`K00NPZd_=MTYDxkFmn2^Ub zG2J}_v;F~tfLnpf1CBu8fCN%zfCCbsDIn%~RwM+RzrXYL0i4n#M_&%Rcf^843^J*281S|yaTwZ+ zBK>S2?`5KsNQo7B1dk0!XmsDPiOzw(_E`yk0fFoECfNIscoPdEZ*+TiI)_7O9~j7C zlms{iNa%q8nh48$=RGVWD5M`wzmM9`GCx?K!(e&i0$Ll`^MPI*26v3h;cyqm1l;Aa zvZneL7dKSEX`&+z$)Ix(IQ@ma$o9?_A#h_6a=QoG=NEe08^p8AVg%YSmR{1`EomR9 z0;0R^9Sx(Iyk%K50*>=W67+G%u@OGm#3F!#5&09^8(JC$xaH;4bS)%BEaa9m%D81r z3rg?U0+)}#mC$3`JGg=gZgfeBq%5I5hY7?mqA27MHn*vvLKcl`FZSJQL~8Bq?bad) zMa%&I`-9;L~^4 zrN(1`x#AIEeEn0O$unTkPVFp1*-YeQLdMW5J7YM=|hsV+F8#P|cx0uM4Kjzw8bjT;l8xY!?=o8CKgz|=S?E}%Und^xP zdwRJo3Vz?WCEohZjNNilU!i5gfddJLi73@hng`+^POOLV!J_tU_bg?P(m}4tQG;d} z?YKd8Q?sX|(T5Uki0h8P#Yv{rsg|@R+27of!g$K88jo={?@hO*e^c*7>J|La6O7>O zxN{ct;$Bvs&-~)qU|Q<8$XvR*LR9JmZt`dR`~BV@3ZrZ_mE^(-e!6Cw8|Y;h=M=}C zFNzi&eOkb9T#ME#%5xM5;xb!}Em#$>rnD z;=-z}Q#(sIpmkG8&51?LHD=_iF3P(tQuOi%b%qJm=SvT_9QajYBXfWo>7)`@FyD-@ z%J9NM5i`U=f*}*dW?b)vzHy;RTJp1?7_935f z7X9na80X~XTWxE%dpN;q%MjJL?QQb|9&_uBdx9Qq3e9)DcB6J=E%3}D^(W)xD&531 zR!lR&uld-hDyLr#o7{-)9r<#QhwV0ZrJS0vR(SD`{N~O^x%O>&3-lG$!2J>_g4?@_%C7nl<7&JZvI($doB|gzhya?hcpfVO2Z+Wnr|%X(G^i z)3A1r*@f5CZKso|)O|5nFKc7JN4MVotdf%ZiM#P&GL&~|8<=22Yg#_U z8q+1|RB~i3{rOrU^)}JJL*;%A&U}&+_Z@a-rx{%}>5TO~yvdo@ZSM0Ip~Fs-pF_z7 zv1isIysv`5qEY##p-C6fC1~Dpj_hwEU0W^gKDqZ)lpV-ljTWFGj6T?WZWiakx+7)< zkxEX1zr1t~j~|a%Df#gl6t+JEO^(^RQ^(==A@h{^&kPPQ2oW`pkhd*`qKdM>mj+d> zP6rg9Sss!i9Q$uppWg__qU5%+Ku@RdX^W2LeS?(ir3TFOvxFSv$2=W``Qu(vl^#BcabXJv?v@B@C zMFRe8c|uWHdP`A2OD`~zo*O_4;0|?i_}qYV$qPsnm%q?5%i?er0ICtI`*AuYKpzEA z9AyA$ytsgjB7HVr0`OK5gY~wv1qgrS%mZdo{p_;Z&Y}{4j({3jG`&_2r#O_MJ2A$m z&PD~OFes@nE-%mKv*~ch5%6t-wp_vehWH^ zKvpN9;R4`lWQ;RL{SUtc0v-V1V*-G;{wHw{C`btbKm(}lUwr;giw0m8KyW|>2>>hr z!v2#50mKI6|NL9&1vnkRG62E=jQd~wNovsQV$V=Ix zuny`TOYOCDdlajtV2zw?pWSi~yv?ygd#Ck51=Q|q2;PPn+b5v`!dH=T1oo@H>B( zKVSUy;)UgIb@znp%3ntjPo#P{E5_H~4|d(IQPiOB+FktLXPV>z6bgtSVpk4Xn8(_{=n(G>=#<3t#R08?TH^-_3D(PSK9qv|7ns zznZmq!?v}AbszO2o6I;+wd6GmLeckc`fL2#<$bWa5RpYgRL?u}Gpcu{`4{$#B^|H~ zI}{#~Lv`rr`kN$Ew(~1dWvwC#L0#2;i7-1(4s`&fZFX8>>ghFY%r>uUaE@&VEO zsD3^qT8?>+i-7jFz?2MF!gZXcFWHUqtwgqW+CuI>L zH?Dp4NA%s9Z7^t{`e=lle2X~A5(pXRATUDc!AI1}r!<9Vd`-u_iu=OqQGK25RRrhLfLJ2Hy&7T0?(QZU$QhC?QmS-#YnW zO=q~Gdfl6jnS!IF<(D52r-Wjgd0jA+8aQ2&gZ!j8^U4K(@|@zUPMI2;?xMxAG-Sx` z$-6El3qa)cN2Og`2sKmmS9jG5{yZ=|;AFfK{BGlidhi#IGwU%Lf9Xu`o40X)cW3gm(oTe>#qJW_2q?1@Jve|i2@Dma@8i`@Y#LoP z6jT}yd{9(@gP`)5x^ASbCK0fn!om?rppEvu0UMqu(eFZMwUe3$x-<2YPVx(XXyb2v z8V9L+(HkUurCq*B;GfXMM8dTw>T2E8_CSK1(AX$~HBMV#wV9QwBWgcfqE617oMw7J zuPqdU=S{xKD^y3w8d4yZ=pV8qtWprG(Et8JEZ+>I^j^Zc(`C~pXA^rszP1OWu)KbH z;_KT8cGTU8**2xMz5Hf4ilk*iivXf3tmPQU&Fd2${&qJ>MsN#H+`dVrt@IsK60S7g z=HcWlQ0RjtD=&^5@Um-cW$)aoz>8Vg7el~^llJUIUUp91Ji%56?>A7;GR3kB6e;gd zKK>OgM%$aCGOe}lbYVulw$*3?T0{ox{_`f*>hjCP9Y%rJSKD&G=g49lTquyW1*^u( z6ibgqn}j3%r*xmNUw2ZU|CZa*0?5b2`-3PdH{Q?KnYgsKM_#zJC1hU=CL$_H+vO70 zgufYb$APxrWA|mj@F|nQe9}1uX0%Q+N0!1gr?Q}FYar{mA@GM~-{~!38lTM&wI$bm zljtJoBl*@hYYyw#J&*2n`khp`(O$J4l{ zY%mkrFD5Ts+}ZzXL-FmDt7~LFd=sIwaj+}l-t0QNEPseR23Iz|Y6-hqK1`T0fP$@0!if9ga}-Ly6{Ip%(5%r`)+$?hbf7 zR)FQp)lbIiP95tEOvnCc^r0--9p5A4Sz)%^bwzggdz0U#%h%NO&su&x@prY0@yFR& zI;+_q^M7k$|MmDlpa4*eY!Ni3ueK^FJvWyUu(bs*_|Gj8Xgt@1BI;X&9h=~bECii&6lpC0dM!O)Ke8z^FcZ)oI3NgpzQSd0FI^A z;DZOwTm2X6cy^Jh~dyNkM zyngd?Q26xpbY5whwc}wokCTH#qbJS4 zJP}}}x2>HWmjh;IB@I7SHMrX%$-yBE6AGH$+sk!9dl|;|HDIFSc|$Hhqz1OBn>&<4 z9IK>JlKmn>Vn<>zjuu`mIh0rtrm+yUQ!mP%T3Hl59_?X1ojD7TMhmXW+;o4CAz zpz!k2&hiF2A5E83GK~PuPlE~4h&+@?jArQe84aX|gwAeNln@ifI%|!(X%x5Ekoa1! z(?svk(DQ@;(pYC}H?MDy2L!eN5r!SzogLl4|GcJ-P9wZKa24nVY!Mv;09myH;}l1L zuk!#HYwhkd!;@OOfrkJO=toZLv~;@-&2 zK~p1Lbv3_#u%gy&cB!wO8E;S9b+Q{18ku<|dBcXxOAUB=^e=J6|P2&lyA!ND}FkW9Z)?v@i4G;=dYaL zK8@!8hQ8&6&rkk(L>q}~WYX3B`T4OrrThZ=AeUd5Y^yg}loTb+o$Jm^jhE>m$nBQ& zG7T;UziifdF6kpdZ%O*ecDef1?w*(ad>KrA_Gi%N#)@?v<;A+o?5X*S^WXfQJg@Z1uPa963KE`J{Br0CGfUaLjE*sj7O%l>N#`Dc)|U{D zm?R=GT##vR8(~97Z?u^tUl!8_)8o<=%4{&`54uF-j?al$vN$n8YN5 z<886>W6m$azTWC8i^jqPy*qCGa{3|FJY4mgXQw9o^h04)`Zr^W+=gFus!^WRa|T0= zZ*9&zHK(^nX5`APGnttu&+DpT&vVAV{=Bi|<1&{$ygXsj^QQYo_gvnK@QJ19H`f=P z6Em^9_u$}XGT-z*bPBF|0G3mwCWgFzar@2UiOoOcTo;-)u8Lz_>&G_qEVTY}`*y^d zId^7yq2t)!nkL#``Cfm)D4##4!BDD9ExRbXbD7fm+y`l>7~bURIsO+zfuWEnICzK0?_LOnDBU3*8xBqHEQgvLSy79IJy zCIZk#YUxJmG9vXtZ)tl)Qm#`YccG*9nndM(jWpmN!P!Td)kazPg&KuMxj%?HU_vK) z(XafCBIq8m_M?;7bQi{Tdj{S9HQm+gu1Dxy`we&9{M_AR@19t=d$8p0F?;vp@aS`) z(R*~G&y*ZK8ykIjAsSs0eKGd%C3s9oXbem@<{I1WdTh*{g_yY~F}G^nsJG#<(V?;9 zJ7S|4Zg*p26W11E`=7+#;~%;YkIM*+Yuyo-)_&+gY+T+#T=kQvv* zg?#ek*!c2=_^c=K&)Uh);rFUT@5Sx7_sWF)I`&?}!o8bM?$x2m@8Aiop$T^EtIhT? zE71wv3kgv>5;0la%6Il#gDYS-=Bf0r%Tdlw(sgvXYmn9;pU#sb_zs zY`);K#o_uk`QW9sz*ME*Zu}8n*cOV*iqV@)`x6srHJNPl zG5$CD!Cuc`h*1jMJz^~_-R?$u-rqmF}>d8H7!0=3S&avCe51W+&Wsgts|eu z&Ci;AxU^7cq?f-|m=BFEn0ivsu`{G|vfvA>(5WW>-A+r@CqgoQDAn)wp9EF?*N1u6mKfN1vwMP0R#JgC*?on~r z-N2#JL#St+j>jE|&z=qiQ5(a8-(=?=&n|@Cc#`LTwO=!r`8KdMtn3J*tizwUghPl} zFu~h$;ZV7#v|N-7>wZg6IGC|ZTAZkGGxI6Fx%9=j{lljCXJ_@Eiu;Sp9Lt9NqvXCm zf9G$x5??YlMCW;z6AfWXz{L3Emzs4iF~cu4FM{Uuas^B!&m)yf)B&qrv*(W4Pe#oO zY4L>$N1sFLo(22o?OpryOm@QJsTgD`KH*^wQleGi%J>s8t!L0iD(tWUI zHQS77Jw;bNR%H!?T2sZI;p@CebzXmaYv#ycW$Z~69>@Y)%Xs|S)iH!={AzOY)hwg> zfFLhi^A&U{^!&x=Lg*WMX=&;(K5zI9wX`zd>1~G7tI}f?*LS@n-m5uQrKCgwM^4pH zcezD6)q-`bqy$*)aE&sSvN65#`LTMl(3*-Vn@Xp;_*-@FKT&Jmnp;iLs$OrbxA3-V zxmZ6`7uo)>-lD4h_1aW@&ywfoT~;LV;V--DHPhb>4>xRKzZ-dG!yT@#Iac>`qm>fq z_~fm3sFnuN()$hY_cQlw=7wv=F1}Z;s8cosS&_j@=Jm(cu~ZbJAr>qncUI&>ut!}Z zX8DBIE^qrqm*r#B7a~K%kzN<6*v0cPOEB&NZgqhK9{sYeX=xF*bfoeh3&b+HY1+4T zy0A%fSjO=+-iD>LJE3Wr_J~x2IL&GjropBv5Kg4#sX2sWS@0j)mF*fQrBzLkH;CU% zC8r&-?m~R=_78SX$WZkU0cA?AVi@J#m4MDx-vH>gdq=3w^>xy~qPHK99jeD`FCo0{ z9$C2HE$wYhSqc`cooSh>IAT|iSPE>vB@7-%whCCSnHHJT!5_(;$9{u8Dx3{A)0bUx zPxYvGjmBJ`*$-+k42TIq7ekYF5v8)LJS9Gc(!3Z3vyfave?U}=LN`Wv1PB^Z&s|5qW^;Ql@KW@Q- z5XoSThrm;U6`v!@mk~~1T|~Iv7OD^-f>kR8!l0WVeAefIcm%c!_DG*%gM>`vyi^AA zJCv~3^`G}DaS=0*@xI$Za!7Dj8AKL{e!;dLy3sDb8#F=stV)0>gSsByZ6$e<&2IM} ztZ7rie%2rWzcNS;2NDLhcRj(MecY*6(IbZi;R1V;|$H>emXY|vL7CD!Fj5S5l6+L z-T*=14(<6eT)+M}Cw*p{m%Q%1k8(Ru*u}qG^ zX7|iF)8=rm%ODXF&XCmBVTh(tV|8I!Of(O@b8=q-f(3uKXEqv z-c-is>syn==18#JqlKL>W_v#%GF=f;u}|jy-?z;L`^aD+XsQw~=wDAgZc#CJFK=mP z<=d}vUc8H^*Yn^hBm{+@8r3=sCI49;`p4^c=Bu@1bq5;$h@l_E{eS!|e-654T{yWK zzV4=gi^$mjlYX-9Z}0H6ZlynAf5V4|WU)V=Z-N;ikUSVd8{XWMcuQVQ6j)I{ViPNs z93(R;ni3UE=bvw^b%i!j`i6l2!XrSoWA(5F_BOE=aA~1v%~Yg zO`FUihMS(ac0ykqe(oiIaqlQBL|S3C-G?nc)e@)n&p8fz=1hC$@e*S>`LmsAe=kkc zAN`)0R}9z6OcEI*sJDJV*X?VzE$QPd&gm_;-rv=A#ri~zdoIRHE{u>Y+-H-tj@>leYrP1n9j-`@;;Zu+e^dY-P80whjo(~GL=qCNhUbknB zsODoOk%~TB?X7j(8HZkE>Fb@|jM;Z>)1hqhIq>|qQzN9S2P^R#SnYyZ-%l08=kw0?~?#vMQI^D7Q+u+>5PSY2iE z3+TuNH|!?0zH8c6ruXOD6h@GOP1jFb3^XZjtspeih+cxIC-j&8{5?s7s)te{Rr^z4 z?N{{(Jr%t%WZ_iowv5ozal;8AT5~$vyUfBLKk)F}tO#dCL={(pq9+F2J%AkywS~Q?asWzuX%z3bI^52g!|)lMQ6WRoFVWgB!y?3>2-qdpDL1zP}P^lgfYC z7zxJ&GCw0t+=Rqy`i!btt&eW3)k2kNV#-}bCW=m@6Ejc5p+8~yP6<#{4;31 zeYxsH>fl2bc>UI-i`ugL-EuJ3A@rmn5F0!l5l};YZBM(p&g0I_iHA2<7w;&|C!7{M zt62>bzWRFSmZ+}AWGG=q==FJ>HKm~J`YI_{YnLA3X3m!4CH**g%A@l!@UXRj+^ePN z1|EBlw){BTPObH2qBh}!w$qeqpC}{!7V;EGM1d$OhBho&oB{>ib6S&0?NxfW{gjoO z!$!qcsyg%4%656z+LXtNGy~ZqT(GL6=1Am&EqSOF#s6h~DUHqsm?ogJ@kg@7I+?Ja^z1O{+KMh)aH@<00ZR`r_ zCk^VaEW4q7U6dh(7!hj)C2or=m+jruE8HeerCEQ370VtV>bRxc^X1JI?Z_7$bW2Su z^4-4srUS`Vca@X;P=`(i^ znF*2;@gt{_vxEc?^G*7R3iSvUImW@?r07&MGiis;t}PG(mms@Vk)JL!xb0%{(2GK) zJl%N7YSU@>ra@U>kS0D^#~9;*ShD?)PuaI+?>?t>H~+rc7VWETO#_pXi<1tx`~)=w zbX?tvv$;M{=`TN>D_cAUJDlZmd5)N8R*igr)%Rk!S}zcISE~f>6lft>+e}+$KBl>Y za{t-t-bYq}sT#Qz?|Xc~`I2Uq-8r`>RP&z~TyIMcGaZA{41*$DZJYNjkZAH_6#v6t zMth%<6q1>va%$4ksmoSDhQyI?{< zK`*M?l|US*-Jjv}>de7QIvNfo5%oHLw||*}&YNv*LYObp&zz8c8dAnOOMuYSsj#zJ$o=;=DNjI7=BcDBO8a*L2h{kv-Ufjii|jVNWF>G zL^fBwI2s|rZP`{rP$o2=YV>f@rKUq%-83VaN0$0!pe6*_S^dJLcWjXJo@r}84oXJ| z3X#102D}M_C>L5l=``9_v>Y(L=}Jd`amefE$I;_KM~8Hdg%Ms8=knW z6TMiqD|+0vtSkknicbrP6X(GHQ)q99TOaW687c! zWrwRh+n@pCVPESmYhKSRf>4DaH748xYB#AhBVK3y{GyX#X#Oqy%Btd{(YZFu8?t+k zJS4>GfV|i1S~N#FTRZ$(IIXU1yLo%tP~S(ZeE5y9rbp3bCHum`A<5wdr{!mWl){4R zRTjHUnd5McqTGkS>|3=57E9Ykuf2r6W7?cYCf``C{&V(84J33e?DuWz+ATYeMM3k9 zJ2UsG%X@DgB_r&++@B1;d|5O6{k*H=Q2)D-nd(j5Tas@T>r05YA15!6zw0* zna}D^UwF;!4}F1O9R($Phb>q!ZiH)Vdp(rxZx_?q@YgP`)?VoB$p(s%w z{*&<8bSX^nq$X(K4g6usKF%r29lK)l<#isr)u*Oaucb9L&l+y>E?YwbQM@t(J7gsf zA7Mz+8Fumu>0D9*7H{(o0DI_)AHV(iR)dA z#1BQRLq~$W)YB_KH~gsaJI0>HZA-XaQM>Y~c3*%!Ex-Z7}Tzd^i z#a^$?sr9P>XVIX#kx1l&F9Jf)B5PckIHJ+`Xq_36*f_MyEXc%6olaEAj`^pIc$;H) zhu9J|N~9^;M_}xkv&0GL!Mz&~3iS@AnSAKs%5C9-*{9(B$@{2lcEW97GziSLPZZiG zVL)hFkyzDS4`tHMYSvIj{k{3nfD~&EG0J0Y>^^3c9~cvGDp>;_`NJ*d1{#Pt$=E@T zS;g*XgqQ|Z)GH+0b}(B_mfxFV;>-qYTlefpaCittYDM(QUCC0qrX6#_$?j{^fozkO zGf{R2)7wC70yPc(5bWnv6Yf-tp~7Nb-+E7zzBZGEdd=+=Nrj&vdqYM2L-~a zAm|H)P)v3FkB@)Q6T0Cna_Nc~BAr2m&7^27m-K|$g=>_fbT3)?|cUdF;693(rH7__Iy$( zjZ!I14TGExE4@-I4XZJW&%s>C!W0eRoEN+S8bPyx&?tX`5l9sOj4*)xgtIMbBGE9= z07Ov8Sced83yko;rbr)=3Icw3ha?a*!N`F22@wMj5;0hZ9GJO#P=R$212x)=Cu+%s zFiNB}QORJ+6m`lK9f$|WK&hyJL(@im5F~Bk%0JAx9F@+oq)r}7L?4yMVN41t;FY}F zIZ`@K7Gi%=UhP%la?&XcR$(1hzf?Xe*gCIER<8S|Erk#He77$hj|^xwVKNQmfWA_b zE7D+sjhr4?1Qt5ALU$M|s?e29)y8$WfE1dC31HT`gR1vS2$&j-QpJlD0=lVsfDDMX zO2y4+)Xk;j%}w>qmCHsTeXCIYrk8k!BTxY`WzK(8O%~`JME_PTL02V*&FE2u_|g8% zJu8?1UfD5n*qR3jfCoq(Urkw+RU}{~R+oKQn9V_BU6g05**inGP{f#LHM?lN87oSZ zX$b-WIG}N0o12M%-#L^CxD(M303o;+A&OJV48$soj3ju60APy@(@>`fGAulsA5xnG z3W0xVt)r0Oj=`vlDqz%$PyyD-fD0g+HT;|0e8b5aSO@G>f%sJYu!0q#OL8cid$}D{ z#W{&xRk5^K9<@$+{H0c-iBQrP?x-ArV21;^mkB`GmEBy*)<#$@G+720s&xycMyZl4PXKOm(Lwt13q8`R<6>`j?;f_ z)^+RB`RrNH&@Zr%NI?Mucc_a2`iR_95Bd!pghy|B97O%(Osrz|mpbq85#!M#A8^i@4ToY-|tTtj?cSl!sh z-3N$El8|r%P`!sxYS&#IU@!h+D*J!O1Ri5DF5{nCVE?yh;B-q}B1AhQ9F5F;l)Z>e z7V`465W3HGU)HgMzD#0X;)g6h}o#pr-G1h%!CY*psabmsL znFFJgx|`ZU7Fo@RNwl-juEiMf*lSuY}#JP=w6{9SO{cM zXu5#7h@!8ckI}NxC2r;ET-<*Y+*1J~6THRe)hmf-yvhq~%u&4RQ3`B{}ltDPC9;RV;?l?<$fUCtX%!w9k};NVpL&y)xZ zUls_@QCEF>lMJW=1E}Ya`(z)6L%a=Q;M@q&dg=R#oFw+ZgAU8~CCh(T)!2mi(Lt1} z9Jpolt;e)sheyU}wq|RM_Gq|{Yq|CfUjKx|;y=cGS^O z83QA48#xVk5C9c04}x9~L~()$II{LGS)Q1I8PF7r(3A- zj3HoxIqZrhiBN3Y2X+tuBCzj6aj^;z0u6WoyHJb}FyEbt4}z8;e&7c&fMIfr0CUa{ zjOZ3!tOCuO@ooVzmlK1bDes2B?ElDt43H5b*A)$5Rs$gK9WVeb5Q-SV@oqsd*W>Uw z(L&2gg0d|)BA|clRr@nq;|d&?kwb|90f2)4q26vZ|K+z1Z#Hl9Hpfypk8?RsFT)fx z{=w2(3RKZRPU(nqO7Wl4xRIiDfD35M`xSr;1`z&4&T(29A85=E_kkmSJHZ%Xq>=M+ zNP;++q6go*4cfO|;qt@K5_Bj6TdT9Q2_i9I2Q@nLf`Wf02bh2$pqAM|nX1_$HOh4) zJM=^s0Z~T8(k+Gb1sW<`1M?uhzQ+`?IM}3xBxQW2Qir6Kl^oBz5&P-}eAsb2tBY zfcI#@AW(mTFL+WK4Z+at+}e!A#4l1J(ErcSs`jR(&=`0ELQYd64Z)BlQ&RMV3NkVs z4TXpJAS+cvW~=V-r~YgBGX77m>BvkNp^oN8jTxiiqEk6&UmIXSN5*oBB}3r zvgdcS2V;K^c(!kQx7V^qs#90dhb*wuQ;i*kO?$oHd%mB+wSRlS4}8JzskncPxi8fhOvE$A5gtr?$Tze9EtU%g>&|543UcUBj8ylbDeX`lFkVe9|v{({G;1zkJnS zeb#?Zn9Nsu#O@A$>7Rb;?~>t1jH)pk7etgISpMh#e((?f3y=QlFMsntf7`hJ6T_JnG`EHr zeesWf`EUN-M}Paj|LIqM!=MzfMjHbF2zLbQhL9_lezYJPmq5D+3JLP0#Cg9m=$7*RpNv_AT7Fa_7>mYjZ|hLHw+jL-0fReTz_Bcgt$)a6S)UYP#vkoF4SS3EDB?&^K__wx@){X2jG3OFEv z1sZrDf>(w2)_66oH=lhd(P!F&BgvQ0glxs9pL-EfbWPMefs$) zpgCp9R*f^gNlu&}B?@PmivEbg+g_Lo(GWXrtuN^earix@lgfKPB`Mu?y+?W2KuO zOKGRD+N6-O))woet30{+;IIgVdnt-B5o>F%=-#?*x>P;HtG2ktd#$zS%DddCs_MHh zzkmJu`)^UKYME(%n7&FaeFd`y>y}*hs4#0nMF{bZ3V(}f!VLpOowyj^M6qL#mJ5`~ zAVi!GKvm$3saq09sI1y4F3ppuoR9AFw#jYy)@H) z3QXw41*`e;f+YvjcvczF~ zsdmnBKdm>2M9V$*&2^hCGuATojIz*HKU=G`svX@l$^G=zM{IJy8uIIO22$${i*{%aCx9Fd9TX?p2QylB&wWr;7P%O7>czdije19n4 za??yY@xK4mU`smV&a>vNUwwM<^7-u?*Ohz!J^0~^Z`I{#WehUacB>6K>I6?;I^GAj zFMRxh!~cG3_w0_n`Sx+!+tb@PcD=yWq;t%ho$27FyO@zndUiA5-)6$N$92tM4*Z?_ z6u6-NF(-fH`ydEID8dm^&r(TBpnuCC2tfh@u1n{8oyp|q!qhErc=kga{wQcJgk9`s z3H+b8Zg;c9c~D*~e4hI7wzjPuZizyiU(E_g#3*jef`p4;^Uen{6;6?RIwT<&!zjiv z`m1~rG9B**$HW<8u_qNH8@<+*Mc~~Jia8op^?(OB-o0#!0$iNz{N}?9?tgEP>grq? zqc=c3#u0sf#G&z^MMoO05RNT8lJnRlv^17&Y7x;1eG*B-4K_|wnIt1BQ>n^TPRWcX z(V`^()kwb^F7btNyx0U`ImiHpE^m=sq0Ky*L&ah2k3VD^+HUDTwhc0rjojTM2`SB3 z(vN`${L~X4c)baBl3IOi*MGR~NHH!h(ut@kA}iCW&ULaAOWI_R=^&UsakdeDz0BYt zkr~Y%3XPX`ROBy{7ff$1FNNDo9zc(|wPZ@MhScQW2A>JBX6A94m8|7B1DUmVUi3zQ zyk0ji^-YGTi=NiB8wc_A#dfl^r7nHxVO)7aX#z8n7_BEL--u71h=1;6hyxoq`)ch1 zXa7RbpcAHUeJfn!iWHgZh^7doq*>jl)0261l*N1}1LYabiJldQN*&@s*9b`zCK0Fi zx~l@KI?=&q)S-dB9e+iQI>&n|5nS)fsU$PY(2bh3vv^HTTji?S)v~s=SuN#E_t#OZ zR*|zFE9}g8c-Nrbbf}%}>o;w>*oS(Kv9@gJY%42St16MVXY%bzU%OY+iZysvJsejF_fGtWbeIQy?!n!)|^Li#4}qB%im=U@NoQ;QU}UMOnfBrLu$ddu7{3 zx@e{0GMF>1=}iMl%%S=;s6)M^wcZJ~AL1yeG0o{!vwynPFY>ggV=e1ht5nOeHuXec zEh_K2y4Sw`HGytPeS*mEJZop8-5WtT|RzyWHkJcWgBa?xgv{1z{k83%0QCdFxBu=)O0;^R4fEbDQ3N+JXy~&;uPv zpx_cfL4OYv-~xX$ywj-OH^d_@@rjSS-wnS~7@9!v25`LN9G8F&may=Ple|jyrZ~z| zuJV;D$KoZIk^&^)@tMyY1ps(C&SP|Pmh-&lKL0u9K%DbEwP6V|?>NX2-UAdA+~X2Z zz|fQ=ux)*<3@sjJ8zO*nc3B#>|yw12@LZE%4L6u@+(L!Ikx9}v~EF88_9 zo#$JB`+bw51f6Mycz6J9_r&_TzIKmwcq0P-CFM?o7J zuX*bjUh$s)Jm_W3_|1E#2YVkmPQq|>2_S&gT|M9-(1n`*0 zJ%3Brkpz9rWF6vIhdRb#s?OKG`Obg-Ie86y0xhBAJ@5xlT!4bzPoJIZFvmE=A^!1; zV+dkk0zZbZ{MbXk{qBE%b8g>#-1x)vVHZ44s?YHz%wL^JP{#lWfB+7l0Pw>AWX3zJ zAF{z812&)o!jsVTpW|7c4q#tT0Kn1xo__?g(ge&y5Qv3XOaKfBfMxt2OpJr_DW4c5 z0rI`X0USUJ+Jy4W1Pao`5G272x`go2L=A=;`(>MOY1pX=VO=m=0}TxF2>*$#y^@@{ z7oD&~fL+)FhMN3s;B2_S(e*&_bp{v4pi5vO$LRp-Ss^M-fD;r!0Hk362mta8z<&co z&^{0!3a*1b{LKVRfEUsP@y$dX+Qc4?&L74^91;feF$sieL=xf$6k0?gj+qhGRU?*{ z`y|*CGT0+d;d4|W8Nvn$WMNEnAt-X8OZWo?j^QSX(F9ZgSD+v(ih(+aK@Pe^a3CK) zu)_l|!5;>J3OJTaJb($tL~z*1IDb4qtk@z=1S2m}MInybWnn}l#zj^HS*}^yi7g?G zTq0gHp`kINeJmg*LWd@vVrz6F$7$h9bm2G*!4R-w7pem(hM_5nBMD9azz!(i_^E?9 zz`zbTfbqdV1*BmG@IU~-Km^P~1rEBoB+ga8v{KnTKs_>Dsn3_wWkzyv&iI^H8+ETfSa z7Mmp@jxE}}G|$CIW1VSNhf$)D9c5(&C2>tlO6k_tfR1SO**+MhQ~p`r99EtkVN~H3 zP$m#mMMw~0<2P0#Bgvz8fPY~F^Z-kAMio>6Kaj&2i~~CeL>IE97^)>II)OTXUk&Et zKK7#%bYNzLfJ>@?0r)@#2%rOmg#$PMF^Zo=J|<;2z(rcX19Zj#RQ~`GL}q2=fJyFv z1!RU{UVsHSKnG?33YtRzRKNrnzyVao1C%6X?&J@ik@c8aid~VPxqsI{Z4Fj3mXOhz zI1O5l5$BO{NK|@dS`trHM%Zw+nN$i8SN@e&s#^)g3670rvb4-uvX%7lWo|rP82W=s zaA6g=0~2h)Kb*mORsjok1_qX6=8@+-?tlgu0Dl?)KI$Vs<|9TL0QkXx5Lf^VsN(}1 z9~0Ol6C}a$QRYO>!+%XO0Su%f8xFw(48VgXfdlY>0hnY3WB?490}MDpVV39vge3T} zg9QWu6O4m72taC*UtjQ~*7;ENNvU=gRaj1wcY2lrg=Z0tCw|&S{RLinc7{8+1AjZT!9Tnw47h`Qc19C) z9RG#s2+<=5ip75pW0}&qCU8T za2&u6_`vWvz&r@R_(gydz@#{gLk7&lpbo$e1OO9Q=!#ANgx=;};HaWCnSIy?Xk ztm!|L0S&+aI#hvq-e0te&;; zi36ktK=_FRN?yhe%zy)A>ZW$;r^aMTE~o+QfDqi_9e>)SJLu%A=B6Yj+HUC?t^VjD zIvTU$O>%wgj^f#)0V`OJEUyx)t~%PWlGc=ZYy_6&$~x<@LF>52hVF$O)OAJ@Q0fs( zfwpcdI<)E6U7iKr?D){*JA`Ur0%$*0fDiCP_>IFlFabp#_7;-g9FUK1Z05S+U)`SYeeFvH+Dp^W-Nzoti#+Y z%!+K06|Uhb)ZrFVuo~BPsVv9>Zp>Ou$bOb|F)Ph}Y0M)3ZEeKq<+%XQQfdesLC|jN z11P`>D1pxAA?JFJ8LET&!GzQ9sk<_*I^du?7=J(o^r<)$W&*-Q*XrvyOysGG!vmyZ z2n@skK&{kjs@jSJ+bZl15TgLhg9eyGNv7ky-l)Z*B^&jX93jyW9Tj37PWn8BJb~{} z3SzKu?2f*T`ySA8O&Q{5+58TTGJR!35!K0d*hpnA5?*QR)`s@&9RRGudOiTUmhM0N zz<&oQ0R;De8g#}0gU{>6?n}%r44iFiu7hZf!#k{~1u%g+IKezTL0ryY@IK`5K4t(I z?~5{l_yxc|Ht)f%ZNi4?!VZByR)7o-!SC8A-0^plJ6B)P>U(6{~qy{9?*62Vt*6e4*-jY%~mjD#9YVefCAK_0*3$t{{s@F z?h2rRqEav#OU^!wLn=z-OAsG`hTjG|fI2AZ@@9Yl41ff826Ut<`)d@S>ZB^>cp}vf3f9;aj*(j8JqFu=J9L%9oR|06(GPA zq<|O1u^bmb7qElWQZ4IJGt%rs5}4s0zr;I?gFgEIKxeSSK8gWXFhOS;Tm@-G!wigS!BSVQmle>uOn)yL|uqb z?6S-5Ca#{Z6Z6geE-Og^b49_gN-Ogb`>K{bC;K`Ra>b3h@GmcCnJY*0iA=LOw}w9e zUIQq>3KVq|cyj}XKyZvR9{+UG3;{prgDYaNq9y@XbfltAtv(o^hO%V&m46>ppX)lh zgz_n>KCEN;m1IXIUkKo&I{NWC>a9N5V@zr<`6)0zD5?-w>`o)1Sa$TIe6&dem&WQS z`VMyg4s-jqG?@ue{O0mY>ok2SGgXaC7Vl6wE&r>q5;0Hrq)$6_8e1L&;{Xm608;;h z6bOeqFm*YDHouHR1d;P3uYaRH5Fhd>s!I?b@ui;*=3p$=wnT3A@ZK@i4);KC1xy4Y zKE~iy<8}`M2CP~o?Z`ATTk$M|mQQDh20^y3T(`Vj?q<(y;6@SjAe9|OF-!+@%@}jc zvUEtxZ*|)=0;MdjcDDJPv1=EGN(9^$NPrTMwrQWX6dVBz+$A};c7J}WWpqavbyaEQ zeymb%_uqOfLIhf+HTZa|_ktNK7e^_3Q}<)lZ>|=0;{K#Y+qW~~cY+JXN~}ZLnZXCF zzz3Z6nhrQRd}|lN_lkGlf;-pZQd)`Q7>TF{7@3?-KX@3=0W zrgWECn_!C~RiaUf%#zs|M&N{_G%JHY=|rrTXXp8qU#v@?IU#cSwU%v|ujvnj06W}e zjyt+Ira9rv6E!CK?G$IM*4UhXy6!xyhE*AmmWaO`3)44+(+Np7h zqA&VJgSe(|d2t|cqz}NPQ~CqQ!JCTWuahCCv$~7bI(w(nI%K`FkG<4&J=niJ+{Yixv%OL%DnAVE0-rtBBmLUbJ2~GUPk|zF#0d3>?7&EWXIAeZFJaRZQw-&zZzdr28zU4ms=SfHADaL>%Q*WKKYlw`JX@f*S_hK z{&Rzy=5xO1ujvgmJm^Eb=x+xro++AMdiwXj{{w^xfddH^G`BNb~q3(!|GpY`k5gHv9e^b|u$P7;M0Q&6_!Q_WT)iXwjoFQ#O4Xb!yeC3Bz3n7C>rKXG|JeO?Gy(HW#ki-%JqtCwF@>{Vtw)jaRI1^=@k;eZTe{EbY38J36sly(9q%6ZA zg&dN|B8@x}Ns4}4lF7wBBuc~^rJNEf6z^jZ%YXKJF-9uA{1VJC?OLY_p`dH1$u!eU zlFc^Vd=t(%<@`v^I)6MfI(DiUQOrI|v{J<^SKQJl|NJ}@(L|{v)66sNe3ZjEC7qPg zN-e!qG)OgNe-KZh_EZ#9`2ZC(OB>Ju&d^X*U6obja%2b3JU5-SI!tZ771vyK-8CXw zeVr~=cHBv#)nbJkl~gQkV1l1QjeQo{Xz${uQAdBh7BybA-Im*Ky&VtRa48Fx9e$)e zS1)9f{YQ&-;jjVTcyIXO2X(ki72SOGMVDGwI~5n;fB(n69hl&P4L+EqfE8wpTyyt* z7%O#?4MBqd0uTV>0R{*`EErDhk57n29yw8SVnuV|ln+Cg<(6H3*_0ktV zfV~fa2~;4j47jlQ4e(Gp(}K@1762CvYG};*Ut9tRK@Xa)fDOdf0!dgx6UIq|0ej#F zf5Su{7=+C%6QrQe%CNuRp@VSbW8n@F7s3?!>V!cQ;t(OQ0zx^$WQm~7F-BfNu%X4kZStl zCOO&3lw^`tgS2FU49ON7yit)uqk+&GDS#WSD2>dj<0xr)E=+=wNuJc@E_s;|Ty9E~ zwG2>Ks^E?^zEEg^yW#I1aD*IeY*2LUpfIVas$2fjN4?bMHg$gv=05oe#(dfdoc2tPV5(5gbB2yt!sCZK znApexw1YQ8=-4E$C{T-j37`LLP(L}^Q4?xZO#!`VaRf7tf*O+v;1eG?)A#^~reQZW z$iYPEIZ~U3DWf1gk4Jgh)As4Ke@P;}DQ!6aXcTgWFMR)l%V2KfQjO^kEolfE4dzM7 zpQ&gi2=B(o*raNBf%mJw3EI&Ac-!j;&X_6JM0Mcq$ zr}I_6{uOR~_0d@K`WFs%<*bJ_YdPJiF@K~%4Kx@)#=s`ciWU~L%Gs-6e^p~4bC`o3 zDP_WENh?~?p7yg7LTzbN8WYxz7PWwtt*toQA;M;sFN#%cQV7b>#zygpmDQkCaa-K@ zY__(i@hoVC0^8CGWwoT0P;@_Q7}r)8y0M+@b}5zI4c*qbd+DHH7`sY1y0K$}n`L;} zn>g=2s6wf2E^3*O-RMr2f4bI%3269A0)n>_y_8O=n}vUQkzWxSO1s3=Wo@WgjlH{aPRSzdEuEF|QKc-X^V zW(Peqj9tSpp;u&1^q?0l5kV7KBF$BjqPtw=F*DjCJ+?50BTZ=wuhz$f-f)^povA%f zr_Fe-i&>LU(C}5Ee>LM%^{nTj=TrOtIYPK@^sWhgVKR#vF^H~or!gI9Ut1c`JDzm0 z!Ms{sM?}+JHV3D9{pm-Gy42YQ&8?-AYFcmQuxU-}VZUAOtJs>`eWvuXiS6iP_xjS3 z9(J`UeeL9RTG;JgG_coAk!Zt~+Vk!*kB=?tQEMCFfaJDnf4pt(tmt;P4wv{;(0yxl zC&nH0KFq&S+ux2W`_G;hIi{lxZ$sldA^|5hbus+xUSk;GBgZ$#PwVmfCLHINSvbQd z-gBRusN$!-IASs`@WjxZ$j%12zKve*Y5%(BA{VyG_Z{7q_j@8V4|uX;F72dKH|Jre z$<9;L@SmR@f9-Y&`kp5w+Qk$-+5amGt+mbk@qDLT=DaTX$C*8KtlM0~ZpXU2VP0~2 zcb(vX53|@ApD?nY#_VaA{N$^$_BDIw(t?Jq%Za{hr4yXf`StqVqh92J8$RTgrujy+ zp7+x~ee`v|dE;rXlE*`y^10VNY%H&3%!^+2u;2XPe-}Lz&)Z$lCXYJkq5k#PQ@zrf zPpw8;&+NV<-OxX-{q|3Cd(%XI_uTXzfv{uHnOTI(WoB(+Ry+UATXxb6V=ul}@;`yx;zypJ-#Py8+r?a1%O z%unfpf3E|H&CjlG&L-Fj^ z;s5?c3^@@MH4zg##T`IV6kk!|_JI^F(IGG~6>rfGSJ6>gaUWpO7bQ;?OVL_R5f_Wm zCI)qJL3r^Om+|bxK^)A1DF2YkFsz0etI-;-5gW5n8&3uy*5C-2pCULVe=!}`03o)K zAN$cC|FItp1F49@9GsCE53=W+@vNk=S^&}^9}*(_u^aJ`A}i7&FA^g&QX@B#BRkR~ zKN2KEQp5D|AR^KvPZA|f5vk6~AQ93f%gq^Mk|Aj^C2P_qCGsG=Q6zVgCwtN-e-bEz zQYeR#C_$1W4dNz~QYp1jBOt>kCR_3)qY}@a@+k#x=NvGhkV-4Jk}JE?E58yf!%{5A zlMqfOL@crL@kEO%V^S&y)6D{tD)#{~6H_r4lQA39F&`5$BU3UblQJulF`Z%v-a#`r zlQTQhGd~kFLsK+IlQc`yG*1&XQ5<`EK@j#lQ@ghI4jdIpOP?_lg5%W zu^L^P z<1;?hVLJgRJMR-e^HV?f6XICXFqsoT1Jp|#lN<`vKo1l_6I4MLltCNRK_3)CBUFDv zCzL`f)Iu*5Lo-xEH6i0JZM|YG*d(=l|bVXfMNQYF_VDv|i6iJg*NtcvKo77346iTD?L4%Y?tJF#% z%t)nFOShCuyVOg+6imZZOe>U1uhf4`&lIz=bWGQjP21E>-xN;cR8GmEOwrU%?{uWp zbWZn_Py5tQ{}fOI)j{hNPYcyhYe`Q9RZ$m}Q5)4!AN58F^-w33Qn4seAr(_IRZ};W zQ!!OiD-~2jm3}U@Q%luUPZd>D6-qx2nHCK7nSdaB#e05ltm06qBS^xL6Sdmp)r`1@L^;xeKTeDSLnKW9d)my(6 zQLJ@a$CX^m)m%xmTftRb*L6z7^<3W-UgK3>6*OJh)n4zFMBH^=_myA!^;zo`UjtTP z;X_~j)nE@6VN(@g2bN(QRycnOHen-HVkcHn7uI1f7GwDWVkwqmJJw^@)M7JMWJh)@ zHuhsr7G+bGTN{&PTh?Xw!emueW@naWX*6VC7H4x7DPp!}d)8-vmP2n=XNQ(#c@}7o z7HN}qL4}rRoAzRjR%xSFYJHYzoz`jv7HX$fYq$1etM+QYmR+-!YsY_LJY=XX!t=NI+!YtgM3vKF#%(J z=~P^6_jwJ}U2AwQniq!^lZPR5h!ry`ig+>Ap+LKnWubyW6Z42$*GNefilG9ClQ@cl z7>j>ch^6>3<+p!S>DPY8_+ju@9e{IZ4cGvLzzHf~9uA;c!~q5zz>ViY2qwz{=3yRo zzzH&dDmB0f0>A-+zzNP{$N`2TbZupC7c$KyIhLO07X_zjqSbcw6`7)i@i<5YXi}i_7*(qQ- zmZ{j6n}U|B7?)kym`gU8i5QIkIaQ3w7@E(;jM4aa$6){}AOb9=0xCcN=+gmqAOi#- z04%@&Lcjs?*a33qk9QylEZ_hRV4DYkgAE`Ed;ohYc>u&f9Ry$mET94ozyK=10w#c* z>9_)5KpcOP-~f1F0x-q`EFc5|Q-+N{!dy$JV`gwJDi+?$n zjd+)v_$hiBq*wZ+mwAT~G?|H6m5n%yy|$K3xtY84nWNdKjb)md;sJ($gF~PKGT;aCt zAe9rZV|qsSS}!QGd>a$6Guko-dzK^nut&P2Y5Fl4+p)`=DaJdqIU0SjTPZNxiZwgD z1-r8|^|M1;zY%4$m0|!0+KnrjKKVg=QJa6Q4LG&~Qv-0@uEik)8aXBfKnS*3k23%+ zBG~{QcnAVu1`L3M^}zxEoIn5+dItphq4RhGnBcC9L#G=QzVSl4S$Q$L+dIKKq=6Zj zbK0VpVzE>DvCSKp+uN2o+Op^SyoFq)mD#@U8&dOozn?rzCSV@UI3|<89In}&U3-6^ z#wK0&p9_!B-sgSt$%)2ZS3b2EYjppnwCQ0)*fI00*02IJiew9BwHZ= zmKojC8(Y(*7}I0<(tUg~PraC>LcD(|Jt;)JeVM$;lN`!#{eGvMsGV^g%t4?-z$lnt z%kBDw*I@v5-~xU}d;d3h9F_vj)m$Ce`~dXf0fOKHLO>nlxX!(N9y9>Y^}K`Cq0f`x zwjF>z2Lndpqs3Wzl@~p*8-21d+OKCk(vNx437e)F8;4na)?Iniy_nODd_{jh{k%i{ z-A6sWMY^W>UEWPy)g_bRi+sL={Fq~$);-nMab4rfcpf^KgTx`aubPABdIGv)0J>Zs z_(7m6SbGOx2=*5#(A)r$LfY9O1a@EoU;suUIRfmw+rNDW_FUX|pa??PjdS2A!dKl9 z-DV-PyWQQpkKEB^Trp`}y_tXFLSKAmE#2Wso$37@;KRPL1)gOIe&D@+yw5)2|9#&d z-lMrb;d>nIBiq&g6<)GUI_mrV;u+P+H{S0_#3-cP0epb)eIUcNHv%-^dvU(4 zzz60b1KeR8zIg%+zyRJNDFS-t*BrO)#h)X<03u+UBVgp`Vdh`swl#mC*|T~c0^o(i z+MPAP0UCPgts6-7-s^Gv-Rr*L*?rZ?{`Xlrv-Q1(A6}zRn(cwO(^LIGi&NG)``}-> z>(_qzgJ1ZsUMZr#nD>5B`~L64KR~=fd-+(8=V5psKnQjKp9xwW%s~JO9Op%N2-JTb zoFLit!OR!D^P^qN0YZP@01G>IOc)>}g1K=5b{G)1?wx>n8pf#;=U_*GA?DT%+)-hN ziU;aSnmmazrT@y6ELHA%3G*ennKWzKyoocXPI572;#B98XHS|vVYVy@b7#$>Ok*A` zs&whgr~A|qtvVAZ)0;zQCiNPWYRs!vr8Ygg?<(50P{E$%ij^ar)~`a@o;^CZ=~1<7 z)kggbII!TsgbN!!j5x94#f$~(#S537wL~C)Q<^iEgx|U$w8vTG2LpyW+C#+Yvj`&u zjCJ~ksI&bb1e0~POOC6u&g3|8?$i-C_W*{)anYUcCO(eiIDX-YLp-hy#siD3#dd8x zxb01?G)>Zd+>)+RyH4}Jk7|^EX@ON=PbR^2Ur= zgM!4Au7O}a9g6S6cdTP(7};w0^@yH@{;tyC%DY7?|!VhgUY%7&YNY*t9w zb)c#0uFGz_D55%Ryz3i*LTF)#`4){^rW>zobqjFp2yXjBvsVvkR}j4nGWW z#1c%b_%G*XA*ti*09AYugr4GF24-3o*17@^N1Y(SF?$T z=6veRJpT;z!YRj0bkRm1jdap~O1rdG&`uwAGoep2w)50D`D}I8TC+Ly(q4ZJcGzN% zeJ9piZymLMXB$@a+Gei}cifG2O?KUO-;Hdg!8${~ogCoS%+*>ZO? z?Y7^Jd+xgDUQd@1;XoLZY+Dq6KJvSdPk#C4pO3yctFO;~`>Uo8fBf>#PkZ?G-;aO( z`tQ$w|Nj3EzyJzxfcT@I0S}14-MMdp3~Zo}5(vQvN|1mQte^!ih`|hMaDyD|pa+vD z!4Qg2ehw_52~UW^m8@fhENr0*UkJk(%5a7>tf38Wh{GJ}aECnXp$~tP|63IejhMnH zN^y#tv&}fzfs-LzI|T{3h?598f3DAHFbf5$+s6h{k(1a@V zpZjd+9rKCBcgB;R6s>68Sg6Qe{?efwmE%JHKMK;2igctTEvZRQiqe!mv!g71BShJu zNETXjrZipJI;wzAcIvdHJYAzoe+tx~3V(H|L@laOk7~`HD)o#y-6=buQ`4wQ6=pZh zX;a&|)U1jTsa)-! zR(G3QbJ%vd%%u}OcDqsI_LR8Pt*&*ii~n73N>{1S%?CZ23*PYR=(*6{?sT(@-t?+> zz1B4^PrLhF@yd6;FfxaG1Iyn0>VJ2?{PpX7?W$b*3V6V&vG0G++TR2#c)<+*>4DE0 zU;;~c!k;nlgR|P;3~PA99A@Z+vl?Lvi+IG9vG9k_+u;4}vZViL=E#w#)L zi&@&@9P4<;9lmi-V@%^9)7Zv7b|{aJjN~M*x5zC8vXGxFVj?qHpGvN>m4C0?+9`L` z$x!a{fTgVEU}Aa9WG-`G!|YHldwI>`1v8ohY34Y~dCo_D^FGzg<~%Rg&35)9o&OBz zK##P~>cq325B*s_6PllbZnUEx?cqiL3)0YtuC!YfEonSLdefZl^fog+X-kWmwwMNW z9X*ZeRI7TKrUoRXM-6L>mVdg{9$mGqZ|!MX`|;JW?zKE;t?M`9df3Dkbg=ozYhNqd zkib4R8;cF?XqVa9dQA4RuN}o^Q#*~)?zXp)ylp&M8{6bAp|-u)4$A15N;hPIM!hgGH@Q6#Cx(|n= z!WoWn#yPy=TAaAYKfYRyyYb=~FZtm%E^>B&eB~^kY|7b4a+AyaZYURd%WsbJyuN&m zF`v25#a45U=X~fy@9NIg*z=z&egA1euXxd)4)vfOJ&j3Uy48)=^oK`%>s%-4)X`Y= ztBd_*Sx0!+&yIG4et-RpVIRBORaSO^r+w~pkM!Ed*!H*UU1D+HcisOE_;B96jCtR? z;q}$`dIx^-jK}8S$yoTqOTJ!-cX#72k9ikAK8%r{yys_Cd30xf^rSEA<~jfQ)W3?^Re88VRwzCz!^C3oj z(mp=<)SvtE3Cr2%Yu{n(U~KW5di?5(pX=8*zHGa*{q)ysAL|$`VK+bi_(Q$?;CIJ5 zs-ph<%ZvT)H$MF34}dvGe>-LWfB2_=2PiA+zy!I`ds(yw!}J;vD1j45ffZVbUNPmZQXoqMhhD`{CU&x1j=!bs@ zh=C}GgGh*lXowjYhIwcLcgTp1=!nvnMOM^?Z%B!I0z0&XiJ7R0o5+cs=!u^QilHcq zqezOSXo{zZil_uTmB@;C0{=T!WJO6Ji?c|JwP=gCh>N+Xi@V5+z37X-Xp68YjKfHb z#b}Jjhy#qtsFw?&4jq5!jo%24;V6#a2#n=uj^~Ju>G+GoxQealj&ou=n<9_%NRL|b zj`wIc^{9{g$d55$JNO8YpyfEELy!e&kfqX(38|0^xsW1aIsplh5y>LYtX_Gf;lO>6h zDngNj5tB0sl$2PLJ4uv9Njf@dlqJ%W@d1)S>68IElu0R-Q#m+DNtJVB|CLNx6i>;O z02!5636^2`G(90HVtFD<*(3(im226GUul+a374f46J;5fA1O6H*_3Rlmptf}b?KLX z=`L9bn1z9siK2g&dx@9_*q4LJn2ot6FX@;t**1=mmx*ba&$pP7shOKOB9O_MggKc# zvz3=gnwaT1pNX2OnIfL4nt;KYu34F-DVv^`nXPG?x7j6Rf}5h57(Y3izxi{uxtqh8 zny*Qmx!Ies37pG0cEWj_&*_-P37wCEGRn!E*Qs>QIh}voS(nlYo!+?N$TKT9~Esp)uMdTA7@qiK02$Ybwg3JsLVLx+Nr9D0k^DGb)(8NtwC{nmDSX zO=@X8>Z4IAIY25F4^kFJdKVlLq*C*tpK_)8$u}Be6IdE3u&JbY$)rxIrg;XXQtGBv zDWqmmrAzXq5K^aGsy1C3p&X(adNHON8mDEtq=$dGriJQdZThB(>Niv>AXciS=<=vc zG9-G+p+>={nc=53L8fkDqam86h6<`QhNy~4s%OKfKcbI!x{`fr|0tZAq&G^ap(?8+ zHmap+t5b8TE3uEN+L5g4DXxm7)%mHjN~{D{tG9}*Ka;B@i7w}2qLFGJ8RD!4IyCh` z8iIeCD6ndx#mcP%cC5(?t|tSem|`ZAiXmW{5(y%y5@M~RfvrQTtp?hy^D1B88m{;1 zG2<#Fn&K$tx~>MOt6n0oAR-sn3an-tujopz3u{~UimwlwFsF(i<%%CHz_| zrSY!e8K~`PoeV3oiRG{mYqI_Vo^64pT9SXU1@f(pRHR`FcIpJJL+;1C9_5Ms!44XBV zo>yOKt5#-y{Wh12F|{zHtL#suu&@27M0(qJ#QHGza6e6-daT*!;m~ZvAmvgJffc$V#Z@Q6F0sSa#uqD*BWjz&^~j4a-9}iAMq08jG>widSB$*2 zzR)2(+Qc;4$9F+nb#!R4OWtjCto__z)#xOiFK2XXbk^UK6 zs$+s%W1o)4^rXhW@@2ZZjeiRgrB#i8N0PU;#(znRem(!@AUoIk(VIV2qWe{EK=<;F zx85+gPr&0R7^^3k$0k_5O`usO*<>c!O(svfPjbai@>Eaqj!p7^n-pZ35|)_~HJLi= zPX5%V&Bi1%EpIY?$$k1tJXxS$larjwj1?hw4r=j{&HJ?_*<;7%W;CXg)iWe|C7KvRe@aQsW~_7^;Aoy;<*d6m2t$izzS9@Y{ie__F5$ccm6!sPKm zOXOF(kK(|B!-~wqqOkcuEU{dQB7u~DX8im}7KoS#-*1{-6ntAY z1j_Sc6(R_owU{)s&(=MqAAzO zy^RiF1*()AAgY`kiUjvN5t}eY94n|6#BC6XL?nqVD+WJc+FpI?Ij9`MH56m<`!V7^ zH=A)Qvvq`90&rNBtDAH8m+M^hz1NZaR(o#mUb%nl&$0TwU33S+QErVH0$9%AyEzwQ z11>H!Abt;5d8IHSpSWou2rtndK!^L;lWxFT4EjCgJY*jcG7;G2In0ileBAQq?s#sp zx`b-NeE{D6=LC+yg5YAcSO{7hqrt#sU)xn2^gQ-zbzG0MQhf&RV9PI?7MnkOe`97cf#0X|Vd#rbn1|gthckD}uZknr-)M*?YReg% zCEM2-oXZQBGn8Z;H3V2Rxi$Gbe-z+y#A=u+irnJf14idR4d)|34KoATn+gaaXwUAX zS2nAZh!Gzs#-EZq#`@k%C}dQrz8N$zg(bkpM>T{&hEnT{jgkHU25$thJO_o_vSMrD ztSqBM*7=8|*N7ktfj>CXb_FK1|fP ze8++8(0IowFXHmM2&lh4;M;rM3DAkZsmIq_@h3h>~#!!_LNl&RQ~~= z_u3hXfDA-GUswZAV*Z(bZ9x)j>Iw-FQVWxMVhi}B#4=;FzQqyr6~~Acw?I)yyPRA6 z`ZIv}*rd~{4Fj(E_TM0cUGez%r`fkEkj>k7Go4CW9G`piD>>!(CDa+l=(;Bt${r{^ zj#3fC3|MWaU`TVsh9GPhAGf#OdG2?!q`c_K6eB=AlZH2qZP>q~$JerQ$%)T5W^>(W zdr_r)dZ*v|$tvI1GgQ(ELe54{kV^~WB$Ci~=L<-D%9k`)X(jW9kDcB0y*7yZZopfc zA*8g;g@DiP-fz_5SA8b+&i(l;Rmn+pW)WzXmv$TaA+?b@o4n~NGaX|McxU)d6X5Uo z^<22+TBq=Uc=(s6b9L}g;y6}D3c;^>arjo48Ju=5Fi~_$4lW3G=2BhFw9Q(hz10we z`C+XD2(7cl1p0lsUH)=%X2McCe|K987e zIE_)w6uo|o_=p`I`!nzEsJoRS9x4p5_aNZ2lYvOKs-kLm?67KG$2XS}kgPXDf}mBxHVH zXVAH-!LLV2Qlaev@e{E)Fe4VlcY_a96(e}-41l!72t*)?M7AeL_b=6^JSoEw7q8#9 zyI+xT<12$OeSIJB!T`6~?CFcJ`vM^|`I4R$?3e%+4dD}!3RZt(^G(}<%YB;HAQFy( z6r!sg{|PHWt}9(uMk?Czb*t6V-dxjbh8hk2vcfb~3gRuDrJK7O4qAukcqTLZWjtaP z7ZPtRG}NE1@!_nVN%IP2TE5q#aK3i-m5{CXmWJZ2x}A~`ysJFb7KO*27mV^o=*nZE zrVa#A<8XCMpgE#(P0A;ztbBtz)P44%*c(d3Lx*UO-U4=OrrYz~T>ZGn;$NH``DkHh zt#iv~hFD8HKS_VaUTg$k;S{e8<6pQr`atL=f51gYxkKB*;OWT9^sJHuhOY0L84!qg z+^hn8y37)JD~E;=hT_+$-xVu%P#q=lf?bc;2VD)wPt1vOa5j?TmV&B`PUKZR%jC$} zcE^*;O$%clbMY?v_N+>=pZMeMq`BUSx?aNIy$r^`%4|gL(Se(wh{UHYv&M8*Se9@#|n5@W^k0lD;#;8q#;fg zRALqby(d46R#hbTOK7so(dp|98ztQPc5ivpi^W0{k`3t zJ+1w{>A6*OAGV;RD7U7F4#S!m+WKgk4>ynY#yOXmDdgt%s+n;|CN#G`E*hpp4Y!uH zK3ub=*^X%w;n=@@k`KUN=~qB0WK;?6a{^af7|R zLDH`2(lJ=YEJtjA=S-HNafu^`+%5BUMIYzKMe9iYb?L#R$23>XxDqT!Z@+(U?@o!F zu`8!p~y{Mpg{&bT-d7)YA87oEtQ;k+o%6 zLE1Jp;Uz)bHm0hroxPpiqa_s$jh($EH4Rz0Rav?8vs5)TwQuciZ|oe^rgLj@a@qwI z4Y?&%jjf}t-Mv}4*;%;_1tnFjo%F+Rpey$UbdtBVx4VC|v9rCud$hBE)YR0vzkd_} z0K^FZLXd?^&+&jS_LD&zOx%!*h(R*Zl!1qwRD7O+d;-42Afk3j<5k6MSTCCI`=7IujALMS;ghlfk%Z&iNdxA)E7 z{|A4)$SM3^_^Z9;=a-2>qc{0Qt-m%64V}rvEOjohA1FNr%XRjMXiFm^#LFl|28BUN z7_+X#aya8<=jH$9zsl^wLE+?!%^Ljp1j`<}^JNKf!onoilC(Kp#2o6+manB4U;euG z%&g?{VygKqmrrS(CZ(U!t$n{bc+W?CUCOXeclrEZ2Fw@we+<})-f|A7nk6+SXpb?J zM1V<^k%T@w{|^HecX^{MUQPF~o6dl_el7lA28?{ci~$A7l42m+u?t8+&Kz}-lkf9O za!p4H{r}jmz0H4K|6CGnn!L}i0m2`C)&aIq=;;zH0=90a5;@o_uKYcE@evrDunsya%NAofTEN*Pq3VZ^>Ooj3Qckt# z_seB{kE?h-pqe!i9$?89kBckh`@-E4;ARIE!-T5z>kp_MeorK{zgO*?01IbRBCgW+ za=C^Ebwk{tlKNQi-3dTV`A15|XpwldBY{sGi?~v|Caz~Nd?V|I!}bnYQ0LBn+4Fv94)qH~6mF-=Zy&hdg6yI_+)vbYLX z^vTJ-60(f!K})d2+oju4WVLs2!aO}ah{_~ zfc*We#6{j;*5PvU^w4`&dBkhu8>}f|AU)~;Yb1sg>`%@wlsrwQ_(`1Miu}cQIX+Po zLnS;bY0&S(qQv7M0tX24q@M%_cl$V8wZ9AM6{WEtbgw`~zzm8Hel(7c|j|NO7xg;!Dg7>GYq zJNAV7Wr*&uGxV(f2l5L1`;+pIGB-wjQj{wCFXZ*+a1O#JpeNL!mH+MVKaf}Ro8S+9 zGJ%no?NEOwI(A6cj#qe3*8XN_u|K_LCO-cVHSk}^>(9n?AZpJR{1fg<3dVjsq@iEa z9j}uE)Ax2qU>SU9=@1?AYCHL3_uGeULeT8jKajusZ|IQMYp;Xp`+0i@`K+Xgt9rDsAATkI$4Ft61e;_X!7xC1(DMu7hfDU;%2cBsruFnvK{r>}bC0q#= zb2b$(3&qeKF9~1i`OuHMq4F93alEu{hh3gG!7C1iY0@DteNVOhuo;eUo#y{QUhro0 zPg1ySbBO7GA+JN<@EhDFhW~}UwCFvBDC2)2FDW|Y@(f>GJ&2-1h-w^*Vg}mbFke8z2zmV4xI^4Nf9jvjxiAVTE9ICuneF!xf7*$BBT!tW$$?GDMI&X5cQojTgG&ib7|Us z2`UTE)EN^Q7eZ)*Q1`W6Od>TkQS#O!RnN#lZ0j_ zKx0}mVp|xLsSw_B{4>?B&qRjsADz*S4S)$I?UW?>@Ga!HmVvnzP}}j%>xX_OKy|55 zmw;4Oz2wjU-8%*z2uVn6=0i6hz=o2czC$K6di-V0cG-J;JOObN_j)k1JEALkOl@Psi-;VnMlyLiqr!SOSXhsFSUyTzqs zDBG12wau8jCzLaD;PQS5?Xd?GEo6%h4&5|4)(c=qQD^ZSD??QEzAu6t}f9VM)RIo7>dV?|13bO6V_?iW23+sC7CkO4 z%r8k@HFLa8D6m$B!U@o<@*GGE-uR>ig8!SDQQU%-*nt#&h0t3&H3zs_mwbDL=RZsG zVXjVZi#8`{uX*>vdr7snuA0Nn!$ z^l@ZuS6IU#r12f(9`gh5{ zF{lGu^yCKQuPvqF9W?JU)PzzY#|jHpO2`?4?6w*kQxfJGQ8owFG%U2GNcXW*7Uvb{ z?b=E;R@ieM${yv#)CS}>HO&=<(!-!_T`HX~mosC_1rL&~TgncuK<^v^>b1`$a181M zD0+jetCXL0H$S`8Aom0>LY;Cg!>vllgMRSpI$DBI)*uD5vIX>OAx!U~G9wL6vCub4Mf(`E9R;F0lA%Y< z7x_|VgUQlv19WXsv|5)v0JVZGXQn>W#b#OGfx&7SwyF3!=A8y4YqrqSrkEDMh6Y(; zY%s9Z%qg4PDD_%;YIn1JQbtuwr8QHP-y^7MW=6Nvi*2)4anVpX26bFsL(0l{ zX4JOI3VTqQVevfUc5S-YqhR&hFg06L%t)285JVMQU~Z6q>kd8kI3Go>S7DBLc2vJ9 zfqMD~g`YYxEVm(mk1&OfLd~gxfND9!^2#fl9Y}&CZ1cIc!oaJjr)3E|Fh3Ht&00E2KSoT>o>2=k9)ngr zA)xODF+{~ce-hAFV!(~%jpK(c?lVxwl1hCVgDwvGb;wa0ll7SZ7H6u`W<_ZMD2WLQ zGY%*j9n`Lc@U*u?FF>ox0hQW@K12HJTOJdQp1%{|&Ns48>p*AaQdC+V^+JWtG`U=c z8d;TBMWZEbVODpcK|>H-{BT{2ONGf-`s?>hoT)&I6(voDv_(S+NYrCW$@Q&}PFJ)E z(4_UKg86ITG;=@Mr+%5~S(ViT z*ifN=%~EMX5Oj6|$+)e43++k)o*efae|6E=NDOv*xuM+R8iY^O!cetOMu4@Uw4({X z*aOJvBcHp5eVgqJdQ@Eh7aJna&+`M9Hr1KezzQjhl*dY@XYyECic4#jH|rtRZvVJAw@BxnpNN50F|8T9(I zG^Wt1I>Fl=^(3dQPPQp?|dhwtsXxGqF;gRsI#?z)I0d zY7%I9xi2#c&&seom&aY&q>Dj+&01EaWHI9y4s2g9O7&U~FU5R?Z2G?&V@kBPhHBe3 z;$5v8ioU-4h(MXxerTv1Qc{L!S7jW^thl6iZN{ND_gy@#D?U_Isl`E<0F<^-8=OXa z8t6C?4>h5AYn5kJGI~guHQYF;m}6qt!!bzIHiRrv9&SF?p*;6HqTGhR;Wv4k>{l zO0CSJULmK(#f_FN?)j4sZyt=|l$e)N@QrpX<@R%|sDOVk{E@dog zWf0;x4qdi=ZTTMZv^66+X2p4-Pxf)^Pg+A?Ov;Y_YRjWmlUkR1l^ICZUZ(c(tAAXk z|~@wFSe zap2&i&)fW8yi7xUB%2$R3z^?jba$!)1u}xiWAU9hrC7%);}&(HstD5-*Gh^`&egr4R?ux&{9lN~ zKd?1hU}oI!_5?J(CL<#k{q4_E&cV0kQozh4OQ@-6Bc?x)xA^!2?r+Do76(mfBvqb( zE_7+$c0oG@(i7Yu!|lU4A1J9GisufyZt=o&GIO?{h_H4=^b`H))AsQge7B9Gcgk-v96zocnH8Hf-aWL#AzB38!Fi;lX4!UaBSJRn9l z*2f^c?VVR*_@fk=#F9r3?TCVALZJwb?Vtaxec)aA{Cq5JiEv-cj~MYCo{Fm7B+JAO zIRR&p&LB!kj8tXqR7|DR+cVz@yuVZ^adn(>ntZI!G3P29f4nSZyg+R)h+U3I&et+rJChQVTqqj~-}?g-qmYcrQ*4RtY+Ws-JuMsHSc2?jv)HdlsUCoxCFV)6lGM7X>Ww z&YJF)DyhWE(ip^KRBPjeFj79_U6UI1+|-0geIw2(Tc4OJ^`_(ZEK}aC^RA47@gTBY zZb03}z7Q@e;|u9KCk9JOeWWSZ!SHwXIT07x3>FtdM%GFf=6?H4Oy74oa(^EnUSNpZ zSmj=-+>m#|*~LGwhC{j)!NuYL`8^&hO7;Beo=$T68>W3Xdv6> z>7U|!nEA$wRWd&0aI@(oj98&q$xJf7Km+KSHM`?wNtZ5k0E^&$^g@Mpu6Ga**Q5=g4!+&~8KxY9c z@4iYyRn}$IUQY%RA&PNYj!iMfi~_;d^6L>eOd2kQOYl?qx0~VYPi=cekhP4S0a>6I zW?F)LwmM2T2~K=bU6?}xf&+Yap&bBl?p?kA}u3jmUJ7yM_&1C{P)FIe}I;NEK> zCWQxy{HmB}H5#Qcr4b*-?TCYSY2N>@+2uGTxAE})ITLxwv~Sl^3&k8HO#%$fOKzlP zZRCmHJ215DzmZ;F$QJhOW_7#6#rObYd-0o@BlhAGUXsSn zx;L|?iySXipG2!axP0^Z`!&Za9S0^j&TpA-#hjGJ0!)2MZsy?Ih8z_?9GLp|-^~4K z{8{mBz_p;yH}j6xO8>kwxJH1PQy^!ZH7-1S6C!S&&+Oo=#UGQ6KVx3NUhJ$RGi(yB zW?snq$yx7c0hJVKUL<oGPcCL_`HLQQFQwC#C~(S+4c2;(bMUaTn-i4{~^1S zVI`N&x?Yceil3?MTNZeLyL~g~(7f#OFZxlfQk`keix$~DYs!>~h(+DMBk5Wm!o zv8T5hN-UH;F;oWeom}k5t_16~FZ| zwvPqX2oO)awQtouD|T}beGW!8i@uo1f5W1Bw7|@2z)BZg&jR$7w$t+3cs(x4xaN_VpOKwy7X>DNi@rH_zgTEPOM2{kOZA9cyL3#NHcv_q%g->>n@vL(3CgZmQ^Mj4k@uj+HcD z%=j1=Z4$I{c(u9n)VNGUM=W28O;g_)*?%xsr62Hpu^h0!CleEV{7~r4wY~<2?{Sx` z?LH-)%rLy-_lUo8iN;SSyKZ)#jSl+{*>!LOua)b@JiZJ-!tabe6sTuL?m*_u-||1e z!TA=qJ|~&7z4#gRjiblbNh&=RgrsgF!fn^Q5q3Qy@$oA3+Ou|3VWR)6Tj4+XVe=WO zd>$d*DyLYcjM{o+c+H%6!;Fur7(U83LJ#gTZ@^; zr=HxIn7h?gc(w5-tG`9jg-*`KBEI=BifZ4vYeP@k%`|(zVFK@3B>UR_cnQ1VWaWYi zLa05MQwV=`M&jM$Gm0Eoj^g;Xvs&|A1)&aUrK~D~?#_^F?}Sp)cWqhZaYj>he_jv% zvd5gz5JCdaO$?;YwP)U%^XlRMyR(YBQ-`f#Nr&Y=E$slwrDg(}csHbSAvsx9ac%T`8f56zFxb&yORDg#ys#Hfo2ZLt^H>jJ`Z(rukAA3!D{jK@qQD=4-Z>)#m? zp!!6HaC#)C(tLA0o3lF8F0kZUc~Du+I7mP?6B<`h446=6ZVmh?F%7?o9Mdx(SqY6( z3WR%=2%IGVZ3f^Op_24U-XI|)1B?V(yCI6W3^=E>hUg%Pi%tUab~AGm(W4|@96{I` z2&9U7W^`TH2O|eHk+zyWl_|WI8l2Vy>VKY4*M-_H$^B5-{m>I;46tc%Wlu5&W~qVP z4-FY4;CV;8c-KNz=i6$hw=n3F#Nvu6F1-r z8ysz>hhH0jWpJ(*Mte?xp!x=Q)xi$ug5pdPay>MRBU%niKn`|=ar9kCA_@;ii2$LJ zNkhSFSO_=#xvE;FKY~LDL^3xF=>>Q&%`XjfY8r|yd~|A&M$%zAcZ&LeLYAa%oe@m{ zLIo}>lA6r>y$Qgi9A4Kx)o9o&zDkb7OwetQ>*LfXGGo-=Qgz>j0)99mBhY~3=&?46 zWz*LVXa{m_^B~OtZ>k;~6J}7r8SY$J(J)+m913%e;u6!3F&_xG)(>+Y3=7wfHa00MZa*VxQ3=Ogs%$_j_$j)R& z7(P)Y($^&`6ajx9pwd_mVkgt)N_#UVt{>Tdx=B48U23cDLZtql75F!61o2iuIVd&lnvsbACP; z)(!{^YI5fcu~SK?4+%@EgKG-CaLjrCE3vpJ!8y;_^9 zpfEQrU`G(vMXe5 z+9hA9nzd9_vo*i&wV!y6ET2V$F|&p?TfZEB5XQ+(WML{-dp{&~VDUCj^Iv=}BhYN;E_ z{o%#ZCOH#QQGF-&4b_J3M5Iv85&r!Q%polLl{CLLAx;rlG(=*vG&R=&%rkRDnhA^T zz$S>4l|($F@HTi0Y~({E;n=DBv+=unb{|j=J`F~x&e=1(N z)DE*CR^Pi%gK#elClT-YWU93KmQTdkH@eU)1j@EB-#z4+aL~-~SxC9g<_! zDkEjtV18%Rs$=Z^i98|fm9*)fk#`%RzpZ8XQc2b}4i{THI3m;}f91uq%^8CnHBCJk09P>2sTv zRwsY%_l5S6I*6~UtE6gYXstl~Phh1$+9(I`2FjU1SD~yg##t2bZK0~rva6>MA5gA3UI^8#UIQ%h;n6&UQwgoCVCN7Z~u&~|)&5*vJ zC095Xfxw)gb9n-EX;sEAgV0~R=-ykt*-GQoCop5O1M&Nv7=PUl!{(<2K)uCPhs9@|yYaqLHk<(-*_ zpyW=i>#398llD2jC4c|e=l%VfaEcZ#ij>Ee*JL5InX!D1&hNGq~_;K;DPww|A%6@m&!2yO7ie?A=bCOI?x}0^hC1*Fqv* z@@!vzJ;-|q3MsqPiGV|*oZhq z8gKmb()8QYG2ZV(7e47turzw&+&WEXbI)GxoB$~p>phe2JO1FZ2|GIrxPDuDOgiPN zb#^0J&UNTiXl7u1fRN)z_e?=9Fw!lZ-3pgYG9Nw#K80}Hc`wvDClh(~v%MO8RK$1= zTk{P^oKe{JhakaCE>DorS?k0`=v`GlJ^U&=M7Zz61uQ{;_QC(}hq1f@ysQ_H8oLGh$3#!MJ;T4{@r8lM+bHjgAJ6@xW_E(# z;gtN|DUAehbNg+#6QqBkJoY}zW>+}GjMaQT;JT`w2`;LJQVF9nn|n*(8dnz33xp@D z=Zjx}-(yCczA3{ODzk00pfHH5)J@WQR?x1M{0hu+-%UdHRv^stV-9%Oe!cXfr)>II z$wNZ%GRggxA$Ouy^fpn1mBc%t6pWXCjGPbU{x z76Z)Ap~aI?;g=uZe8y0OzGs-xwP9WiqNJQD%I^oH ziNsKAv-nHtEMM39=RJ`vFPtDgaD?@@mwI4Bli<3Qy z)=wpmx<7a8uiw(m{He%UBYi0A6G;zKdV#P;ns9dz=Qz9NQy(Lp!G@)boZKz9f6;>- z1pUiwdiuMQ))&M}?xn$PuAl4-US49Se|ALm^j?X|(i>!sS_;b~#)N#wzqZUe5#E8{ z{iW@l6Uy5>BzR2^z5_O$`dsSwLH~ep;mMEBjikFD0%~>iS9X2tUWW`~jv79OY=1m+ z1g$S*m+v4RoumY|HU%oa3H1GVbRtzQc`EGni+Q5>radS4K~TKb{eTx8JC`#+3;+Uh zAG14>v}^=}>Ns*NeAyX{z_b4mzp=HFpWhRQ3Tz(4dajU@bhj3mozO$%M2=D+MlM;w z(F}nb6}<$im_f?2?!M8ZZpxp)O!-HSqs^3*m8jsoqH#rP z#Mjwc!P3Pf)W zL0R7(d(x9Ew*2I*PT=g|O|DQzM>GBVaWi7h0skN0MPz!H={(HyRH7hSs#T&eUina> zDA`b1vN%!h3!l$d{B=K2@Mz222fy#pdP^>!^T{8dZa4h43HdqcBp7lulx4#t>GSB1dc!QFg6-IJMVD|Z+7_nE5nAFe zogIy)hQn926%PGZEqJV{&^QcRpJkFU8{_G?Wig()l)YXBytX29_D+Ph*Bzw@$gMt? zZ!8D6=sB`&)*Kr#*dNv1Nh9^Ezh1C-%HsC6J7%pSLe}26`!Ji|4ggvk9IOR2iO^aMt&F_IH-|pkf)f%ZqD9Urg1{&Yq-h=kAsF535%_%e zRr_NNPAxXbr(Y@WgT?&BE+%Kn)&kzglvtbN0xmQT5VU6|jH-y9nJ(+U)Hxb3A1KPV zDlwom^)kVCG;=Rz4*aY7#U%=pV7c)_sj|#}l-Kcv7F^~Iuh_+~hz3pS)f(|3gBw3w z??ZS`d@o(Tp9Zr8g|jKj3bjePX?VWz0@!U*If9N^jP56Og`Y^TC&^jUG^DWb6ALBhpMY< zqTbQcRJW*_M#=@X>na~-oEeB1>$lpLMX$6QZ9eO%H9~k_a*TDuu;!B*Xo9(q)^4N{n}`F^`I#oen9=xR7ma zEai8B!?q?M4qubkU8RfLg&KZMm_U zA8F!pX^OUd;*wwkZg6W8AP%1wUQta;npiyTdE~FWHO+ie@!O82e0REGyQDq z4PU&e&SMcciOU4HFY9?VFYTS;hPck1RchXxtMl@X=KA4b{J^OMF!Fo|eax=>9v8M8 z(hETnaN&KfXc2A-|1zG6BmIZ(n!Z~r-g&9UyL$89PvuK-pYAf9kqrM2-_@H-V710P z#43*sP6d=XwoHJf@QKRpwu#~jLU-_!)@Yk=_@vFtzeUg04zWDOg2}Cy z?giUye06P{nzA&oWARf#M`wbB0R>k+(fZXCe|XjX!)E!-|MFdY_>NZvFY`eoC3l5n z-cRge+ZxpIb7)?148uNdm|q!}a5O&w{!^C2jKW@iD~`KVWD?ML+ZWmK)9z!7f~ww4 zA&A+LBN}Q<+3~7C$OceO=U2HGC!XBTzF`Dj>H?mwhHmd8)lDrNOWx)j(1>3ajgpy# z0FbcgFH&R6$H(J*zRTJCR!^2*o?)2;{%~8iEk@u8YzhFv8l#^kS1TPtwO%sAtL+w| z<;x#-9L~K~+pEu$sP@PSymz8J-5s*}vQlqATldO4xPqUsew`AcEVQaj^rS`a90)7m z)mF}*ll=GUNN^Y&IE?sYq8&bArOQWUm|0lmi3QDTS-OOS_(nc4MEcn+t~&Es1>30U zTj2BKm-6pe6qLU`tv_8FtZmX|lQ3vAI=NK5AV64NBz)sjPKGKr3tUu+NDCU`@CTU1 z7Htd!Sz-CC+l;?l^4J7~Pl=!8pE^7f<9_Y8%kXal&ieSodL6xmi+bF~*weW^$DYgY zlf$?h!ju$&8-!?9sRb|fg9a0FdltRDF5Jkxe??ObNELmY&WLc8CrW%|p+n9yS? zMoUt)fe9hO8C~gd`fP3|M!hq=8e+X!m`M|9#I>YRk(6gJFUop8*K1=NUF)vz9V@HC zahWqZ#X3l<_0+42OI^_g<2rHA@x9@eT|JyLDR&2lZbJDLGi=5_6d2@+8MbQ69*P(> z78!Ml@q<>`O`pFt5T3upD?B-O6+=)F0-9aM7{dAIYzfEiEWCsFPB&A1ZBs7a;<=KZ zdgYcbdMn{|yp~de{tfG{(}?g52HmuFQHx%7Cb2cWr76ZD>oEUmH6}B4UHqsz6Ze2S zO>}MoE)}h@-4o7_y`5kT@ma7`T-&;nrJ-G9X1vDy*+wnIK)0LSMvAH!r3K!0utfF> z7OaLAi8(rov(|_i`<|3Ig@`*Z#Tom4T$~lV*k}l&4@N424z5~>Rl~pv#Ua@QR0d3G zF$|Ri1PzK4jj0UWfX+93B9E@9>wLPoS5%iVh;`KNr$acQFB~aENQ>&T9_{nkc&?5m zt{jA+vsr(P>Esmka>W76qx7jw4gUf@0}D@eT? zqmHkF)eIf5@Mf&EqxzDC+@WodU<214D8TevhqLva>PF+mGZ9KT4r-5F|9ceKb$ep& ztl`zWWu4JFQsVNtVe;QX?!YV_SmHwAdXh{yiQ6D$%f7O!7Tjzu*<4;E|EYdkNnjzr zhWX#)TFbf}HD~>s{(N%-_O}y!K#9+6)f`xtXC9s<3}euN7#*gR-RtVM;PL=SBisB; zoBZNu0Jh0gmzQkY1k9N^xJ2lT(^B(FJgtkgecr8}(?|OJd@#itD#QhwYytMr&rpbz zt~18r7r?E_bShQIu;V(Ff4@^-*`&J4GNU_A-tyFoVQ)&R(N=r%FD7~d0HUZb9${h% z)IXRp)W+|G8Cfqrdi>zi%dnuV_VB^06VKWWtI{0$+Y7%)hKz+Nehd5a8O#H%6rO%- z$S>Em8=CySY?zU(JMn;Us4`S?-Z7^qTNK(&6Tr;unycTo9tn{4As&23wSQl!EVdt|QMusE6ZspF3&rI-8)`;zWTSuxzTlos6 zA-s^^PWg>kn+$hAxR)T`6|+aP`)Dgu?@OKzUsaUgKU4ocj#$gl_~DVZ?V}OEt{Z>+ zBcT4!L}%SjzsBD*$yw=Chls-_x{@**&h|u7h0lY%{x=|`voo<4aOGTiO`RWxZ=gwJ z1S078m1KY{9r&aV7-)$%Bl>yWX=>I$c*1r*Xb4=Z7r4pa|M{Hbf~awyH<}AZ72TUN zEC!F(@7vD@o#C&B)(4E$&o5^}&V@qf`5%3D`JfO!HZZN834WVaFETxqb*o40 zY<47eiwm4kSNX}*+u~xLt7HD#{bq;*Sn@TxR>9zIK*H}D>QY_jcsr&qSr5~AOejmw zxHzEMBK6&93Z_n;G0?E*3M8*F7i+aF-XPz0Ygq<1S)S7g8`Q$S1qe3zoJ=G?)ETR` zL>U*io15#{nm6e-cNj{ViZq9c6t@F)w3qxWbrgWYqO2ndK*6T-x*h9w=%~J&cJT$S zu3DtcepBN`wti!y!J_pHk)G12tB z{7++NNpQvm6}3ofomNmc0L@t?yXl;HqGh#vga(fmh+l8pZU@fLI?4b)aQHQOBEFJq z$N?NTsGYW1H&Fm;m+q$ccapInK}5~@{l326^Ue_F)Y<_ zZD9<9b#wqsJ%O~I2{sR1M%@=`#0jL_i*`_qn!hUV;(pE-+?T=x3-54cwdW&btuMWn zvL;+J`Lm`Ya?CpCFm^9~s>^ZUw%aa&FaC%=TUi^lX0DoeL6;q5yf?_usolR&3Zfi! z8$B9y_hR_I0wjlY>gQb}96-3pH0XGD^_(ap=;kp{VKu1!aI^u(q^UK9Xq^&x%z*_? z`8J8canWVbaq|%Uhfhw=)&!eyUdFQYyiB$0u7{NVSXgDZU9M2#5>0m>E-eqOI@8a7*YwDQ_^_eT@Zi-(_H3(%W zjpl*pf=~VGj@9162YMW=Y;=UXiV8h0eWh16s^NV+)u`$~4}xnTC>E zf~nCSzxlnx)u%D1Kj3s{YMyh++UNo_!L%~)ckc9TM$la&<}uNZX{N*$viR9OgZSW< zjT^^49_lXmO55HfWQEW}R!bncO> zXsZ|?UsKCq&DR_C&8LCa{?wLl6=e<(J>r~Mxr|x z{v2aw3J2#<>jmNisI)Y-a3uIGxKC2v4)&OS_qjo-q#5gd4qFbV)TcQw$e{9lxbj_6 z={QD70w!ax1#Wu}eldzP)dhQ7dM{Js(at2ReCcPp?8V0z^Bf|T(^NOKcTc~OKgmV8uT_wl*VbGb+PNE6)84zV+3KmXVH)qUV**=p~h%`mf7E@%pbJiN67f=DAGI!b@n z=4!ta-=}HNHZ*E*CEB*xRia0tK zyrz4lG}KAG=zdpT+ooE{XziH!3sj5e6mK(=@G7qs&&1NWG6*Ab&>irE+42AyfK1{x8%(8gwvX&I)|vFie!nAHQ3>s*Hzvu;#V6thET(u;M=S&EH;HF7wn zFe$U{!xpHl300P=x7jsfBs8zj*NVqu>6Hv#cg#$uP(#c_7_K7+^R@ucDdKnvbtqY( zX__YZ@d^nM(>5nlh1|rn8$B~aX&4eL;~YuNeVS-|afN_~!f<&4haDR#hqPGu@MOo? zGB&nCK=FJZvt$sJwluvL=4<;efqq#IU}tY%e+5m6PTBvLlcTaAy_?rjff2efqojAD z@cGU~Yyz8Mj$|IpjHUYQ6&W*oYgr^Tm-R|%DO^dWU8u|OPBq&*!%xXv{8acuGZ|4L zP5+x?N*^y-`4_}D*sK+mHi**nt5c)!WlqOnVCd*sD+OPVmgo!<4MLr9c|oiAcq=Gt zixx7eE5^(qpz6a8T7Da5Nx%P4sTBmVS_#VBWu$Sgwan(4#A|nb6JLAM`d5Tgt2!}@ z@SrB+MJohc7R;o^sp-a171y)(S*B6bWQdapE4EEq^i+N&A95l7>G8yk;hSIp0>|Ta ziT(36fXXR)A(q6SD1r@R%HH62nCVF7I$Jg~J+|NWU6#l0`YrXj_PA?FR;k>I1Kmi5 z?P)mSq|}5n#3wq}PX}~H_dOAX#1m|UbU{C(iC`0~98URJu|yjLomkJ4|HJ9Cn<^1* zWQi#?`?TtEBkl@Ra2c*L6(4md@{X$`vWG+4G64T2ry&LEO_+){o!&Y*G(KDlV1?yt z)(kMG)7l@VlcK5PE^n78U)rn;7*V{m(y|Qb*_z&==-At}+toxui zm!UWjJ%9w-s#zDL^tD4Y7r2REetTO1vq>sQYg=u}bkF}vNq39{1TD6PCj!{{V)B#n zMl==*MLlSPHHB}EVV~62kjkzc@scsMN3S$6cQ4u~sr~hkI=$2YkXmN|@P>#`KeK3y z-uhMFx}rI7&e2|cpWp$*L7<+>h=`BR9rF6yW#e9MhZZ$J{@VA}tnAS**uNyW@2Lj6 zq$6)Pu0BR|nzP>j_CYJDb7c}N!m*DxrlCZ++Z&j!SNwO!*2XFYV7efSVTguK-n6gw zG|T9xtJ7YeybCC{R?L74I%?mPdVAJ&t>oiGz_C{!D}-g%%3RuIN3JwoSR?MuBDGRR zHGxN-m}l&d?11>RO_Ra<2Y;{!>n8Sa<4Xj_-GduYUSUDeCFa95z1fzB`34>#7WW&Vk?3r zJyc%IVMgp!Bkwx$4Ocby(%T$?VDe#T>1OYt(S1#GlAgxBV0jBOpc$H<#0{X|6*!Uk!dS7D)82I&!!t=AQLjx~A%$rT9-M9(< zJA`fcfb)-1Gl6|*D%hbhELE2K)V0r6)GQ3uwF$cD%Ak%fp1>J|g3!O+f=6zbjQu`) zM3`|}X7OZUl!@rE^xB>m$<=sT>E5kzy6?UkE9rK>1JrMQxDRJh)W6I<`0{M_3pIDg)qbWM_7UJvMXTlI@Ob~sahT~M zpJk;^IV;8R*@G)O(X@A@fa%@N_UR3Q8B2!6Oi&=cs7`Q<#X?rMb zluZ2#Ma@U`!{Woq%)@qCJ}l8$7n{^1BIH2Kp)U?g-$+W|+q?s+!!^P|IMltI364%1 z&~qKVw5p*4>Bugs+Zl3zT|Jk+(z7fMSlKdPNnoyg&+{zd1zomO-dI`Kaj+eqV<`O# zKd90z#7-f@G}PK=;nF{TuBxu?q^-*r(9;yx555!Dz=~+^Ill@-p*YCtHYA^~eA-8O|i|KS1R1!2JnG!#0QKjWL7Kql|xDePn@cw`E`w*OvF)c|C; z1ciMU&s*-3lNIIYY)wh`P&K@|?6rgrS2W}nB z{Lwr81AtZ8HSK^igl$c|tOK3Quu|BY`qNl@-&In<`r$f}|4$m$_}17_6KEy+^S@j$F0#hen>|A-I!dA|t4)Q{!e(t^nBrwqo{t4^c1b2jB7u zs18H)S;Hd#L-Y@Sq5DnhD;(LXLv4HGI%q;)EWh+}UE_GRN|2v3hX|Ln6b{q?m>8oZHKC+8r zL`^u=?r!<^bhK?no;S$|#JSqoCU9yuZY>{t4_KO-Pgq41I3V4bVrT-c?7^a+wt}vb z`9Fj}=M1^CLQu0h?IH2NY6aX!$E({Zmu97zS5wC(;m@Fg?TU0}!tu3S^60~=IjV+| zj$K?BEQ=`*n=!nttyY}&gjS&3VatF~Q%ZT~ac#8EyqWpch+|!W5aogLhQel+y@B z_YR(3+w^Pn3M$+R)&67bPyW+Z#(C&TYA;LRynlIFDqmaaxcNYDq)9E8%h=63=p58- z81;Qw>vC`q1=o#Ic--jx5-Q*qrqR|oPWBJyaPGu}?fI!JJ1XAi)HN0jth8@_#BG}@DFTyLz-px!UGGJ@NTZ0xjK?VPvsPM_5)B3j|?s@kAO^EC%@<6Uow7O+}&WgpgB5h`$k=b ze;d}Td&Wss>^F%STIfmEs`$6OSQp~YUhY6-uXULJOOVnJEi`D_T zmO*0I`waPV|NOYaH`H<6idG#2>NpoX4=lK0_gqoUrrrluq(=H>wgMB4KPRdqF6?cq zWukAf;s=n8JJjQM(Y;9#$(199(nGK2oIBBeQSIRg-46`&-66x>-v>{|UYi=~)=j5f zbkkxsJe~~~F>!CwmQ1?Xs2CLJrjZen9JXM={ytw_XSFGZ%j?0Rm==_a0UpDKwLDv4 zsGrw9JkJ|9&LWlEKlJG8glO7r- zt?Hvkq8u3ZCJ)rOrazi*BYL^MLzaa4wp6nezXUTFPAyC~lS}E45$EAEtbjc4r-zd~ zUv|LzP@e8Zap=aIglnsWM-e7cMdl}qtgaW`n~uHL31^-9+GD1&feGIL z7<-(~ZGrVZmiY%CS+l#46z2WC8e_y^ZyNru9U*$p_;k8@?55hT?*!jl>Ga^Wpe~$^ z!X?Z-flx(cr%i6cEU--_g$L@hyq&&`G|8gvZarZQRw;7#(2m)0-TR;p%fQW~XcRz` zVJ3R@$nR2Y+w~4wdWRfx+;p`13F$N)-@P(?+6vYo=XosDm89#y4ikSnk~T5}>?Pp3 z<&g4KB`79O{g}@0uDC^O9FoZ_VG49?5~IHr{{qSTbKzI*u1|fRNAkoL4=b#+Qj@B} zy<+f}f1L4SR&1L)vuXGQPDsIrZ+;Bw=niW(fl$8Na`bi?5N>BAsw_Nj)Y$M(b| zJ|IEdf5w*(0w_ca!%jE#l;2zQ*xh;!9h`;q?ZfJj_U$+`BUomkPG#QKq_CDPID#bSM ztVhN@WE;Z%mbGJyx~b8B7t*pB(A%F7N{Y|>AZEMWEZK4Iyy?6pt!LMEryZPX79Xk< zb+8^X^}nzIKa^Z8^(${T`|~AP4YIWdzxy?nhkuXm*mc=RJQKf5W}p z(0@Fvy6VpNaOb`h1PtSe2Fy&n1&RDyLc!|NWL+71)iMy1_3vFaat(o8gJ7gI3wrjG0WwJI> z;X`Z~+yPmYlYc&wDR4hnnbL_jOcsa~I+DX`jUTo@9iy`)GNv-Esj-OxN4+e z-sd1?eO2eXs^yH)AN}M@l}DXz9^4qZb8F(1QoHwA{XBt4`RQQ6K8CZ6lI@{7kq^%! zpGG}|Y%n}Eg63oe0#uatjWGXv`X)3<$K$T6GJH>ZhO zT(C7et6TZ$EmMF}=`L{Nf^*F0SC=nc=Zwz$)xWE+<1s&$kH?Xd3ImwD$Pb2jG@*&j zzE3V+zLpPw?y5=Eb47l&ni* zCb=IAvTomZ8|{6`cT1i#sXQSmmMEqktOfE*gE&0Z4UkM8&rh5eKm6gi?}yiYg%``$ zZNIJ`m;EJmcT`WW%H!*=uS2LaXEyBH|AVIywN+NBh!3uQUSJe(z6(Fk!;RMl3t zD$$sfk-KXSH!jxCmbM6L46wpm&WTBB%~YGlQ`5P=v<@rm4IyjcBf%PFV-0?9N{q6P zKJaJ|%$|t9hB<~h%=j3NO${-K|A&-rdhxExHXoI%U-oUJs_S9mXOBZmWA{QTZ(QBkVr?VGK>Y`=aLPJ@frf*9Tu;{BKsSw%a|qD{xFiLaFb$+CevE z31g!d>yNL0YGI&FUhZtKFMfKJZ}RHj-<>~SKR?fp1EDB177U-kpd|?&-tDF(SL{>l zH&h{F`$?$NLHmujoHGU^gtzHvJv-#2jGg2Sig^6L2i-pZe|=alf{^vU`Y_{v2tRi9 zK1hEW57}D5CY@gY6hvjVgA8kyiOHEZ^3_wh9^pOy*G?x21Qh$^o%GFf`+xedIYuVL zrTLU`*ip%0Q~Zj#w4GeVG3CgUmj!}2Nhq73iZp!ILVUnRPf%r^vEa9S84C|u`NUsW zk()(H8-cfOBnk%qUwzoxp=W3RuRhGj{(DV&{p!`T_d_lO2iHDZ`5%4QKS8CM$0*y- zhE9BT=tJ<7U}$5%u~1mk5W`{dT7B>7-R!W(tE7|G@g_?R)yL1{PR(Pah_JCg*3d zkX2tq7oO4gvqLKX`II4?OEB#f=F+)_im#C8pYGo@_%H0p8HUQp^{e7l({F88qRIvc z=u=m_HDzVK_6UbEE#VFZq())1VXaf zOuMX-VSX$Mf|4hC2P!Seg$O30m6%k5v3j0Imb39gcBiaehPQxyyP3*|IvvBoUO|8D zQo!jDri9&R2JjaA(G|`5!*ugqnxyL3Yn>XbrWB6-@iM4Ox9uI?P7`i?t1aaY!8%VP zqDwr6+jT6n2Gw)4EX94{zT}Q3^Bbre|OT z+=_wZ&ekM+N{6fpDG8m%6)}s8lry3N4#x8-sSF%f$e-DZGjLKnB%hrf^1c+U$bPZB zJbS(e=c{>B!2V^EBPnU8>PT1;+GYxj+wPt=+=#JH-NLdX?<-mO>D@C|(kgVLcVQ#- z3MkQjm#-L7bWKhwM--dm8lMMR=qt9#F7f1cNOD51AA8+8g^Txn1DcGR=0$MNUweUT zV`%6J+j&c87r%QhjohstWeIG|W*`5=h3oIh(E9yLzDJaY5V}fIoih*mTsO^BnUYaC zj6Pm-@~xS(_UlW1wTOxPR6LsVbQR%pjM#A2ednTe#6L&*jbc`?j?anGXW>da*p}Qp$e$`7~OdA-UJdeR0-dS`lYFtK`5^kl#HxYI44tbIJep z2?yKrBab8R+>h5+cX62-n?OKtMKT%omBQkNSLW+a%Gh6t@sKlI_PtZ5a5;n%S(31D zKE2ZWfN%*BES+b0zukP#LVEqA(e-vXkDm_mX?df@%{!z$#u!Rdy@dz?PTBj8M{BG1ae>KOWs2rqkpC4;l;L>7Y=sFx_k#3atoBRw%TR? z5HiheSG_Ki$S;0fI2RYlRP2pZ$=5;%xs2CLMCAD11z28|b|>a}9QG@7Ib?S5%0n2m+3Xxcg!1TFKLD~ zZpoKh;vmSkZ%%U#>LzVfMnmNembH23opbH(Dm-G2wX_>tcZF~T^N1#qdOo>>DK9q& z0^Z(wY#FW-&`7c?=fK06zgN><#yGX>^8UjB1^_*g`a?n72C=ul0Rm{|Z3flT8WO*i ztf+S=gLy6+9kZ(&C1;@m7DmxvN5G>($3L20y9Xk)do;rXZ{LspzS;ebuG`>Ra=4*p z|LL4oLX^_JzWe2mfh(`$Mo-~>MDgFHs0^6n6omanCa`!}OlvbS7Jzjpp$cV~2q{(@ zrVn$2n1R3(rQl$;49uVLgP>^A$}*VHL~C<}$EJ7z$8xDW`W6pRQ5!5GSxho;Ue z!NE$;Qu3rtVx_lH0!iK*Z79CV0I+GYa4A zxl0hzSw+t|I;+^~$r`d*X?}F35~&sM4>&Hl!a7%rcp6~dNJJ6q#YVH4$ebowZ<{0FbNvaq zZ!krcp-xzQ6a4_)N7&@E={<(oExIVqvI4hCAbA5cDfYrv8(Frr9Ft`UJDi-RaqTmY z*V^&3A({2Y3#Ni-iaHgh=Dw!y-L+n;{U_Mn)I?E zUZ7u(sTadT)3*R$LU&uyc+y!#f;V2D6vsHhQ~Tudn+LyU$wGB-Av(^Go%G!cbI05& z9UK=B>QlZUz%kVqk*{ASTt zKQKxp%&Qsz*EYa&Y_ostSX~L2J{_V{b<(*3U_wM;C(-cw*aj%glK{J-z+h-${C`I= z1!++`Ph!{TXOFYcWlaEzGT3nN#J_28Oq|==tM6qNGDC&Z; zvOVCO)}ZJQKiFv|#DpK?NkT<^5HrMxj?Xdexl+7{@D&=wo8<6^zDKJ|vm6Y!JLU%V zh7>{0tLx@C4B7?7ET7POOBR?K1CsdR%KZh&x zLzz%DzRpV_92M<~Wo~tVx0v*?2q^i34ZI$6^=hhqRhA_;Rl5RXz>U5hfVSd*S7?sr zOc0t1BP*di_s~?1FntUR?gG&#yYc|%M5?VONvMPOuqcWdQWI=n|39=k13;X7Gjx;5 z0Qpm44-~AB2(|&ds!TOa10CG< z4EPB7*AAYe1LT!#7*>AvJm~#yv>gxSrb=!S5i{gmHev@F*8@~A8d?O{3=c-`WC-8G zlrDt(Gyp6yVoxpvpWn)Hl}Op9F|MJhHhYjveID$)3za1hM5e+7TOmT-5W#53M3AGw z9+8d}-F6OcH4G+WvS8X>CHbh-&slMU0&$I$cDVcrB#DR_JsTwFl1>Y5<#1ITvYmli zV!X2gq{;l`Qg5{80@wh9!nA^aSV{BQg(^(C5Y}xE;8&G)C*`D#IS;B2@YVV4AvT4U zZvyNGiM?2N3HlD*7z|iu7QkSqHZY>o9E>@Gl;X((&DGznGKK6s!LX$a3r}8`3zUlr zy1=9F+JqhpXX~RpN#!Khk`=!H&k+c05ViS>s?Vm7IpAdg+A`~6QFke*A(Nymeohr^ z!2$f^l)I74j~16@rQM|xz%V+bu08tdUCiz%_~X-Z-wOLDBc9l&Vg(+>7xsz}1`S0@ zr*E)h)5gH+fLx9T|S#kJAsOUJnrzGst34HIf+gGRmq_)yNmA!R6dI7)^NMY?!R&q;t3PPm4Abg~h#DA+i?_B4zA2|}U4{xI)YTl?ieBE%k+UJZiaZh6fy zA#WZr8E(v{R6d|m(r=$P%uop{#0NYorL67Gof34J$Elfej3Yf9F$79n1pKOcNC7OH#_l6*%7mQ{N2=hZsInUr7k4Z;okZ4Y;+G(Q#jD*SG20c0=oKEwlb^tF7`&8;=!nn+Dl;F(yt@>o*%4jPajv1` z{LhZx*rvl#7#_9BDg?u$$At#og3(}(YT4u{PnQ;~ix%_hV&d5)==%V4gjEbm<*^_O zWXwsQvNS&~eVY;)R;e3){mF~4+f8e8i6*18cr}m2PtD-XP9ZwF^}ptvQtt<)oo5+4 z0G9(N3^=jIb2fWaSowQd-h*Hssk-XFL`#nAli8S(#oa`q9Od6SEwBh^CBl|;&sCe- z^8Hs!tHJZj*4I1LGDBQiOmurn{yU9&4cKGBY7OpvJJ4&^DeZ>c8-(oT`NX2AylFK| zp|wF_(aXs}@G=Li!U;@%{DO1`rDnDg(_YbrCcBndL6i*C#>HtQQ7vhyW!B% zJ0V30A`&EJ-|kHZnPI}{6_?fqFU=4nO1Hq7K>*9a4l_C^_9xhrckg@y1DX@sIL8~F z2!z0>664#AzcgP5d$ZkgnhGt7hmk`Vv5-<~~4NW7|u(XMCA zu!@`g-c+T$5du7K3xO0!p1uI(trwPQ4@r{@&as57-v!rS=sfjzM1>e$G9P;8 zE%@yN>9I2OxSis{oAPM_%k^+YSRy zu>QOBYI!`M7fr6*cYNo2et=54iRo)*Z@Tu3PpgZ5+D);Fo_71+y793 z6fYD7G^>X)j`dINBZmGagG2^FN}jj;x}Yv}umk|8N(3Ipz$Ez%%DnUyYVEr(Hq$ zqgT@Do^EbZK{qz&x4+1E{{4o!9N=ioxjapK70=K*Df`&Rj&nTXEIR)4lMFws-I%YM zl3ViMZsa5rO`7MkZ%a)!t&n!>wFkjgm?B;%OuPPS6-4Cg3&1A>2vHGby`DpVnE3p< z0mP9?-gg;2m}Z25Thd@UekaU}%j)|X3hVJ z*gng+7lpjAhdfFAA=E$drcqR*6kef;0lL2#WtD(#g14hrR=3^T&1ktYiD+5;lu#*1 ziVZqL2Oc9rRhd8peHSP~xP|9VNzj2X_N8Uov<(UM$67}l{9#Cxs@Y}Fc&RYe?k5+Iw}-)?-SUrK3(jCt=WOMEaQbE0SlL154d6Q%k|B9 zD82D_9%R6^dcSWsDR@xsvp3)G<#~-s#+)_n-iBLZ-S`YG9`ugR?M79Y$x)BhCk{yt z#g9?u`)_%<)h|XqtY<`QFM?aq>b$+zueKg?bFli(2Aj3M=NZC@2k9@r%z3^)w$+Ym z`{tX>_o=Er@fq9*; zFx|P&G}Cd`IDY1F)2GPe@>z#gqPFUf`F66QLfllLYv*q0;e$-qw#~iC6By2RjLMOc zu}R@uw2kZk{+M!T2BJV5v@q zqKrNT@!26J=%RPW0%7&s>rcd$GWbo2j*G&Q&mNrVx^e1H^vdTKy9_wv#a5;$f>Nfe z`Qt``sKi{RF9XFwDheqf9Q6k>^1)Lce(cur&6Lu>8$v0%t$@E;n5i_S5@H)v3RMhe ziBd3mLSkBj744!)FNDLrM0T~-VfdaBzsq`|iq_j^O zJTYiW@Nfair(T9P?hV_Eh`?{)-B;)F3JhIJ@4ceXBmsI6LuVe4KJhULuBxgvB^ckW zbvN^7EisT4&&#A#YB@h!y`d0SKQAcj+NM&5nv@2~?`rOmK6A>4Qq}}jFUGvdxs=8? zO}mYOs#ViFPI5CEZ(XiQ$6LNPP19+gOiz7;B1~neCAxDm%cGft>5A7SdvQ&XNVr+; zYQZW%!;i+G;o9(|qq5{!?%fO}_Lk{!rMTd>9GUx9qGTBdf46!l<>~rl>;VRXc1UPHBaYYeF}G}CkUPQPfEN>!21!Rosn{RQc=IVz%M zO5$u*X6;K4PIW`CzS@IF<4H*f#pnDAk0)0=K_yX-H}6Jgh?pbKUp`S=Gk2q9p1CjK6EFFx zMBwv?F4=U$$l*>~Q^cD?Zuv%=JP{v|;6-Co1c8m2fAO%thlYRgOME^_6xnQrlSM&% z@KOxBGdvhXxS6XrYBjh&c{KHW7fT#T=t>pJC0fD21l?9QNx8a+n@zHBBJRua9VNcX zq6mSwl~)>XHqxjELF%fNN2cHzE(en`z=@o%+290HPtMA#&B;IVJF!eu2PW-b!z{tv zeH^v(Q{#^jCwO|0r6+jnn)QWL0e{VOJx1}odQnOyLb9Rjt)fdUGJqd#(mi}N&M8g9 z-VeT7d4~4#iRRUf9C!dAa&#JtbAZL`4oA znIa64p9H9}D)fGLD&;OG3moX|r|H*=+uP zN;`fV06))~f=(m4#7YQxN_-yGo^z{zuHj__k(a!`u?rKI1qv2pWtqLWS@o={ zULJB!#+bx<6|Iw8ADKcV2epA~o}l-H?iqxlEYK<|AAZCeZ?F3X^UO~z2g5q;ICApT zp#vz`Iv|7`l-}^dPL{LnO z!=&%A%Kk9T%uqfUYuUlJqAvwx^3goJ3Ii}4M$f=*i+*PlAW7bmNg(KLqfU3p1OK>( z%;dv*>FUP<9HrnUJl1K(*x8{gu%l*ejuHuwUI$|`qAqX{meF_d{RTT^tPLjG!L(Pl z;JQheE-3n2jA+2G*A_~*7eyRMQ*Cqxn5mpP8~IrppJJQ=`Vtmgs94q3n)d4n13i@= zC0hmOE!aAbEMhVt7tcbDXJEB+F$^6;Ic@gr(*rw&bf!XEVo$pIe==d(NtFoGhM1H$ z86F+oyN{Co)$7_;>w+_M#;tcKo5oscUy?~F?T)Eqm|L+v;+qrmCa>nkFB?YPl8`aH zV2(rfeZy(0a{(s&1_K60?IM>!6UZ=NzI*iYLhZ%RGCqXkOfq;jNx0}1w4`gtke(+n zhB95F=NbK&glK$C#%SuULF zy0miPxU?*#>zJu7mtN+J0!wnb9NqFH#7Qi{iI~lS^u%?A&0l*S6dk|x{Eq|Hy|H{Q zU|02^5JU+>0A{AGh`)&cGVcv|^E4S}FKH?SGI5#|{qnZUw+Q1zOL;0${j(tc`M3zF zM;8R63qh6K&X9qGsO~V~7eirsoASpur z7&bR17|l@DPA58}HHjd!iuvF3)k9|ie{F%t=9YLBjE*y=dC`mzw0D{%8pP_CVr}rR z2vGn>)KxEH@Ddo5W>A6n7JHA}+9SZVQ8&^iS^ZZdt*Y78^zFGE518!@l&;}MfZszj>+tAlZI+P_{z*oj1QxO4@L|8~wnL2p^PZR+}on9w*bmvSw zYl#F!&_Rm^cbm_nq?-5sUs_@j;9HUUiZK{jW`UjQ4WFna&^L!IzC(Sq0nsNRp z<9%MqJ1B)|bEvP~5U7P6i|0e7aqFdJn0=EcmLOC@k+K;Jv6 zg^1(pSMT4z6yUG4Eq@hT;|+UW_1V5i$cLTC-_+eFQh*)q?t49B7a7{y&~YanoNfcQ zfA}ryp5$Aanth-9F`DPw(UiAnb;g^QRc{-200Q;qGHI+Z{CdS z^iPu=q|~~`{QBpj`sY*n7yKGN+Vy|$Bg?XxV(;GyVpxKJe%@}1t*AWi{KNiLoq@He z(%GW^Uw#7{Q3IO^4&TWG+bPD9-435cSt~pJy!RQc4KF7-0|2o>;FW#9QWyhZi$RFX zAXJ95tvCp`*8(*R2y&=@CkCRY0E$7ft3oKmuR-)BD%gJzd*Ge$k#{0u`{B@cVxRBc z7D|Rvz+aya@^k>Ynabj?-{I^Xuomy|zuxUJOd&3gG6$S`BHl?x0iTvRB9{mDKWdjx z9a4Es#_tj- z&BJdjAHBC-Rx-1HZ$JCq;g@r#yR)6x$Vkk4%IvUNPM@R8h>QKez|MPyTk42=?l9GV z#N$P}(-9YIF+%ozXU|_FXI}5KzcS)|;De8tlLYvK-;sTWMlZc&h7oOVvYkJiJu;N} z@I%P!51}I;!e&2&|N3waIvSE|BP~A~d1Umw#b}hv=mr1L=nJD4Q%7U2jKPOkon2Gu`BTi|WV>Z8; zMcJh^zui5*Gcn%_H6J4G&h0}N4(JvRZ!a84EgWku{CT!;V!N>aZ*K48s}x}dkeaGk%5q}8I&!6wFuw{3-P|$Qy&66f88oNa=u6{B8NXC>!#%ls|y;WbpqlOX-{@sy1p<$XNOZ^34xMf7Cs7J(^1M!jXp zQyUh&WzQ)qG2Rt5=@oUN){2JVil*I)mhXyo#EQLHP zO{;57F5T6afch+z;>8DswwIJEswpc*5v#^2tIyHJt0wiUFM3u@QP#SsyPB(> zjadc}l#f%E^|jjM=||{z?OMOGt&y%+q^xbfvNfw;bM9GlnOu9dw&r@e#=Ex4n!V=1 zJMSPJYUR2%DQ2gyWyf9sTuYqy_FXfIvGc6A@2^~Qn_LfBTYr7Jj)rYu))w8f7lWiX zdZp0z-YM&Vw%Etn%f7`x1-rF3=Eh9?ktFgPaoMxM^c(S~8}DG73G|zZ($=B8HgB~y zdnbTa#SRhiHomU*?8K*-C)pb*hK3Zno0)c|@w}Var<*yjtz7yoP3g`5CN~RU1%-8+ zKaJNT=btj`1DF$>5V>3B#anz_t3_1~g*UJW#nNUTY`cbjyOwvmMs&+_!>P*9sgn0? z@#&0$7?J}JO3jFcxno(xFxH67CBu)i1D}0`u**wzdf6 zwWtYDQ}K3l+xF5=XS~nOM{}1fdY3NP?kN5481Js2;m)w$W{O(#4N9C z(AqAcXK!b6ZUx1%KbYJ)jF)Ft!SESl(d1^>rKfJ(8^3MWw$Iwe&)3{6iubRI56Bu0$k&(t z#UEIl?iaxhd<_6JDga1A7}H7Q?|Ab=Z#THbGm?da2iXUA?66EFhs@O;6upP6zdZ6L z4;YMA5e=J2BR~@jMB{(~EsW4%lCF!!GweJb`gpLPEi*103N{=GjqIb)sYmxp>j)J>e0_Cg!=$(1rnLN^LUlc8I zkd=|w}CVQ5C+t+XeL;jVm-z4;k@7$4ghNxwvGFtMEZ1Y=b4Ev-FCz%5%F zz%_4CR3tA+*n#*h-du+F=YJeaPK6LBFNl@~77kBkKv1B^x3=xIHXwt$&#|88KiNMf zIj%0mWvyOoHWGH8NuURb^`RUis__qs9t=I)SW*bR1B*O)kH&haq$#Zd{Q;3qM(1z* zmYnU+Ad|iUYrY1$CoDDokY0b!_Ap}$j9Q_OkJ~su+8^S3CX{^^d}nD!H2|f2%S;0E zlGqD3%ZPl94q);_`QhO71mLtQQ^eUt&K*Z3_5hanb8l&%NFNXsciv(S;P#NmFay07 z9`lv%zJsGLROl}9>{m^VR^Dq{e}G$OsUD=CS*4c*r2Vp{Zwv^w1ksmPa@WY_rv7bW zcgXt{h!nlFi?C^b;vVM~ShGRJpNNNvg&NCvo3~!lw+E@LU22?Oa>M?zBm4_ZF=FRd zX60}W={OHdEGotKp+x|SKIg%DFul$>``Q)zbs2j2*KCfi|0MBhct4n9_)q5k;?l>E zaf^WDJOAePtt2+B=-uJ6gBL#;LLQujG#g#(`ki+#%(w8_0VDD?Bxtyw98kn8xDw%| zuw1NHBwc3RWmomj3cu?ekpQ9B!QAn|>~`3PoN(@`P^NvWp))Hg=Xl?m(42t_?iwMc zQn&-ArXw8M778P;ckT!^Rq|8p!7eYl=6~acKd&h@dK?kwtBtcVHLfyMdIKdjDf<)6uu2E5IsoUB0&O+O3A_yVuFSghbf#lY6(d%jLiDy@j7Y>kE9Z0!j zGh7iMxjvkI&nR1FWbPe%kPoAHzKz@F4{L81qPTnK8!WosZTZ@-2M1!ao{ffy1j`;S z^}OSLToo*Lyf!Q~s4pBMf3h`Mw*GyvK=e7=QcoiKgE%r+&-2Al?Wh%ImikD7eq7SH zdKSb@PTwaB`bqXrg#2pZn94}orS^@&DHC4h$)7oU4D}3MmpbFwZ+i>{G|@)Sg)-)N zOjfwj1|v(M<)b0Ta%oTd1R63GE=R;OM*O!NWuqZyK=)G94L;$;{zh8U=L6ah*QG`) zkJ~`!$bvk76~2G0##EI2)Zls12cuyhBVTT_Uqz`Fq0bp@MiQSFr`yZ(O*>Q_-qv!w zm1w8;M&>Tzv1{X)JJ_uaD1*#EgP2Qm!)S;mrFri(8H)2`B?RYExK;g&{8plGql#dy zk^ds;Qtj^yLlW7#BYB6qfMch_BVGrG}Dlf8bLirh(CL4e7)%q^uM(_KE5v_sb;N zv*@4UPgQj3wm}qe$9dE+|6g5-i25&dDMS!!4Gv6eT7w5VH`x}DOU{Z}*r1qeyJ*pF z#k`u8t#XMDwCVI8fugfD9a+s-7tH5&sCMmu(3jcIgLfXJly*w~oLwzg)o@xZTzuR6 zAw;o;YWvY1J~9co79}*Hu5@78MK4NC9PbLbMs>n}!KbdH zh@gtPBpDX%V94!``8i4A3O^s+ z{AjG^dCh%VLx+K<`4S(>A!g(!G~GtS4%>TW_+Dj?x4Y ze?}H2=Zz`++r=l%E^IlE_N3wZ^QW40g(G^hVvlq5j;99mmqro z>tEH|VcFw1{n<=a&#dnjFwgO8PyEmom69xsNwSrApj(@KpEuQWY1PG4Ut&J<;my5{ zz$0g;pV1;u3*{?^C2yawWt-_HX{AL{cs^r4!HVnHlXd-D47EuDlv zyNQ}7ihWAY6GlQ#CHVkfb!qojAbdYB-A(Y z#Cqj<*+sIagMq0;Baj7+*BYjZsfKgp(aW_zk9V&VVHHkzrg?{JA~g8tZKaz|!?YS1 zht@*)A|bNzb7^}JaQ9PMhKXm8m?8Zkz(NrKr@dSkEMOIJRHE8?z|n`9LIIy;6@L0M zOoBMBOvYsyQ0%3osW8V^K^WJd)`M z{_XOi%L7>+0L7m1-1(F4enbB9+$VY31kWXvIEGC)d6xSC~Jt z%g_5RGNtiYfa~)|w)O{u&%ngl0!-Z9Ud2$m_l@EP@#O-y70EgP;--{J=2o~^MgUUx zK1AwFqE{1rh=+L04m++4pB#Q^_Op3~qy9=?K7b*CRj0_nmD1XmE9Kd#W< z6zkWnBSSaxVFc0l0{$?l6JF@w*Px_Ewvs!k5~b2zkOlukwo7Q*6m8d5Iw`mKM_QtH zI%J}>W8A*DGuF%OEh^if!vhe|d(X&*2|~3u zNT(GQSzb%OC9+(Pa?6rNaFIrWQ|Ngvb;LLlv3SeCicZgvS}pIE(m;ch6+_@6LnvqR zfhE24yIUrUO!-zs<{vCf60|fCi!2>htOJ}zahxpW@l54bsI5g*8wLF|XJ_Lgnw4yc zgT@*$xyU|AfjU~`lCb6m#jta66+o;x4XkgQaFHon@ucK&ds_1aF6H*&zBeZEiVpFZ zFA3yZ3x591nY82+wWPzp#5b@c{DaFjd`YO@TEI0=@W}ek<&vPCwW#2L(6ELG^RhS> zx7}<$KUo3K-qIa4o4dN)TD8`aX!!x59%~7wW$EHYhj5^ziA`GC(%mE*xs2rx|JlfL zMes+cihC?8blC9KcPa+kh?N%zDKE=yEh`@td?;L2a+>@ej#sQxS7csM-C9(fTrL0< zrpDRaQ+uhQ%R@B2vQa04DbVn!Ijv|JEapdJH76+;^j36|UfwsL)%g*}h!$qn{`~Sm zGa>&3!joTU9aVULdgaj;H*$!l(>+|FqVT~@zbJx`Pra%q`tZ@xO9R28J6nZMB*>mz z7wYS-{x{6>pIXt=2vP&lRYT9)x210z21Y-lx&183_BmOGamUN{vQ?AMwlA7jUv$`- z4y>AXkdos%&6aGs%ES@ z=JVQqSbI`q=iI#J++pW3u;%i^?$z|#t0g;E6jb)6;^B6=<_5BNCtG)?vG-tJ_u#Vk z6kPX|u=kQ*_foU>)?N2Du=g=p_p!G3bz1lJwD${K_X{oYh>vwmvJc2u56HIu!V_IJ_}&cs*cG-Lf9x=@7|l6Fj{BCT1fl z$>AohBRbz9rhFsjvqNn2My#GgMBql;4~Mr$oKYPP@mm}5M-J~UH{O996Ua6btT&V$ zO5buhCJAnmFYzbJZ@yP^OxE2@HgNo4vWXtpNOIat@pPP$+WZjem=?2{mgI;|&k!J{ z+c~C|Z)SWJ2n*Rv?{Lf<*v$Olm^CecDR%t0wV8b+Akn&+1#-$I+sdVJ%B#BR`fw33V!^DJybvD$Cd^6NQ(=Y?Xg@ z`qaGjNt(Ybf2-n$Q>9%*d506aYHO?NNbu7@c_qlXW?Hc7)Tx$vyO!%y=5=|Eg!30` z!CGGDI^FF$gY9>spT1Z-*VhZw89FxvZa0KF$1#`HCpkB52{c4FH7r50og8R1iJX zTyWE2ohB6?2$vp|1D?yJH&9qca3{>9qEk;8r(1zD-071L?s0M%B;)UW?J_h_AskT= zRxaF`BHWfO+&y0r{JCNf^a|avGeq-hY|rX@&zAC3r`ai>-)YBvZKt(ZxD$b=8p4-T*}cUj5@xtdC06;9Y=@2lIG$h8NsqsQ<|_GBlt4omPIZoJy^6_JU7qH$)USaqp!ELr^W6j-jMG8we)gh>ZGp#$0i*m@3R( zyx*zz$Lm9;A$+&mD`f`{*}6jt{z_EmA;Zm>{1q?9;~gp_7MWl&=~)Y+n5SDdT)I?e zA6aKPtL1)Q!L}auMG>Q^uDr#{Og8gf}IuwEH*$}322&vGV?nmJT< zIYJ9H98MZmC=IF5TO104j|7%epkLi4wyNej#2JDPshlOc>Lu>595!$r(x`jgo%xUU zc%7D8mFeLwl`syugHfWu`_{c}IIx?cQkA2{(>c^CHBu&gg_|FN8CkJ%+*S85?wuW- zj0B7_KfoNp;4!yKz^X521I;fhKos7s=uz;YybD{TIyIn{C|lQgIvsX4P|3t7kdPS0 zL;)1Fz;i(*Xp?C;2G=R5fLHlAx{aqRPH)}lfz(s#8l?l&Q{p#_DwqnGcnF>_2a+X( zF$eAQMuvgnz|`je8dd;Vu8OG8?lFi7*~O;>|2*euM4Ra)lX?ui@i~*dX3_IGZT=6a zAwF(e8q^O@jB;Mh`x?paK#&wbh6eA)?5fm5fLmfah_oBP6fAduIa>qYqc{PdKQ2%j&?~RG1^wV8wKlCx3?8m1qB+B7oPp*Cwcj&QadpM{7Ia?XtESt>nO6AF7 zCul}ed0XW{K1mO&Wvgs2iKmMV9SaT^AgNhSRZ2hviZ@kkCJjWCY5QWvZY zxQf7Qhe~(CPGm7MGzoa5Kah;amB~^nkR2cmwx2lyXkXoYldNvJaPprLaV2wuf;SlFxOy?MeJ{86d9I)c7Q(Be=7a`YJXVK7!WjTM6 z;~Bg?C3dKSmZeaAPDzVDIneU*=j9V6Qm?>2vo#_{$vad205y7trBv^{lXmpmmMrnj znh7}4KYpz&4)QysWAq7L3dY<+NY!Tj4rBLKkJaJ zeoB%%O6!trg<;ETdq-Fx!dMK-PQ~@k1Nu}9A%;WylJjv$;(-w9!$d8E5sdVm2xMcd z>{Sy;wwbX;h5j4%iJLb)S~B#hkDoXL&AAGFYC0n;rh&0Zj`0MXi$ng`?714|GI*&s z(ur)W+l>Iz%3`Tm0n}+g>hmxb%db^3szVnT54_ycwOK|C__<1L0S=_`EgmY}r8}*dd6U6c z?NRIR%>nES^Wvua5Z~=57I_1%28l+hKNry|prlpi5tU{1r~NP3(Zz^k@FMf$X%=nB z7|YY_?VE*rL8Y>HX(yH2sa5&1QVDl;lX`Ycam$D4p?EJIEE-fD%#2}-12gPn{&Jla zFH17N!!KZfE0d0_BG8adsf~Od7 zV7R4<-+$BMc47SxJzw0T*kyktsoGHI6R`Z3A{j`7`FpsJVKG&e?W?D-yq1Z4O$b+i zO;quFCUOap?0StB`ve3tasyTFrdzqO%6Y-7!k;<}le~97P2)(!y7f``sb5C8|C1pug6ZnX2Aia7fco6hzqAzV&^O80w+e3#gim0M0nodcUfgbXb5 z)`(3HX0dmKT~R=`wD5tSmg>8)s~&tJNbCECWP^Zx+t8D|d+5^xy5w&o^9fK&G+qG0 zS76oVPEjw`w+p?Wo^dKY4Yqexr5?P9qNx6jaQhy-Op(U@fVG?6uj<`~tXQEx0Svc$ zIS-G|M6mzqWa=Q{_CM&$7K&5hlG_<4(}sCv;P~2mPMNskMAB;D-_8+Ja58k%F)*4} z+PZ_4iID=H1HM5?!PQUeV&+aI3$v9j0p zcP)SrgWXxQiWN&Dw~vr`eU86@Fry~!+#D{{H5xh~9_+B$L?l#3I?zMr-|24(I4^-o zn^FqJOoI}0-*`v{bLga`P%O+<*9r2Tc=z;ehd?OFO`GCR5+=DkreMaC1|layY$;}&>KM-s4X-=L(2TGdaI$6RQqd_7==QM9do) zQN_{`3#F(UjU(3I)v&@sONCk|z>{7>IR|3&h_~OPxThC~Lx0@-R9BYX$G^2L5^6q& z3<1Pdwo-;1PQ$X^sI!tgfWrJE!rkkTr00@mFND$d@4y^b;1wgM#}P2T*rOVw@o75A zp){p9F^ZdDIrgi5yeKp+jD(r_XOyf2QgpF^^yb<9xI?cgpqCi)ESYwmBUMwxH8Ixg z&k_TkvFDR4o{d&VWho;Rd&@*tN85mub8&gvTUk&cu3Nwi*ajB)U?rg+Aa zx30+rY$py+)(*oupXl>}~w@yX%UaYD(cgepvreG=tSf$tGWL1o#4xTB z%DK0RlXid+(jUF->Kq;ac)1Hvm@u)mG&Z|GHWjGgaCWjrO2zS-U+#5wteh%09b{th z;`%@eN&P60boxgF&jI!|+?d-fbPbqWe` zhyd5&2({T!wFv$*fvUfHpwhW^o6A5;-JUjyf+`eri^I7(v_I0EKf{XBEv@rzZNIiE zk=2^|U0T;|=|jU=&WO%_T(O+T?2<`B=q(PwH{oWSoXIGNq|p*WrK1W8PXJNughSK- z9njEB5c1qR1a(jwM~%)M4fx{^(YeVu(z1l`kgJkVQbi)yIKdnbIeHZ$1oX!q@>dQ= zf2v+dHdak#m+UK|2z^fXd{#G{Yo&xjWd?6GBo>DHWBEY2QAnFN8Z0K9G4@F=Ou4w* zK~ER!QX>~?U;1^!vDN+ax7uFhO911?bIgaVH>;<(n9z)^++6fZCt^$|nP=r%BJEf7 zu8T7ZVyeyt82QzU=@M>9h*kF%)85EiH1{ zs_)kR?_age75X0-r5{AHa-=4R=hX<+HPk@5$4NkG<5jhz;d_=Uk*X-q#K_rvKIx18 zC)u7Ks#{_O%spcFt)4Pug25^PP^z}dXYxVaGJ zCgHvch)G5zk6Q>u8;V5M9-5kUfx;D70$zK`>8 z?0JACOOisCy!21trLuZc)j@w3Vma?k)%>V$H1i*H=ohnoJxkth z^j$Q{E&umFpfW#KH|E7tSgtEOmnU5lfHZz=#g0VLK>2CY-D0n3b=Dm&wV#dbYxG(4 z2S+g-0Kg2Q3M;b;2`>&{z6vq{ zz!)~jhw;!gJb;(LI@`&{oC|HVM2(A+RM!H4tZ`!xb(yI2F2qsin?e%@gqvB zY&crEl=lWnqfkNnr&@fQV=zj1$bU~mxN$-nbP|+v)4NqMUwlD!`h7a}Kp7iPJLYFUG`R$`IDbR7xl-7)rHdiL(N}#@O5qg~wTD}cG_^HHggP;u}v6IiJ@z8{Q2v-d#xf}{lxSu<3&6gkRY0>I&x zkS;vbgaD$?y-vu57IRRv>3{Fik5A)c=hrtDEx@VpNm_CGP8Xr~fCl0%WjBM~}kQT*WxgA$=ZONl@@>TVZBQW$dV?IT3A148dKvw-UW zOL~iz{fF(yiU&iqx+XuDQwNk)m=@;*y)!`^Yd{o}{P48>vDMa0!yc#tlzq=WWZ;#S zJD1rhL3@0V$t`|pC4EBaUGtZN=V!EGhV=gI*N2Y^B;KznYeHo}&KC1e&0`{i)kOKnRB!|J{Si=q0iMSx@r zL)*|Q21yB!czsqa+-)N#RJJQ*4M<{O3F64r=oh|uO%~{^k?0xyd4v_OOp*!HxaV2I zWe4y>gNy&IOY{xVTSwbQ6uv99l|=EPH-WzYch9CmraC7h#O~@l z`BJagvlY7x4a|}HXa427yO57}J6;K^qomMXT3{Q>)lZdzpc@&)OHl3CsqQ^3_0&@< z-5E&s^lDXI8LuntL-^8*TWa@opxGd9A>;=yYq!b>%e#R%ao!#o#cJ7839+p(S;)=q z>BzzRm6zGZ>pvX|0;eu>g;*4~#BZ->&z~vHy;ru9GPLzEbUYE5<)ko2eCO?kp8iCG znR7{#YfQyJB*iKuF*S}79MD|yx9)0N=ATt#M+NS40B;iJOmP7JVKuX)@``u}nK#N8 zq0zfXu9$1u9`7f*371a6zo;I~9EMSJ+Sp9KZkd>xAZ2*z@B zuPnFmM>ss^vUpr%@tcnIi6qmU^+D1hypQ)8LyBWlz4Io-T1eWZ+t;Okvg@YS>fWI; z(4tR~><&bALACw>UfyKd7V0F6DJ4w|qO|!8=}jzXTpx3gN7vXp`o6eb^rBtLv>R`0 zl~6c~W#xcA8J}=|PWPwd_S((=0Btl>Ng$QSvw&n83q1JG;W-^E9mjKh9Q<|ebq4^% zM1hl+@wH{(#nrpKI`j3A@k4)cKxGghH}E8e!Jj%eE}R0GDF(gz2}m9V$5%kx2pYbw zAS!@8t^JN72OohRNHWqZ3ILAl^m&&9?H-n7SgN;vHSk4{?5V;`Xl}w;A)=O`I8n3v ze!jncCQEbOy&vth`%9&&z)!aF^>12MHg&J-J8j94=)Zngrt>#{&>DW6vZ1&ALy?*# zL;Srjg`s*lwhFOc-dv!VC8(nUI4s(yX9=Wt0GjKQwtszYCc#%R4DP_O1quW2PLYWd zo^>&hbhxRL{xS56hcpsL*h~pKFDbxr00*S4CyO!o(C>3=W;hcPxBvX;ZQ4t}pll9?E=8>aB}ib*kq7Z6O}; zLVEB0?SSM~`nbXK-072m7Yfkc(8T zT-xLO6rZNFw-;%NO$GkX)6$#Lvo6w^($d}sWRx{!R5rP#FlBrV_}J9+(d?wNN-ncI zAhVxI@cH=1F}bXXfGh>#!;Ha;tVOx()pY*P=~=rM*@tpDjtrUWO*#KAa)9!DThDVy zn{z4UbLQl7=>o0un3zAnFLOEN^KUn&(>CXcT;_{se1Q7r%QY7$HKz*67ib0+-Van} zzbtqnU-T@)S-rW??6Sye8vHo0$g#Qjl?m4i`C^~IlD8M+A(tgs`O-ImrP0l$Z!b#| znM=1nB&VhNtda|&n=4dh%6>Oj&Rte6GM5DeR&7o{Ub?J0l&?OKFHM!N{C8OmRH%Ul z)sTLxq5NAztx!uBRNEg|d3IULsqp!2bCtli&)cVzP-JO-j%l=4Xq@}ox~R~$%5w9$e)n(Nn^5NOR_*Y@_J4odZ*VJUFpjhZ zM|p*#R>Xs^PHtv7m@rU|)Qn~_DS1g&dFD(!ono&~aBo0MFKuwUHqp-QFsSd4rSC6G zU!r3FO|E2mOMli?f1ct%QSiXWmg|by0VV=f>ex6nPpZf_GD`8;Atu5=b>;w2X%reV zN*XfoF1S5faZG^adq*xS>%TF!*3sJ`KLlETd|>^-nFY7=O3f2e5J3N%^icZc6Y?vd z_1FC@xY)ljk&vnA)~P(jDYiKQtnOI)ToDu7??L=jQOI;G+qBf&uUe&3UgJc}4T} z%6;>RF{P=S?Qw!_dXST%#eK=jJWnWl^;z56+mPi4%IiL_*8|$tL$24cD0V&6&sS|5 zB3Y|usCk>$o2zm|`DTl6mAA-mE+pEvDzCR{mAAjX-qsG;;50*T;mt?s+E{PJY<^eH zX6My7 zuJR9X`(Z)w{$J&zl8b#dV*62Q@B!_;V=45pT>CNQ>%)S%Bh7pLoEArq+S3Hke>B;T zmD*3th$mL}PHoxHf1b6UJ|O<_SV(!=e#(|}VoN;3-aCJ@aO{|Krb#^Yx_9w7;Os5? zK?wRh@7`q*`tnoT`NxIBM2m~B_u|rtm%pwr%I;ltqp$ic2$c(ef%pD4p#O0;{vBiA z!M9(nqOUjGuf6_VEueQNZWix??;JbF5GkupO)fr+gjUd$vacquGm>QRekOk+ye(B6 zs?1Lf=?~-5j8X|BW7DnUS7ka&O0{%lU`);SBSD}wg*r=T8r+v9{>Y6j4S(}L-kKY1 zs9tEtfXPu0{p}w&udWE14;l0S_?p1|Ap2p{=heY9N$2^YCdtYAx9YJd5h@S4Z*QJ{ zGXLKEb^BM1&0zMwLou@-jb5E0J53Gy3%D?HcD$|y{Y8i2#<-JKtnSQcSaoJjiOMMwrf?Y;`QJVLp<9e2VkA_`lFe1G8 zBL*h8ksGcBwaA$NR}euZV_)ry8#% zv|Bf>D^>A@ocY^M{jBfyt5;3dLOgX7Db9OM73M-!LDR3d_r4uWPVY3cB*pHvp05oS zH~$GF{&H;rz=g#M7f*xoTQ7Ml4mx;_oY4oKM1=5R*R5}|`ud;ej4Le7Jt=Nhq2ksn~#Vi!RGv(lZa+Vmm{WapGW9Yw_8J;ylb$KdMU5kRhdYXL2@Cp(N4s$yJ>G;)>u8vOuqYx$ku zUQ<`1^Xui+!qj2+wR|_G?e&U=Y_E+n7R{#3x?kq}H(GpG({{_*YoVPcq|~?FE{1B} zJ-jxtu6ch*W?%H6U)}NQ&v;2p@E<68ckk+SmNt&@G?voh-}y?IztVY;$ilzNoiH+` zONwZV>#IL-f91>RhHB!qa2t}CenOrL@Z$mhe7S)xFNm!;@5RBm`q2c*T#XeO9GS_e z3^bVoM7!}GDt{2hVM-0D<->dGAB6Hh%(Gof#5cau4#QhSPg@zbhA|Rpkz^%0num2ZC@ZmC+8oACrodV?;i*OH zp42DvtaRvKed@gPcCn=5mW*p-@q(9!@7kNJ>CK{gu`Bzr#Hh?ij6P9y@*OY3$9{6N z1Mm0i+7+XYslXHu`ug<(kKX4}6!Cv_phEH*4Wx3=sNes)cop=tDOm3PUf>0k_)eb`6z)sq+DKLXFb5xR#QpFWs7$~bG; zcvKzuYjFOwnW1&ydzJ6PgM~}bujZ)_Zpy^^Z}0XZ&e{Qp1LGd&1rW~L-PV_^%nzp@R&d$qBDg_gNkm|E^$*CwS7t?(+O*DDV1y)S8*-8S*> zV^sc}(hxVo^YmiS67eOCnsxOeKE2^or847J-1I5z`GE1-=gjq?2X}HVhW&@XWMf~f zt?ymbqaE!eKhC+V(hr_?d+XKZmpQE8Q@9*U81~9ZXW9H+{2P^q(9WHBxN${xF{)u+ zSE?<7(=xgoFV&NZ=VP;a_Cs3{@V<8N$E#SuB#bZo0nVRI>Do%Wi~1i_6qn zeHWje$Lwe3j=$ZJvgZL9-dk2Aj%&TL@f;4)GvMVRA0fqf!1MP7itM-FH4WM8c?I2g zwP>B2nUd~WfY&YTJoE3X^D3x`|zJ)ZILCqcg^EPuRTa4@vK@T>Wo8& zVc>Ji8%qoh?$AF@Rj+?{wSgUcg8EZW{AM;P-P<&Lj1Ob)Q(1R=7vRN!33uRTn|3#E z{0V=2o}wDE74^8K_S5`wfG}=ZlOIHlKpz0m=iIE1R63}n_unz8U}q&|%Zh#4X1A(* zkG0NKWdX|In*HS&U5i&*py1|3C!S+&GMhuf9H ze=xM4Zw&W-dqN)M?e?1FyHqH})%A2CJ8ONjXv=voy1G;7`f8*4?s8F_k9%nV3~kG= zwm#?%;Hi6k#<8INIcO9-5eojRjxoE&81(xB;8X$Z>w$cJ!OwgRz89efdXQobc8+l5 z!y1>qdT_N2*tN*f85YQ73{zJLA+kESs&jzvsRXLK8>GPkS)yDIIIyoK!3P-EvtOn< zH6d8IE5^^en(p-qL%15F@LDSRwU&RlU;XRp+h8pWa=anH(jIn0De72a;2fbw7?83% z;7S8gSORz`hJ@NbdE^fGZ^MTl;Qne2`Eb;O;10lzo0{~!S;0YEB9JRoFl(GX`!5R( z0{A8_S7H=mL3xwlzq7OJrpO65R+eCxE+* zA%p`kxmeWF4RDDA6O$uAFaj920)9jQ$EU_gU_gXX(==bGR!!t31Z}thz7a94^cj>6A;}Vurx+x;T+}fJBFB#??F;!d6-LJQiUJutorH`a|Kk1im*&MI7W52Y$tgP^bYL>Bm1J1lsY#R>Tkh8OS{hM46B*T$7O0 zXiA(y6$WQoiw$^2FZSR{bI>!4l9R3H?arf-|V(Cdyz7hylO($CX#6s^HlNJBt)$hAtyX$^o}A7*JEA=ZTa*#yv_a_~s?^6y7y5}wB!sRT>KKy2Lu z9$6wpW6Tr*g}?oxPktxrwIZzO@m8G&(s-{~w=~T$)S2pw;@=6elUL-gkT*w9O!B^_QgeUqJJ{2BjOkk#41?f zTW+URlMMJ3lok>9`hIZQX`o#c2up_6IRH-ze0tg+FnI|^Cb$wty=Kc(7nsYmE(1S1 zVVwK(hwW_|DuG4dVF>mL2dJw5m1K!X|)NM9xk9H+} zfKbW>NalW^8Tdp!__kaC{KT;2#_inYfGH=qq`?|aF(7jSlxSN6)~`X@IwDD9KWu0< z90Q&U|MgG@d;~_vr%mcfu@uS!$~2o}H_=fLR0CN2;>*w*^?13ur4tHFPiamU!CiN;G@xS9N1#hzr5GIqqI{Gl&&GIS0Az04norGTqZn4L~zjU4#o7o?9F{V;aB z^6i7dQ;xDrdl>n_yBi8O-|^$$+f+D{I)gylL+0kInf63{T`>#pacr~GsUdF+q~9L# zWX183NsN&`%v?Xl+z;Tl`K|VWi$rduVX2RH zuH(am;NgL$Iqka2jdtVAZd)J@G~0cqiz_`bR9AsK;y~DCmT8@#6)_ceGom#xAV*_} zqFA7LKV&Krf1dCrMb?jo)RWt!$x#Mjq#r?n11MU4J%=N-M-eMQP&6Ak)K;afH?W{h zyC;INM_UZpr<=z=>O}A1;^xwIzo}rQ?ES6^;?V&BNkF{F1y4Z{b}sIFf8`zz$)}^S2lW=jwEEx+K+Tw6;CGjhJMtN;yx47D*Mfk6 za!prt71tHVfQ^U(^!yI8uflcj)U~F>k+Rt$8TRqtNzh8V-N#6XUqHx1D%cAQl0L}g zm+*@N=JF=iQIHbdx7k5hR(iKq?1dOYo&(J6KdeEO+J16_s?~u*#z1DH@YXTD^wBSA zNHPK<=>_CmU;V!gFs<3(-`FwXtg(W@F)=0FU-`jk_>WiUQXET#Tj$3gAIZz<=6DCz!rNj|FjKce0{oUJ$h|Ia|oh`otDtEg3@jao5kRZ(qG zwO3=*t|TZy5Hlzmvu16z#oojorBzkMyH!e+Ezs34_v`T- z0*iK93;GWit<~nO^P{kw&_C`m;N|=5zRgzJOMgukZJsT$hAbGa%pC44#L+Ce2rMJL zmo7XWE+@q=-q@IU^wr)*W;v>$EXa2``m2{$?XnEhGP+>J7R|d7v$3)tzkK%JP{hNs z!s?Z5?OgoVmAt?1&!;9brtF_RTP^;ZnA^QtUJy%Qnt$1CU!=YE`gYXin5&WLa+j9N zA_Amr-wq*aog7%t+t34a*W{~xMfsLEl>$j4sMwlKg z+@43c&rWY_EYYAh<^}tr+yY6>T$h)n-?=GE{tG@4kJ$<(4JMpF9 zeb>&r!;Sawod?5q8?VAQrd{7ly?XbnV6$ZS{lAS(#_Wec9CPW&gxFWl-o-Wg!VmVt zo6vV3E+Cwt%VjE!#O3zqA9$m-6qgzVd$!yqNb>)-6a+si-9Ud-cKE1z<74l0&-LUj zt)54=7H{PQw;h8&>N#v1L~SDrw>xX^zX+k${yK;V1jT?cT+0 zi+`W^vn$;#KDqR`fI@aW3U|DEc6{FL`2E{CIlb==fNBADg5{meNDo|lK1Vt@pKVfw z2=0E!`uxmcH?HR~8Y91(XlB24I2iwLm*D4U2!|#)?A`xF<-om{*R!`v4c#W}W()40 zDKp29?UhIEk8s2l_w4^vW;P>vPOmRj-1x7;;R&1zY6jP@>G|*N_NaQ7+mXS4{jc}_ zR=JJsY+rO0e(74Eazl-gZ+xLZ_l6E4tSY`N`5FB>2}5yx)mwMi9Wt9Pe)@Im!0^}h z=(OOMjlu)#cXih+sBB>e9|gZjmzqDj?%)-7uwVF1@Liq$Wf(i)+jqf3nL)r(7!3{j z5LHN=K9b|-U`8K8g!&obhawk-2PkGn)HBf+A;ca5eG$%Y-~BtoE+>1U=#x8x=4P8z zQVPYRzli?VWEGhmZWdoi)t~%{Jqez<{W6PKe@&L3-{a}e6i0i!(0TgJ^GwI{Z1j1~ z%k#Y6^Zc2gsl>YPawbI8r?*&%A}y-iM5Y-z0pL#}kWovP=oiBU%|=mO>is5l_=$uY z$^t}3eQF4?XGTtycrBUM5qv?#MkM!K=OB7hFvp|Vv!zz5l7OQKV=-m9UwgG`-DI|h!KNil$&Z!yJ)|Eelkbjp0N&8B=w7(> z?%!K!{Q)viz&S!hz=eW?olJC6w%-~6kikE2FEhqLYJh_+|q zul?z6*(Kt1i#7qK?dBDJ#yJ2Z9>ag_M+2h+ z`o$_kC}N7{5MlGN3nP&O9?Dh0Fb*Dp#Q+~b56(cKC^-02I2mj}LWMJ5I8jZ6lYrVc zo`gs6(@a?{fpfZjz&o=agDcMLtTzK@_ zYXW`AKw9V6s_g6`gaW`DP5LAk!HXX4dfN94=0s@5RYH!zF@ z(qTtjUoFSCBhFC1Z;Evt=sg-hKS(ao!u~%p-E~`)4_vVC57pE1yS@8DW( zyL`;(ap-qatJVs2aTvu}b31kfk+&gCGm$RXN{R|h-{Aez&Tyfw?tOjrzDi(4H@K~P zT^F-)tY&(wy=l_$VW4a4T2Ga+OvjweQHJJdv8*Visf(f2!W;4h+(j;K;S2;Gu+pZ6 z*RjCjSwb7D=#|Z5&|NG9Eml(3>44UmEKULye~EJW$N(x*?H{m8i#+{{go86E<+99+z1o?XCGdbHk`hLyT4c$=*+^iLuWkov~MfQr4u8;YZSN|Wugzku(&IwEj41h{F@6QT`*VzgLRFwnbWat_Ed z+N;n7gtTGjldi?HN`1IfE$gkJ18%PZ*AXU^M9@4scqFP*| zmA-GQRb1)^!WFOM+Y`MSx!7>Nf!I0T+A~pu%c>P2L=SnbMn`TiH(ga<3}~Q-nG(hA z9yf{HsYXA4p}^c$Cpe&Y`%44eyjt}4!C<@kc1^`vlV%zIin9A{)(`X{K0^_x5#|hi zPhpi9FU%FV)Xbdz{g^7@rs4JpB~}FtH9+1wR$r0(8khnUXamw-qpge9jsLF6YS%W) z8bj7-o^Bjw&WDUT>v`jQZy#eCt7?=>di?JrchDk+7TzF@`8REyK!1yBly%#rh`xT{ zRa0Gzd4%+p8dW$gcz?h!1XIUtsuzXllmxWWs9)5wPUuS>V%?jr*4np(0j}NuT~)=4 z6FRJcU&FZIk+23Ccg0fllpog$}H|5RXDW9HH;qAB$l=hw3V(O6a~9)fPa)n(*ui(#x3 zBOmTPxZ{e`Yix(|ZjfAW)!1Ech_5cX8LK2MY6rME&`6aZPeoPte!`Fjr{aI67xqB5zZxNWomM1UOaXT1gQ^qyhm{wKU!4 z#Dji_BDy6V0{{r0Q&EEf7XUc`;0Yj}rU)G0eBZGt9iQxLj8Cvmjxsg3vf3j0mBh_3-OIz>g=qUF^v4f-A6R*I2W7DXpSUr8yj-J6+6*ZpT0mB)|cd(~c(nv&ns zF&GdKj)NG$AHjc5!VOr;EnoH4N@KSoX zR+pY))QOV9k_aN5A04wweiM3eFCZTVj*J%E}}=snAFiu60}0ELO~noe-Rf5YZ#WO5L!r zlaoTcE_Rw5t?9wz=9($!SS@wD)`Rt1h^_qQ@Zbl{Z73^?AToI+XNyu(IB0K?gG=0Q zojYtjq&TAC^&O?d@?Q$ zpOT&_BcbdU;L|@mIXpa>n39>2j_>ckyp`G0Kbe@ADI=rorxp;In21kF$xKYSyyE== zVte`r`}+s|0)hYl0PO|fI_>`h-T%wEVWP&F+$7==ff=qaJcwv2pL(GlxW7Ku^lIiM zBBq1exVd7s1eqc8^h03fe34Fx>NDe(s>N!%Ca8|$U&;O5PH_84acX$5$ zwmFb=A!J_InRrREs~u;0x_|%tHt~N+_87wou?Wk=&I~Tz-2A`n`V0;vJ}Oe>pee6# z#(|rO{(lwOJoa~2QxP=M+XOw%d#m0^iOTJCQ&k?`01E@@|E1HPvg|ltZDc?AUpjq@ z_&(>X&wVG?qul6!==7dj7~`%-6n5kH>(b^2W{K` z!Nh13$F=@b=dOzT(Czq z8?YdDC$OY4iShqXQkhN&_+sCZnWi-6Il{DSt9teLX$WDkk*jY z$90Yzy~X>TkZ)2%Ek^-rvcl2`_);;+1od!J435#_qk#0-|58)G2xpc=7+Cr>OJ;>> znT)NG3f&-y_BIa4N;5WYzxF-54c*1VL=TJMW+$gXCd(B52b-pRiB)UEYG8PD9%~%u zQXEMyPdA$8eF*o&l zxLc-kzSLDl|HRw&vvfi&{VWRCL>HrUmj29sws)&i;-G}7u=+E(K1 zPX+~^H|JE+B))vS33^WjM-> z^VfS3rZaA3r-LBfKOf=D?W2Zf-_u__m^-~Nh^HBLI?8i?P<92a9j!sG#74aQv!g!K zJ{>ZBT!{X)&Ko+Sy-=j{yys7u@(_f{jKUoA`_G=mCGLA=_QR{QL`d>b^mb}WP{{>( z?=Exa%81!%Q&3<;g?f$?krSbM{p+Budj!+15*XAYd z>mSJz;_{Pzzi|+PX5oH&NJ#D4mJ~W?#gSqn9RC>JHwH&(6@Di%ckdc9|6n~VDdAd< z)V;qCaL)Mmqdv9!3*SEvh?K(*xUVO*(&72)?|(nZ%sq`Jgv)GZ!Jj<7m5i}7e|9u4 z&dam=j?&PUpL8#Nt;|H7mc0zyuM>=(Snjzv8!`X49N0VZ4!!*9$HdIP)6ScRpUt2B zT4etB^XkDQ1ct%j$t($6?{z(IRbLyrWo#A865>XqmR?7dFunQWjF9(Mswuvb)h&X)P3y zF&b?#93C-hIcW3iqcOMCW6wUv+zd6>LB<-l#csLB8lIUMjmBE3Kkxq>YrbM;iF|I~ z_Po^nxvibqz0v2+>Tz+OpF66XJwnELwZ#Rx$GPX+_8g51P>=tm_Us95933(~yeS#;Ka!YzsVcZ@X z{MYHpWuabIC_epjQZLT9&m&k>!N-6Abc)9>sE3ZX;a@J`T}PO;EP#DW&_(W)=#b=< z6{9tEFZ6&L_-lR2mlfy{ocgN;XjuIT6b0tHEV8kPn!)+0N~Sda#D7)5AJcly8c%!Lrw|Zk8?cE?ZwT=d z*rZm0g`_Vr|F8pFS)`SD#4F{RDARe-gfN>NW+5rSF)<*rp6V0@kaj-ra*9kt2xZc{Cxu84|hu*}#Z< zo>ljJ2Dx$wJAi+i%pTW${tz;adBS~jp}O@{0&wcPp5UNd5O)|@FPC7KoAstS>t;Ok z+hLXo3d9Qs-3y^|+6(o+Nbu}JFGH_Z<{c3VTa0r5+x6e0OHuut(jS&HyPD^j>oq5p zpEI04W9N1Cdg^3?Z?=ukUk}f^+?+&D&#$PoQ%ZQo_55N;kXk*JB?ZV!C=@0^*Y*In z-}opR6~wy~6uO~S&$HMu(A-L(3L#Azo=PY$)Ix!@0IA(vp2Dyad@wqfeY1cA4(8Z{ zTEW5WFlKQ$wfdR|VF{{a0bCCY=T69>$tzTXgE-(IArH^}m4f>c)O!iRc4Y8R&s)L)$RzAQ|0tB<-8}dA3Z(WtsOU>J% zP`qXYv?XNzu>d>X1B+9bze`ao*8`E5YCcLB^-mA#S3m(mM!PZiT)nb29BipT#d8j| zQm7=@fFxnmCYt~&Sk0-_<%7^afI<@t6}}Yuj=l_?K@$Xp)m*<$C9P0dvIdnVWT=OM zZ(8`}@PMQhsMJ?8UL-=b5Je|25EM}~FOz(L0v+&Dv!aSV?S$>ZKxg$->bcd@6y{Ak zZxu=gFB!~Q4_rIXp!H1WB|tebHR=h>$!^{pmwl5OR1oh#aTrKBv)XkPh+hJ_Ru-(G zFUG)Gzrrt@qh97gr+KJ5HL7e^pOq&jg|+!qc@@{@l?uSBTe5*7aNuQUpaTkg%1eC$ zW8M$-gJP(36{xh&vn&aql+y-2c&+Mvu;gYCMW*%y4)lls)4VEHz5iy5H;cQvK|8F~ zF@ZVL>xnYC>F&fEOAFu|Y0zzk`b$YV)QVJxxDUShJ1b?Gc|)wWjlNlp4DR~uA>!0x zNy#|fr`~r$eGbkT%{5i|uO7M?G1XzwvQN(0#m#JTtkU2+qvkAG%s1kUJq521}K7xS+2sLV$%lh*RfTg7q zaC-^LP6q$%pkl=^Tgd{GWvTb-fhtaQYM5@vRiM{eE0SP3Dh=FIs8qh+WLRI!Sx?1@ zdXrXO%KO6f8wIE)U3=+o3C^t@k?y@o0FC~FmU-r1ta$sSFRnQk_6)1W;MFYv6uYu_196Q#sZ_$TKe%r^Tel80HH`(XzJ5L!i(=FJ69Eus_1zn?Pn zs(>@mm%PustU;KO%2Gz4{yVEXtuM&l0q|`yLri?Wk_*yK>v$@ml8I0|SpP5krbl#H zyl^0=6Z1Dh=K&my(#q-b9E+3nzesFZ*@3Dk6d^IpHxfhtq4NDln3egc9mqk1o#el{ zA@5h9!WIqaQwuQdIdmn0>HtM8jsQxMnPu+PIv!F>lUiiPhKgTJNguY)(T9lK8=emv zo}}#_ljt6EN#(>)ox-TUVF>Ga6Q6gWyeKg6c8;V)HXo_a$k=Dju1U?Q+?$74oR_+d zr}kYbR4@DqmuGQDB{ci~%S;>8f1}Lo^$l5WVb{^;;94Kl=7kj4@&R~um3f+XqM@ps zAOUiuD>z0yF+_D&CqWZTz?GGhl?d>F+vJZgCDie4=}EdY8_;7+ z=-NF$9?a-Q74Q!thlV&UP(S^(CY_dkCWedo6|rZ|s|d5~<5n|+${cyO$l)C4edJUxMC5jIOM;j#=jpEkP6B0*^_xUs2R2 z31f5WKAQUgA$*$2A@o;ewiUc}bgV!&8H(tpQd6MWxu5fsf6(z9EXC^?gU?s*aQ${T zW>}xX_hO}_3+P6_I2P%*+Cg!>2bB7SuIso0{)?I^zTlx+$p#)fO)Fb~kud6Rx=bm2 zYh6M4T2=aA%F>rF)BabMLtf>bz#A`*5_e6q&eppkzZyl=dd|HC?p^*p@Kk2}o>w+% zU5#d5Ml6XRLL=Xfr)L8hd^R)N8*qPn=6zVpf8o+uZi* z9X*-%VQ-ZS`q%D(mEmBF?fTmUzmMbdCM2KhNVg-OLa;95bPO_Dy*Eqq;#Xk_s&yw(ocQy|-Ve z%<60RYUp5Vo>tE~bGT1L@@F6A&D4Z~H6Bn)aJ6IDf{*d&8D-dqzmjXb^6Iqz4L`rA zlrG)}mv8%?&Vff(VLs6TR4+4>-JQZk*DRA#ya&jJS_HBK3QJOgs}hR+x(??Pp z)h{T!JN~=Bvu;6yFVG#m98TZPpqYOVqc1LezVTAhvnmIyddkWFJ`ilyDMsJLFNQW` zhD7Q=F1#*}?kRcvx`4x?^mY=JOZCoMv(V2pZ#p}ON0cHCIIts``p1UX=ahrTr3X0@ z-8JJ2%MsuM2UH&~^-p+ufOLJ!4m4-KURhx+^kr^c#B5__kt6zg1LWqGls$;4`t7j= zD8_RwZz_$Q{N|d&+7YFh=gA8hx*!HLm|#PGBuza`L!=4$t^*}5=4Y%_WrO%U>k}u8 zj3Rebe|8rh@6deVgN?|jQMIpy$4ZZEhEhY}wO*;kJPMOD@*^?5746+r(ikXZy;d3U z;*R+bRTN0Y0u6lFz2%>hSqjZKmpje4&^tZ7S3GZ$(^vQ9-{xS74bVLT3N29&o?%(^7_-{t;3i{i_H-0=Vnst#QFuLcm_GLkbT>8d~dW9fp6>z-_M!bxeUrxh}JAjagF(a8a|FWJ@CHfbSI z>cE%PJ~+u3*xBR#UN-*SP1-aY%MO{8fnA_SM?w*((SE$l!zG z9`U&spJ~OsEI!9xu+IO!x&lL7goj{W%&bgf`3Q6eE9h^$jrb zA67|561can#uX!qW5SdOyZ2B9-Ip0cIX~**V;=Q@b?Vhy*+ZE=^}^FPzur5f5o5QG z7aCJWslH;8XhifeoqI}7OVt$PdQX($()5yw8uc_OubEctr5W{Jfyyr{-_xX-%@6lY zS&wv#^-|2p$iyJyTa(=(N>1~I`TN@UVuEE*r*+gN3g>a;QkVxWq2Pj^!Kuh1Q? z!lb4734n%#cWJ=8LCWaR5tCMp3MWDQ`d^F2Fn;dYx)8lXF2}KYWD(6z4RxJZYDnQ^ zU`n#Y5iN_&oXl?C)sR1MCb7+{k7Kv|C8;sjS>MD6-SV>q%jM?P)9|WVSJH@yAwRe_ z?U*qLJOh7YHb_;)zltuCc(A-hjqSO0ln^TakY;&f?5%EfVec>Wv$Kzv+Sgy7W`1=w z9WSHN|9=0xKm%wjFpo{%t`)Yj@`%Bn4O@{I8KW~pM*)_S6o5Itj8)DWV9AkBfAPbI z!pvihFyIY!!j+P+^c@m(t$@Z{jzS=lvt_C%h^)bFL6fG=uD-I3b|w^C9<(u%6BDVsVSSz zJ);LZR>aQjPwvoMJ|mhtIRj#DipgQ7F4KwW?WJYXckju_g{NP8vw*L(xfn2Zcb-qT zuX^k*Upcj`6{yU$7cbe+md842l^@((rW|o@7CL;V@c4IGb$Xb2=$;-C;*WGzElB4>uxc9xO@FgSq35=7g_x+7u zHg$;{wSi^c55I;lZ+dXNj`-y5_&40Led}(0jJVIECsoV65;hG zF$Ew^tZmmv@h4$JzcC?zYwflDhT%_3QX-_dTD@xho_&pQ>~RR`{Qc<(dN!Mnj-Mn5 zmOx>dA~%6*k3ge~W^4O*uhN~|_C9_tA9W@25hGgdZtuTOsCaE3*^QvfVp$2rgaixB z&e}E2{%{>OM*bL38?o=YI@`bhPAPEllm4HM54jZI+sh^XszN&DHPo`sa7KORW*Wi8iEV8Y)n z%8&gW8h5kfTg!jeRj=7Elt?`FS zfY(z~EIz(pcf4NEOuqi2SzquX$Sy+7kY34rOGIgWa7Su(&>2Q);23{U^zdRr3GX^b zm%(@$uvwij!(sC=#jjipY$&YWcky>JD>LK$ukWQBX9X}!wU}&WK$)E4@wmsht8BF= z8gkR-02*H>5s>HErWvlpOpwzmU}FyJ5rPI>^(&*2c%NiLmBJF03Glz4aBk`Jae6$5 zZimtFj6`oWmpaG9*`bGz^ zF!EJHs8ICWf7IeqX>e_~3n)bD>NRDT?gNYGGEq2$z&G_<5RxMn7J8&acN1MC*mC=~ z(Gf=SGIW2RqXIZ8Aa+AI2=LQ;CMKZLLY^I_L+?QW(qV3}zzRKOfd2vkpI>P6l1P`1 z(b@=d^@onS7YKU(>U!Dw2HDQ$w}?m!2(wlyGzSA#Z{n8f<91Sww2P)AwTQsLibw^K z-7Xs)mP7hF*2orCF%X*^y07^<=v$s98{->3JQgg45hr1rb#6sa`UJEv5Jdl=EP%Bp z9)bi{TO^D-WqbE=%C8f)ei!Ao@x&cMAP8+dE}m@{^IeDYA|i*YS0OzLB|eVeNMh0b zSpmSAB(SzY$qCXeVGrS1`gkToK&S!flYL6*QOh5iCv}yIceiI_Grp zAK)VmPD&+R95bl84E%y8vP+4KQ!qDNV5OZfbUi>nD4P*Wz=v|vDdyS)>C%yPr#FG& zQbPKA*(tjirC5Y>q!3*V!o_sBxPuJpR1O$O4svP)CxIf7@eo)OYcob8t>Ipv3Yd*k z?4(sewhs+C?1MVV%hzMTnu=irNH})`sJdU73|Sq0Q)p4p{YcLs5+a(%NRI%axuavS z`eu5xA;=C`#ihi8XyJprs*VkaPPUT9(r@NoVEOYpcGaIR7(T;Ciz3Q4J|Lf2L%_m3 zNm@DGmbqr7*hqGydl5EEfq~dHinUI^s+^4u-h~`^A`98agex$iZDV)}0J|^}qX?r9 zg)jh+d6Nm^>cA*ms?K>vxfVABr+a4~LQjs5+#ZX20HQqZb>=rQyKdmBWzwuH?WWb} zA7QY8GoX?M&`Du#Oz6;AKsI&_o`}`k?Dc?fK(3G1xQ}lHS&wi%287#zLh&QYXe2ln zt05N-dFe99M2N;s&G6Z*+Dx-ZqZ$0jh|$r=Rb<-9z3K^cZ8k9w0}IANBt zS3!uXP|hl?98syPP!blYXnd@fEq)k%Icun^7%hKrTdrAbc^kPRhvry4F%m@A#u@=&XammY#IKqm?q#s$$)&O${7(;e%Q{?W{oiMx_qrGN1XHz>)SqI?M zHSid-XWMt(RLq}=B?=K3pUX1TeVN<+0^l(=SJ|+cQJ6rh{k1`fm#YiZQ#aLwcxP!X z-ucD;rt8mq_ZRuFb{%b3Opkw^p2{SMErzUDFJlUUX4yQg7{5$8)pa&r>;h)eUS~m0 zPw_9tv}2XN!0Raa7nBE!%NC7IdRQ42KZ>9LrcFa_H&0zsN42suBGb9K*bfE z3Kbo$w*ajygQw#45>9|%QA)@VlaN?6S0+VNvw;qFpBoSKGHr->ID+!F_F7nq*@UD# z<;-53ih4lDlJmAR5P)WA=goOrq%(VkX$Tv+5RZl@S=X*`cdul(K$4l#?7ByLopkf4 zhv`>tzmvQ7VoFa8_d2*9%WikMSe_Au8Fq4eriG1?@96lI`6btl6g=ptNrT5j*W!U* z(gV_EGJe>qgkD z0URss!!g&)QAIB2htZ-WI6Var#xjKEkIn$JCEQ&cY7xa}t&iyA{)jJ{2I-4oZt$u{ z^OB=&e_66I>8F#@Z|q^levJ1@bH|CJ(=Ywo)MB@PKgw29?rXvtAKk^I7p^NTlZ!>`_cGMgw5LO2aCyU z7^>|^*!;K@OM{09>u|oz%tc#U(%P%!io;%x<}R4I=`oNXZMDvUJ@D<{-NtjjeER??Mo2nShoQ~VF~i~mFgn*l ze%Jje%WSvx7?DoR9+)S=RZ9>X!)9Z z*K5Wg2lt)>Z+p+rBIpSBpcZ@ZW57)tN35WNm)ss!pT-_P-2aW}^GUs&xUHszNwN}L|_= z4QS~PjctR>V&t%`9;@GmX|H@5GxUwGc-I(eD7RSLqavh3#Iy`SavfQ_HbBDCDn$z=HXW3v}ywkPc1gdz!2DTne4E-xz-# zPW?ie(N_!=1asz&;lk=4iT40c9+gFL$2iEZ(^(3#bA6(Fy~h!Mmwb1wo(@KU1R~U5~DwS`J5;(nvON zbAP5k#(M&-+#4_++O$)Z3oB8n3nfAKPPwA9@TRYfZ2zFv%Iz#{kMOQX<$BQ<$RBv? z<&ozJ@;S0@g|Safwn`B-E{lw}8Bmz$4^OdwJkVpfcvWlXh)b8JPyFNf?QSxT4LO+l zbuI;e>iP4#*GO>Tw{wp9Q!ZJ+);@+;>KE^!&yy#^s?5#)ui^vZ)ikcwk1R1gb^Q6v z@8`kV7q`rxy6^F6-ISWMv~Cdo2{PGGLvR-(E@4A(KY#f0;JNa7CgR-JA#9AhgV>9t!=1;hxY&N) z{?K)cTIoiSyuk z+uEB-uMJZvw0F%uO?E3pdPD7pkaYAGTH-FPnAO%I_LUQCW`G(&K8@Rd%APdh>Z?KH@zad-^I}@Q zTQq{}+PjI(!-w*m+#|c*wsFRSCQ|avPTyiXgH3pEoVa604CvLkgAZVJC7tXqq^G3C5``IeQAbPaBjo$)E^ISqs2g*p}M z?g}Z*t3;7qpIz+`{K9AN-lmgZr?AJ&lRl>9eE(6;H~fV&`pa`cix1Vr4c#^fBHnQg z+1i%1aM{=G!GlE)ul)KYTi-{oDc3N>8zI*?*n?b3zt*Zhb6;`Jl`9qhmo~>qyYMbX z!{A*ek$WxsZmfH)4EJ-YN7_7(Gu4JP=5luPodms2CUpm3rP_L6!{Z?G`&<)`O>_#= zky}tI*PcE$mWFyLkopPjKR|vkDGO>n(n2lt+mFIbDDrFZeO|(@O@6M0^ zXFulEt+MPT4(# z1=1eap|wv}9iOQD+=#f)K3ji0wY2i-1^ULXz3Sc@zX!56eBwO~lRh?U_FQ~@ysqOm zp~@06e+QwRSkEQ0JBq$t+;=o4)csEGFLf6f#t{;?REGi1EhE*4GBv%}DCDVYF& zwT`w>HWduXk298r$O8>}H29=k>Mj&ZO0zClqI8sX&7WG-1s+^RY-b5nV20cG5PWby+Zf&2%#PYISL!;#^bVY1ga8aU7f4_okQs{zxLg zG8Fd>YJ;R)G81bR<+;2yNT5DRaAr>Rw|4r~^QJMDO(kT)Fq}^H1Bgi?A-1bPpHUAU zO)Y3#i@ryCqB$q_me(!=l2R)47dev8{++<5r2sxa^h^KsN5{^sey0~lVTg(IB$$&J zc$XG9j&NsYVb3y2WpML%L7FBn!g3q$NPKI2Cc?6yC&!`_NxGAUk`yM z*8mc95OK4rQlSHN9ka^4R9?G4(XX&R>BnJIOqudj6GxNaxe}=Nzd3=X1YuT#qV%S8j{tBI8Vwc-JaDPQl)jaa&wY`<*~~1O_l;4D(Z$0IZ_8yvdjSf`t6d zdNltdPsTv|7k}4DuC|oX-kui@R~Y7>KKs6J?8e1%&Y9TL*7S{`cOjpT9~*s7L*#mv zlr3tj<~32|)pcyS6H&M&rkU<4(`b_T8uwH^PSZvfAG#Ld)Or81&&UhYXn{h-^lD|+2*yT+u|XcJb1^( z#6Q$!HJjIZvMf3KA3wzi9y^e&+;d#}?SWL~I5yCYH<5Bmm4fpLQ8Un46(##v z3+m8|JEm~ZPaeg_Z*yI+vX<<6^WV&{$JT&zSwn_O7}|KwXXlM z!x9}TOBDG}F2skc6!_-|=7glUW6af~YJd%Nk6~sJKe4 zBji5N3LKs@&io1UiFrEpR-RphGg(q-Sd>cb%r2ns-7Bq|+C3aO?wY0YI;yjE0$uB7|dQg4sZ0`%wCz~0~QxcvK=9XUIznZB_<=Nt5Q9_3Mc zw1vOUXEtXENagFI3ux{Hnahh4Go3tWt=KdktaKFVQn}tWQyJw(VoUsEH4k+)aD~h5 zBbv>+K)1!_Pc#t%^ZR9btwYQIeL@?2DM)8NUnoayu+3t=v~Yb3%Xs>yFp$oXiRHZk z_xrsD(syylO%DW25qYp`0HNhRr7nU&g*80h{}d2rmAEKkEwntFEpQ+>HvcJjU`l4G zv3_hv)}*q{C>;RPT0KA(rHZd^t}rq2_kkw`63d2|x(38Hs6TGlI7$_EwxRVjV-dGP z<24QkCR_&v)6Fz9$yYWo$J%!8+Y@2F2>L^C-zLAJD~84?p{-ysibBp)=kwnsPT0+B zRp_>~6Tg%KBDDu0G)}a6FeVGA!C}mu0zky}0+TgDvuoghB|~%f9`r6oB*5(OA^s*M z-2i976n^IfmcfL13vDz;qwNq(>KM%~8l;?4(Fs^OoLRYbFb78fIP>)>lh~z5pIC&| z-Eb`O!q>A)t{0a4UeRMB6`f@brRfy)FX{qAFOqH}$s8REcrB7s+j|18k17abEKZ=( zBCn0|`f>EZRe)eEGSg&QE<0Dm#J`ru_3Dsgq?hgGp8ho zOm}#>QXtCZ;}Iq1W>DccTt{Pb_^Kxvegh##w@B9ozFRp*C)UTXnZUL1BB+#X(m~Iv zkQMxAL3;7Ih6h1&l-x@wyhTc&hGW4j1-4yKv8bC{xtrgPP3#3V-x7;Qv>T_$rA;|4-IeLax~>MM+|lEaV45pZ ziR`vG0K8OBGU`BF9wBKh|Nl{R z-v3noe;7Z@ImbB0vG=hz2ZuP;agK3}I7U_ynb~EJoWrpRm1Ji|Btj^vV~?^ai8@wB z5=E(x^7Z`(?jP>^@xC9g_v^Z@=e3O7w>RDIXDp>fdv8XR1C(uXL^oJmAdN!{cl3q| zW=Y&S<{};<8MJWNKmZcetCmXBJwa}}0uAhGt0NRU54YrpGuO3nx`TJFsjiyKex?)v z3`qCg5nGfo8Wercq`nSXfr?uKAlk{6P+31eEx$9>*G4!OvP2nQpp7H8rj>xvy662| z6Vs5%$q};HXg}S%v!?kJ=%eB2+WxOEGNKP~IuvogIj&w79~kNsNLKTC+{I$4#m&R# z=w6kqV~<0O_##RHM;9IxXgZvPKDd`4SD5@jpW+N*jQ3ge+|R#koZST(TdPf_Q| zv>xpLFhd>sr;q?&_<7j$W}@lg7-gkOK`)RpjyUDRP63v3ni4;o=olGd2VNICH9&Xe z*_nd#I|vtNg1COq?3moDaSqt6i$@wgUJc?R-`v`mc|66#L_>07r>N7(kBRGF zlSk|(M;g}~5w>+;3Sz1hxiBm1S%Q83@MbklK;%I|^@10^MMVsCLz>iIqI zfMi*@@!c(DAeqPLqJSsEu|3?!Arh|XinycN?aCqXnbC2I_;Zm*%Jp-0JcC?vOc={ z!^cq2MgE)_9K#3&ykxBYlM1iFmHE_u{ljITMUgB!yCUSOGFvg7xNT(fGNe9iRSQN>F#9p=864ALf0#B6n(a;WNF64bd%WHD zNS$Tus)1zf;5)DT5!&u{AWg32%6Pm}FVz!X6FoV8J`Jnx_jwK5 zaJVU^q891f85z=Dgt#IVj?IRsi`dX+lbu> z=zbOl-8=RjE&XNxN-zbIPJ`yF`=tX4y5wKzHzaG{rPhtIKRN_GS56KF@OT+9EK#st z6s|7+NZe7zr&C<)Ing!N!n5DAL1}dH6jj7!GN-?;F<9wJISsl59&|UvPt)2=lo0s< zhCFigQFsGyUKgZ&*5*L#RzT2MQcrlef3K(JZ6qMnsbSOn7;68s(2K@cVHR%!WCDI- zi%vvUZ9+?NT5;_~Du!H^J_dP@u`It=St9t!;rIv~GJpcf|B=C#c-a%3+W;+|XWk9X?u8cgb$Q@Nig z<~%Gs`wM0=$6w6=`dxXbf**Z(3i$y|Z*Ob)MOz`Vdt<`i=WCj4v-N&EkvCZCkARCK zDX=q-GuVOEQ2Sh_Yf>`&1vu7f6Hx;uKevSC|H%9V=CL=c9HBA(eWF9B8k~rb@2mgG ze^r%8_r^}uvVO$<%AAe}J2&LpGZfNe8~yA1%eELj(MHRb*z#Z24}alMA?1z$Hlsh# z9uw%uxf>SN_%aF?Uzp)$Y0sOeG%POO-%Hp2s&2A+1@As^xGBk$gDQ~-DW$-LKKF!E z;K=|suRS(8%;4}p4tv1-56KPkexY(2<*uorZb-atE z>8A7KTR0YH872SB-$*Wq!s}Jfk{uat8P7!2MCkfQ5)&KW(b$NQ2qVJ_0hGIf&=nceQn#QADeHEJg~(& zfaK>0)+z4rC{HR&6j?3Us4~%bC_~V~iugoqV+f(R7q~#1SxLo*WAe`2rg&<0l7h9O z*)YMJAwqoh?iAp*$r$Hxbk|y%*Jx^~!0PBis6+}2zd>F&J?-(OOxbNCBFD7HDS;ts zYajSE6i-OW=5{Dh`eFsXEy#U58cIirJZIldt!ZS}TuxQh`8rk*>L~HWA>1jLn3trv z##Sqr<1ah1X7ap_K|{#+UT>h!c!_q@&yzC)>2$U6EA<-!5&rXy&Yh8e@3{>@B*;0X zn5%d1J3cRw>AM{HmCzN^;_fk$5xI8~J3)WE9v&`L5t-7hL2%>vVjW0yBtejj>&s8? zT<0l^)?C14MlL>Ffiv!}ocTX@w<&u3Ra+F@@Pq|AjOs_5g0`90yJtwr?|-T4iN+15 zB5U&KsZ9w^_@soTm3qjplz-kqE9c3>UQ~O|s)G9Ii9akW zT=q(cl%SW>YU=Ap*;P<}b9g11f5>7JDzLgZmMFXReym;)Lze|3g11nRD89Hl;WzAr z)mN>oMt!PLA8%EFag{D0#uV9w3MdnVFftt(8SY-8|G`X#sR`1?AuK}f(WkE>61+>gVG24y0GDLPmk2Bb#1{u#LX+NY4i3aq-aJ_VWb{pDrrpmE{XF$(>D&~>$u~D|^>yDz*KjH)v%J{2 zMo>NOyqtd>4$LS?Vx0Z-(Dfj$ZI_ElSfOt?t0O`x@u>s^-`8i(-ikA;q}m#=XY1^( zbn`bQtB4=lPh%x(nX>Cp1UnAAk-N@^m3}XuTX>ScR{=R8-%CyNHmSg#D}UfBO%#cH zi%6wtuoa_4l&;~Piu+1LDTZ8RWWM7rubx+Sz~BL8tT3SX zc5#NFyMxZ*__SO|2eRoBH1OG+_qzd2&F;U*!d|Y==nQ8|PZ7?dQF|ZN0~59vH-?1y zNq0Y;^a}4q_X4|qEUqALcl|^GZ+?k^DMS<7F4Fba2i}vY4?Usr@E^`JD0J-}L2*DH=kRTqnPeTz@EAzlpNg8a035 zs5jnK4LaNcWF^gDPcO+b2viTVk0j*;n*rjlH>}1knwE>QRLTiY$q^+fDaa+7XathX zV!(7dKhw$=0QNg5V>wwl(|!lMx4LW*JWhE~d@X^a)SW@F^C3$x+P*r|ktHpa?+zbE zB?`mL8i200{cHhZTk_;erB!eT(^IvVJlGtQ1_dgfM#;$n4ZhFJWa%npxIh2&SO^7F zT&b4lmvwQCMkjYT)CuDvxUd~WDRSFcWY;!t63;%yF|s@rZM-Gr%RHx?u;!O z7CMj_ttx!DnBwAlbG}t+W4G~wg3%@A_aEHGG{TAw?tY8kzIgd;Gxh5CJo%ey$#2Wk z$@Njt;_r#5RQE(#3R~ckeeNpCF|q0y0p%rUXd&&(jzAAF+fW>QqH*;K_1+@LDntGd z95B9o0?)TvXZH75vV<$Cf{5NCO5t)poQDJ`#8mRivJ>Qb2u(c~x6EtyN&Ew(fVXG- zR)KC{>^=%oW_iz9jr5)zo=nHtEL<+++D`dT>hXhJ!6dVsyqvgFZ3Z#fUT7X~Zo(4t z^#+U5K7g^@{yZJ}6*c~<_Lh-@nJlS2_2g;A&qi{u9%B~dNcdC}Z4TkO zd(sEK?d6q@Ew44$_0EfSuOXMt*ZXq9io#u6Nhd942-c;08HdR?5BRMAy6D`Nt)Zy% z`=!Ah9u{ysqmIYgS4K1ATLhhGGrkk;c30gK*T!^a$7*jQW+1^kBPa&WB5s447F$N1 zfmzJ{FrRBDlFYtL71c%kjFp#2)O`%GJeP;r{lmqESm3y~$NgJ5j=$`0xzL83IwYI@Ie=c6o0xz5yAMmLZdB&8RFW65ecEmuix{^k>uTqv^Nk&Ef8G}ZW6KH zu)L<&dhTI##NYU`EDuHM?e#7!GQBUJV)}JRZ{bPe7@3<86b@D?EmJ$S_C&$0fWd>n!LO z0iWzDBD;KgPJafSecTA<<{#i78LwHuQ$wkvk~cweU=LsQHf~E}qrtr`hnd-udX9t; zlgqKyoqzvMH%0d-+#GXwFn8W7l6N3Z@Q6Kq>HUqzL^b`w_`lbc?{Dg zpL-q%AB#cdDk1}AL@*|;*S9y{!sL@DQ0c*aAfFqHhMw^th2uBYOdG<`VccAzxDe=` zrRn{aoZC);U)(IwvK0r%hENq*uo|FS{*n1{5Inxt?`)g5;Q7@-T)&4davdG8KA|{6 zhIB}#ihft_=&OIIX>=OjXyq^v1rIsj3bly*%uF_3LhU*quj*n@vNWp?GZ4|4MEp`O zQ3xebDCvZ4{;JQ`i2p`^OFa}p$RiO)BrkiRn@6jIxSSRU>oxT$C0)>%Ngyp-9u=nS zH9atyN*e!lCJkq%+HNH>he-Wh@*pb*D%sz*RtQJ*X3JhZg@1-ye(rtS|HR(cv_(M} zLjAA)jc^}>sNVytAukkM={!sSve5Y@$*K>2^bcD7P5BRcT2LY+xM=&spL@9~kiIha zTXsAt)~rtiJfs&$Mu3Oa1}(7bsr5NtjK*FlqR^xNX4YXN$-0Y`q6K-Npc=B&mZ7It zW@R9Xp+RNcXi8GAdYxF!;CNf=;*8W~q_k)2OSgSVP8PlAa*uqZb*0m{0x5k}W)LA9 zc&FyNX4A42jajo|QE>n?2a4Yxb?@^FcY7i_L=!y;viq3!rI7i+Zxw1xt0SIi4}d7v ztIr(Pp1I`p~J(9ugCEJl+i z3mcF~Np&@lw5G+8E2pqx9;_T6zL(A{I{OMYCfeF(aCW{{4He1$xUyrQ5waE)tzr-N zBw}ksM{2H_-|P}{?-Z{xI0m9!%$G<+g%dD3fdcY!ziOhWEE}eDrBUB~=eFc(Trh+1 z$HW+c$3L+&&@N$lU^V+#3}Qsfri*vx;e_#&1R(`UG}X3LUfps-sRd`^0(wvY6-)lE zDh%NDW^&*o*MRZ>XJG@r|AG}{CnYfy=2JNwgbyNY3t&t@g~@ue$ePv}QFa!aKpzdk zCj@-KdFIMg`q_n6N}}Vobep+&?a%t0oe9kHoyjqHsX&HpOO0fJt@&$lDN}-UGnYl1 zy+vofMR&NS-*xjFd(tbddPd1I5}P-I>4QeLN;zbJXiL&9o;eOBumMEIqROnHI4RzT z(L&xl+rL7FPEvT1H?k)tJL7@u59t%KsFMUR4heGQ6!Be)yXFLZaKSqJ8xLTY{z8sf^8FwB{uMDSx6@d5pbuD0a;qx#S$OTjjW61(FyRe6Ubo2) z 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 z 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

  2. 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�yIIxY@NR1!Ki#b9&W)l+%TkM+zXTV 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≧oUQV=;4@uZDTSe5>6K)iHbC*Y3QU~$5EFS zb>0Uv@%kEhi;%AQ*{lX~6cZWJbc=C}gs(%ZcjESF(vuAev#`$KvNp>d-H7q$8`T;D zZ#v?P6cU3)vjzmU>X4}i^rgO}2dtDi005)Xhy(DtMkiklX)1luv*X`6uf-DekKGna z?T0yiR9PnG-&KJx2vI|8)Ye`W2X&$GvL4EWfT9_2v5|vR9KAcR$)}RWs9acd#>=u6 zW&bT3_&Yn6?am?;b{En}yhXt1h<(y0xS6=4E$PCMpq)$+pW13`Z=OAW9_uQ1Tg&=- zNO9dm}6Q1xMNd7nLXdVKso$i0lOwkCI+r|7oioytJGnCa=f zt{$c9(4|sZ^pmMx&Fqk|<7y`$$T(x5Tsboa3h7O6BduU(8#BFrR0mU_r;+lnQ(3)Z zRbFi=F4t0Pw_N!ZasoPPurmJE^{Yc?UO@AbJ;G~zM@$>~){J<8%jz04qnW0kJN8qf znSQ-6>R|B9S4+}n+oKXFbYHi~`9ml5VcVrR@9L{6rIf&F*&er(wm$0W`41Nd1k)IU z_9kWl6Yj|8QV3J7pp02Hq{Es^^n6h6MwbP4m$wa`7YIm)$zC*>B)IMogT-{z+;Uu7 z!_dN%D7!H2r@~)^nJ3wl^3!jtM-Yf?E`#g?>35?~2=pT(*bMrFMDWk02#jMZW@N87J9cRR_M z6nyIP0~Oh>Be4LOFnXtv58Q;$2kNPbTW8IF`Y7f+wN@I6U#Z;mL(C^;`OMhSwySE) zX04c-`Jo=qO3fz&T)omE1myNv2+d?iXe0OPp#;lpTn4zWirKM%*rC+=(rO&`Xop31#)Rk3TD>FLNmwwoxR|oU+^NE!4eK1vKb{6&4@KW z>l5uNWw-A~q|&Hlzv_YOOy2OQ;F?hE><&PKUiW{h^i9d%_LsCPdfC->D+2`sfSH!S zggO^e0Kz2DHw(9b9RS)CIlkU zZ*Vpi$C0S1lEIxVrW4SQQ+<{Bff8RRun)3@&Urt-> z_k2$V>O$kJxy7-xlBHRnP6#eWIxJJr(90%w775c1o z%CvdABGlqttK<^AG^S!Wrg|6@)$Dq&177Wu^}!bNZ?sDnKW%RKXya6Mmq8c}I;KsE zc;RLNyT#tOm+ZAzov+W7d2pTiAl;tQpC8hH4Bg=8QikVumDBejWuHvigSse&X&2#IGFPk3CNgdYwC! zYERa=`*YJtb1=Zr_&wkrVZ_KCXb5F#1RQEIbR zjkR8D;Cr4QJQ4;3dFmZE(9fna!l%Xc;fAdhFOD6)XKlK{j4PRSfvW^wAG&y~ZFdin z3&iCf`tD)qYki@}qV$xK=}OM650@C=lKk^!lOsd(!lzf>J$lt_yH~hlTR+?Ak_|p^ zEKA}WD*hHZpvjuA4=$>j!vd1WkVYKdTPL~oLppiRA=%M_?#GgSN;V4iy}Y#j)t{bb@_X{90HUN}5AK$*)x8Z^^SvJesEbN{g z(H$STual97Z^+p!O(zbx%zUUN)d7}~zSyg8MAOuCV3r4S6RjEz=MVNE-BN4!u(o_& z^I8cNY(Ox*FwH>n6h3zO2}LWT!6hk|H^1)*RvVH@HT6<>1B5nLHA6&O2Bm?MC*q`s zhjc)5gd&S?7yB?vmUZw6%*-^oD&)-Kf>gkn^ul|rRt!=}rpQAQk_b7FU-*4&B3)RD z09vK?ll-}`xxn6Tkzq+5SwP`qN2Y{5Kw~%2DX(3UHWIN-^2_kc;?tV1-PUeT@(2q|!;X$C#K1~u zzTT+-CrLnwRL&+$28O__NTuqP$TruaP`xNDayM-FZG z{MO|TcQcu;I2KsHCCBKfYFEmS>)OMNCH`vKf!rLk%cE4k4eD(rM6~1xvGwW-&h~H1HOlk4tz88 z$ck6v(V{d4*p}k+*{ik~!V*M4(RGp9D#W+Oc43U!!mxtTOd3t*sib3wAFl?1W8YWv zjO?mT%U<83I|2HVO`{xkc;nyy+Uev&-Raqy(mcwG_A=gQd#cCz`~rXL@I~>#Sy8fO zQJ%z!OebLSohiEQR{&(J;Dl@#sPGAz9Pi&~R?1q~|BLdPy#0?Qm+_0=acU04g>Gh` zl`CuQ8Meec#9Wci+~2nXh-SW_<%*3JQM!w|L)E3tKb#CA-!gg@PpxzPU z0WC}hck{L>7241`TcHyp)y=a#TG27XQ>A-grate}(G|l&IFxTv(~ejl~4S=70xJ zfW?}okU;u#o-03^pnVA9i@p~hq1tlz)WE>tLrY~vpQ%+kdok-qzSVR2VXWhcTtF)0D4BbNVK3UXHH&&j`o zV?oeB95ZPQ&e}98f=BVovcdh)jp&d2*MVGC^8L4ivAM7s z=FF!iq@h^WAYYD4EyTmcg=mNvTdEiqE)CzzBm*RM7Ett&v$Rr*j>w7?k{5Oyj@^$eHt^AY>(R+6p`0|(a6ZI!# zWR)@3NUtuEonLyc^6ZJO=ebqf#ZPyw1_L(IlIow{etOrU9<3JeGr8sJ+LvFCw|;&; zd)W2oxx!U$#K|{mTXhlLn>qX#Z zXWQF*nrB~tPua;l^5_5D^TLjr_1vF3ibTm{|NKt&o#7(rKX$zRc%I`wcGM`HyZz^m z0B|1J)jxO0mum(5_2-W4;r}m>!5^#iy+GY=d9YZa%Ylq6Szj%gTF-=z291|+UA%Vo zKqBHFwFADxU6nn6p-3vbIfB@((~gYgd3H8b{hvf^&fN}CCL{YEbp+A=aP~UcsE&k7 zgVpU-)GX)7UZ@=~mSEs#myX4+G?A%<#SL625c_nUjI4<1NPwxof(}!Bc8m+SiH=pv z_b)Q}qm{wpptB$35hWw%IYJ}Ok!2qnc>w0~@2x{|TmN4VED7ARUw%tmA8L0ti>xEx z?M`RJ<}qpb>-OlRS>=qMf|3;fJVN%ot^P$2n8)qw)xsZk8(Lkp${Acbg#%jWd)hxqxWXG7O~_ac zWJpWw!q8)1j{)0%&Lk7itmc(Z6L<1&@{lF3)&MbFqnM46JC3~}cVO5i{X1KFub-XR zS(w!|4LuP6t=CShCo(~%)DaB_LrS%+s2qFW$ zK5t;2FdHp5K*383*&Ar@d=kbi=+wBMoIUvdkiZ|LZ=wYmvsI=Sv3c1go%twxZLN7% zcFY(5YOUek$RAd|fG~2CA6!$esr+&YuM)$In+u^cOHON8p9-6sbnUzO9rvhDW--)E z=R|VTZOpd)*X_vGNkUbXFzVz>*c`%VEy0{iBN1lqrMNTU!SZB#*w}*!wTKw^6C=}I z&pceyM9Gr+6@&#V6qS!9e+b+-duIW~UXRmRY?j{sUahTzLwh7pDKqhhv50A3y1pbN zy4_vfhZ?2Gk!FTrjt{Uj)8BPfRKmM6k6?)~n3}qP2@o5BB)H`BAMqG=~IeadbZ zXStXGxgHUt>+j!uSCaU0%wn@=lCWs*sj?D8xnBU|IcOYNkT7ZVtnAJ*-`ovuJM`)O zgxuT~FZO7~@!DL4>JuM=jym7bgb#0F49S{y|X%``Pamu7s(T~IQ5WdHsk){K-#`)L&@=R zJt5SA5oNx)&CLTghg)y+b9@;c2+>izB?6*&8YlHb>WDn}4x0YUinH}2wdXN1^@<*{r`KpZ- zy9%tj_%xs2!B%p*V`H;YAAP`z(dE1q$$N@4ECWYZ{xL0iNln?KMCr}$M^)|2J{?m& zYd>u8V)>thfXfA@5Qf`mzzjLgy-VCfmzb4mfED9spd4ZaI3AE^dwJ`KIrwTb5e5BrQNa3 ztvxEui>->Uz_D&KyoH7KnuX@jS#^(886QYe&UArB1{e1yPnVlRF}n*B>m4w2f6fsT zzmV%D&aH_KE5rj?nZw3wbL}ip)l?7H8NV00CUfNQDW*fSF37guy9G>d93!F$JZxsC zUK|av95i&8sHIrL?nqpS%~*+u<&iy$t1ooG@^j|a#vsd9`T4@17THp-30EEHo_xnM#htvLkVV3EuINECIqt(r-z7Mw$>FOzhc{pDU z$&J5^JTlxT`z_X^nE30az3TYOP+J&-j#j!OV`5`YPZTXnd1c#*iw)ZXUuoG4^T|-3 zG(G}m=DkltFKv?@HHv;U9h>e@8!mmYmw@q~$fg5ocvwDQsUDb(E0|HX* zw5@@M&-ab?E=Tn0YQY53R>#UqKo)EZ&vE&E?vR^#gf)C#PnrdKa#Z&TvVbvprGb(4 zyS<(|YgMCX5J&&$P1mfZEa!>OydG+Kcmiivwf`pl(uB|NoUovoj7XtI`C+iDIxnw4 zoTl8-a|C*WOME>}nFZ$BCtKRp{5(_g2TjP)?qH-(RIivthSqZ%6W&l?b)p^-Jtd*+)-k3Us3m8t^zpDfaTF9dOl;WaAERJR(7ul=e2kHxn7F z92vG%J5AuW?~mZ`+BPsx9i&i|*(F6H?Bb@NttX~jO+J9nyTL3C>IDLuf$z?*_SrdL ztkrnsS4Jwbd~m~tel_0?-x7WvGli|Q&bFV-M4;O~9&!+lP29eCeR=nm|N0$Px=biy z)#E3~!`S@rk*1s;kw}~*2-J<5P>w_8yng;to-6%^*ESaQ>m{?~*0~iAW{8Ywi)P{n zGL;YAS#lU9JdS|9i3(0y#GheihQPTpXhK)TX#cC&|Oa3D}HvNr_}r9 z=5k?Hh0EVVwBas}o{qpPbc(Ccu$F2*PNXokIdxgfpXju42n z?7SUbb?l8Vm>eFhg{C_+I=}F>yhOpUggEISZj<%bBmV|n`}j3^xL3J`SGFtEQK#-K zjYL|4<&lG`{1@wL{&iHE!bV)zJ|#$Nfs<0hpR`dZY(F}zw@_m{1O~E-#fY#sy(Cjr zRaNbU-K7DU%42Dxs(haM^$~M!l;C3u!uqqQEdK)|e`YzeV<2Q3)xXPO)KI@>E=(`- zuC?Q^Ce~)@=NF=mg%5@#{DtOcFonr0`MHJ*2fNn_xHU+6$@l?<64w^>y80RRA1GID zBWTk$hcP%fKO<;M*styS{z_@ZJbJwuR=M7^9^tu_tB`2>Fox!@AK%IOuYYJX4|}5% zBeP*?aTrWfFWa6CEbyHnP<+Kj7(q%Wu3(iGxJX+?ajulLF%cr>-Rv{l3gnIK=Z!mw1GN< zUFsH2d?BafJO@;!sXO(N!JD1~cKFR=&GjiFHaPqXK?rzPg4jwBSKOt#&jG^T;=x~SjTSK|J#+3{XNK9a>aH&$smr!f3F!> z2!iRQF3mupTAn7pUdXo_!?;^4wN!kW@6qxgyc)e10s_*sxOtzQMEXb84ZX_dz8mUp zt5Z$+vOwgYeX*=S;JZ8QIrZ9c7;+Z)B=vPD>$5LzWI>FZ5PPl z0`tYnmlifu7|5c!q-!X$xHQBj!qnH`6uee2M?%vCkzjc>TO zDT#CvnuVsa8kqQfBr}u@j*PMA5kouK-hVpoyV-+-OI~IX7M|ZZ+WmOzpMfDu`l<+m zaToZZ%zX2K5wV3Qg?8PLJEoRcpE_htJk7bsuF$b9-!zmYjnSF=Wch~}>1m`w{s;Q9QSncKxe3{JS3k>tMSy{D4y zt8->S_P(3yR$Ajwq5YULz@_tULe++x$>p(BdcJdX3<5ohe_%E%VYGKbG}m?)=NqIu zof+-x9ml<1ula!9sz%1@8|Gl#)~9gpXfMDO4hf=xg$(jb*_+_-XzJ?E(Od94X^Ejn zvlP=E?^fY&Qttq%)TN;d1|J037+g<+o)og@DSX9=7Z6{17u=g#De>8LB(9C_&Yc!q zyK;LE2rlCTT{Z(oiM%y;$kodmU0Qd{RHb8}y_u#~$8)?or$v!FEaVzp!y!-=-s)y~ z{H`@|etX|%v!^a!qKM#nDf_8=tFoj6E;doH6n{2P^6D8(S~hNwM?A9HK(S#vT5F7* z&p^a`Z7vw3iaQ zy~M1RH zx%SX5XC(DR+E_!5U`a3OR^&5j?srsU;yf=Z?9g_-E=%9=^TA5#CH%DeZj;MW4m<7z zL^2=e;4#U`;xDb?Vq}{2i0lU)3q3kU<4=>YNcvXkC-AuH-l&^*k~c$BY0iH;II9>L zNYcaCxoD=Q<2K_p?dhFyR}VV0>}umsG=fZpNqof;D5*{RlWbB2P4n#*dl6(@OafhA zn*@)!#G$@2VNEFs)2;PugS4>GhIK_ZmT~)pkMl1oT$L3h7R^r*t9xapY1SuQCYaW8 z``#1Lk0_X=4K*GkR${#w9gy$&3kJ5g_jPu0?#jao?c4Yf14KRPHoZI1)={dKB5N&X z&HBDkRLu-Ie+NTpIiET7FhhEK)pczK;|Si`-iMj1AWHDAm*lJXWQDa9L4SgqMZ5x! z8%~-Z4o=RIZrZQ(D^Mo3LB1B{!JF-ozb?77h#IH>`RAkqzs1 z!%z(kJ49uuiN|)5u=QrxRQvggy zGjoRA5jpficR;Jb9d_SrwV>sqp6D%2d+UYnX;WM*B(}uSM)>2QkA)ZfaQsuKaB0Qj zb@{b@2cnxTC8eyTWfx(=u>35iVXgke64>+U@rt3>?8iE*ab&2>&vCSe5M61G&48AB zh;r(E^s4Zhw$8Xrp+QlQwoXT6YraQ?*_w8`J3jA&(zUE)^JeQ|?Bb7i`zG4v{{b|~ zOZHe?5&KcBql|)fGa=-Qa+Ye_IV^1M1BjxBe_gX%#^Kqpia7NYkg3?d?^hQ$9b#1k z)e>Zz7_C7P0PuY2G+pJF9*opDLnUpzEHD~rv@pp#{S_P6AZ~YR0nAX(sio3rG0%iw zHtm6PZXzrReN@`{0IU`fVc9ju>*)P6`@Q2GK{9zPabhl%DW3Z5?o~hTUyJPq=92ey zn>2^}LzlU8E;B{1=^+$k{beuyfZtgSMDXW1;HI&Tcm2|(kG5QmD)L&Dd{!$<@49rn zzmB>@X7e8;K`eio-?@0er2@!no3XItq&0E&hFm95`{4XkuSI+Bu5j{~H^$q4{vs)C zKT*Ey2|%6y0q@81gP)(m(P~tGG7EDN(r3UL@EQT&-2X`${3s?X{x9^Ifd%vB>{VSZ z{%=%SlC{PWU|;^&lFi%zsw12Je?aPjMLOrSVZBTMPa@JR<^Vp!pvmR}!T*iJ56#rw z`R7vdg4w{61-yxvw)kfs87dpVWAFa{i;PwLcRGOU|M!+%{GWmnt=F`tM%>B>o->$Y$%41v4Zc_yWTr5McfxKbe}wz(k1m?D@!wgepA)&&~oq z$qUT=2WC(9{r3MCs_5eR>@j|RepnUJg?B_vdJVzp%tY4|@yASxzzy$nRYqLx#9|W~ z=iHmkh|3x0MLa4W|F|k&tqY)La4Rcqeegm=^w|q#OAK1%lLCEtJNjT>&mR<#_1wA$ zl7EzI8XXa-X7cM6%O67~@DZX40GRsaIllxb+_&@=33zX#N_=Tuxfn{=`lDrkU88A@{m$w%jqUG2En$_cN^FZv_OlP%ZS;=o`U+A9H*^1wyd z@3@@#O|q)?SbO<3z_vTi0saMEAN=Rti^BCoLIw*&6+!YkuU|aN4nO6m{@H5s+QHi? z`~d}u=Wh20yN!xQ#QgIcS@zCWN-49?#eO&PzvL5m1bNj-SG4~;+a2C+_PSEqRu4q~ z%vIZr8HUUKHreO zUN&L?P*<$*yZ)cwtYSrIWRyzV-)?TE)rwB50B^8L^V>sh7VrIhC?lXIg z@X=@JTE*ZX&M^4Ew{T2XusJm0J^%Gs zzyUo;zI2dwvNhx>e$=8Vhr%a?QM!+y*K4cMX0}VQZ|erWucsE2lpS$yT<%d5!lZpd zlnF8??!~c)*kq?q+3xL}y+ZbJBZgnQD{Q6$}npzlT$RNU@S%glX zC9mcdQ1Uv8i3<1Rl67X9q?>`S#Ul4QFpkBFpkq6xR`NLi`l>2cmB_eU@;K7hnu716 zxESOT=%h$RIWn${RRuQ0;zu6$j}-?rT%%(d+Zxmjp1aZXrky>Voc)IgV!EJP6Gb?n z=R`BuKGZVvLM1LPsu{IYvPHr`rHYZ9nOWR$Z>eN%FQAmNLOuYn`pE_`lB1^Z5ZM(g zICyt&`yrU|)%LBP91X6;Yq2D51A+2ZWmPGbnk}~c-}nrQ-5fNrkPlb+wz@p@1z=bk zt)o{;_@z~qM{K*F<|k-K8v$?|BS5&uOrHFG$Cfwwz7d-g<#ea|dh?;9OILBBrRWW| zQ!Mv+s<0xF3TnSam@trZUrGGo-P+n}1Z^h2c8#+lZ6_^~RvS87=LfY%Gr_q4uqoe!A4vtSE68R3?;#0*E7tFI+;>m}35Ah=P9r+wD>-D|7#sH6 zU;6O2_Bf^K*+RE~21+RTKC4T}Gf57!SMTR&V4$o4j}GE%x%ffUW`3Dp4mHJ!P<0&+ zd^~RN%G)Uv8^{?MgmUeaPgJ4gsM9~*oVOGF=pwM3HeOIDkp-_!3e5eX(g@SNi7J zcLuC_8I=H51mF=5>-`Ss3)OblaQ_HFkoEv#%>>&lge9}(Uv(5ozRJ5h|CBD@gipR< zx7QdhMkzxy?6ew!n(NLt*VEkOOsvIoR1ON$yR@MO=krG9(mj3Xsrh4f9EflNvUAXV z^0Khgk-H`Fmohf+3%|;jzA`(;FDDy=>eVmJ)qX$&RBZoYER#6 zjEvy!luuTA^U4ap6@XPGkEcC+9XjcJ$b`7U8vzkJn28jc17Po@*U>Uc4G;p@Dir_{ zRMjn461Pa3eb~$E&{)XvXyxnqKDm>`xUi__BvY!RupR&rocnT_+3oP3ye(M}>^4is zLct8Ii5p(t=seHSbX}vHCB>ej|8~>efpaCrsModE!2{XHnL3{y`x}7WL#34H z5)8dkw@4eDMr(Q8aBThh+>w}!WwltVi<8#-yV{04n-er3{|Vpatt0U&BHS9AuMnMV zWK01gDSAKuY%)_xlBBsOV4}OSQwc<-cq~$oYtp_ot#+>A(|!5eJ)Y`h{owqH8uJIb z2_wdlambsz(v%hm9w7N4USjqaFpL2nlyRgZ;o#ObZQQ^0|Ot$C-1m1tn}vu+1DLG96_=KYEdturPp?nf$6P5KteEgfJeYKg&t#6 zcXReP`P*Ym-D~s!WKQN$8)3QvI(KC5x2>nTF)(cGB*5s@SUE>Ghqcav3JPJiV*`wF1ApY5~p7?c?n8P+%-A)5J3AQ|5Rab zsU-&B)R@xjb!TFJ4?FOw^&W2Hx$Vj-Lnq%IQ6NhD<2lvl@D-Tknh`T8E2+&zJzCb~ zo3S8#K`X)sSG!E^aa2TJFHRU-=G3HjSj=Sl+07wX8 zciWojCfDS$F+RRJT$=yDk)OAUcs`Hi3~w5r#~jAF`&R|#7chsa$KU|D(u1y9Ht4Y_ zwS=ZJU3erjV^rsK(@27x!T3|}9*p@VGvAuKMw1$<;8wWELm{D!gKx9@@pNkUaV7Gq z6OhTifP_<&F4k56DC1ZZvQ)lP_iv5 zPd~1>()_X$m;O@vbpgIk-C5X+@v7~BbNTLLvy*b!g)=N$mhnhXW0T^8I#|^m{ z7|M0AVc8Ma0Hs<6@#mc$eP?>%%n7MoV=$w=;2PNJ9Rpf%=KI?JOtS(^zqF zefxamP=fipEmf);J^E8udf1coT^DH!GYTorS!|@>!MZQ1UVu-w!@3zNVWg%t@2VpE zoW%Mn8YT+?O^b3hPFcUoZ(KsLh8F3Z1Syq@x~#b73K=#lhjH#&y#-0u)_6rw&G?8H zXJBaDBPM`DF3DJ!ysCm`*;iCJ&40ct?KLH+F?jEZVh*+ZbgvmiDWerW;|f*-w|b@4 zI|Rh1SIF(Z?o9az(Yw#^oU)vQhzdE&8-U(t(r*NZ_|Q=|^EZvvwBK&h(awapi>W{n zAZ&W*vdHA2&nvkyjlo3S_4*vO*M6lqQto6=r&sRe{Ql3N8`^8;c7&SSyIG43M({k- z5~b?1vGwwBUM zCgt9KziJz1SlT0r`X-dZuuj9U{MqG|7%6QqXSr-|sbC;aCzr5t@INQ;NFWI z!C&9mk005X=XWO7KYS8*{`w3>s>03#t0QT%S56aLhgkhP@1n9Y zvpdrFgy0c}*GLml5p3SOohth}^podI5x8c@_<>V1|Ictf!~ro!lKbdj zyIdH$^1ay6zrLue5eUVIzn8v*F~`#A7acJDUdoH_=+YCS>KZjsQKY^ zcy{&-cP_F_SNQ5l@lHoe%&DMaxxi!G%33@swZdt-8IhMbI6p{Z?6*B{kc59GO}DwA z2gs@{ibJK8&y&0kjyD|8gxacKN{j{9vH#Rk z;M$_6xefOGu*g`X?Gtr0-STfcrO3##^1$hPotPt48$SVX$@;JHrGW46Xa%}_r3a#m zSDaft&1N9Z;rGF|v5E6FuoQh3mG|Gqzi}o%-eR=NYgG;pA-)cuSLKw&fVvv$5}Mbg z@3)$wv8!M3YG2|*!U=OD0D<;I^e|%Fj(DCUB4$O|_5M?0m^q`Q+vo4P2s##tkGhKK z>hJq0Moa~2azZpxLm{P3;1rjcaPEtByQ6lRV{QrR`PO~&bCG?RSUNM$0r%N~^Er=B zypm0zxSA(9QC_6V_MjPd!b)RE$*A zEZfUN%9Ju&H;t^4^zuLJ<@oL_Tf5AD%)>Q!;Jje=m?H?i6a{<}&_|;28G!sDl!B4# z=<*hfSErz>X2b+f{s~#XG;?Bd-(%9tr^{RN+xSCe7Dj3ohj>r3PzUjDLd)JaSK>mt z6RKCM0ow41_TE0z2ip6FvD&_F#}^l|w8r*pe9<*F%M0m_&KvC?8M&RBwv+9F@aKps zt!N&nFx?%Ujln+Blp(B1El#>x*8I?S9l{DtKN>AK{`IC+c?EzKOSA*>TP2+uH$oZ5 z)x(7B^hQ+y1e`7;B*f8wAU^k5S-a)e;0U?LXt!myQba>ZFhFWDNkI~AhYC6$^+~e> z!BfSk;8Y8`DJX^g`~5)HE$C>&bEX<(J!slm@~?EWh{(vGz`UM1(6q!q;1yE(n1_>w zJxZ5$!jg||&D z&c9S$&x6ioHsH#q0o{gq`ma2kGW43sy^!w)>ds(B}Xkf;M)Wq#3fmy91zZP@9`;WmPzBI@7(YCU=FX+=(yNxz8mOvRI& z7Ya5S8L@ANj*29xOGW224GUQ28wLeI;!%#Iht}>()d`xCob`Tf^o7_j>^CSKD=OO< z5Gghozg>@vfGHo3GHFtO3oq8jBTY>ZB~tHqv^~;!z*xpIIs7zVW@l0X5F5#P9R3Pp zaaOQ4+Q3!=f*(Z9o%z}cC*a-Rbj04PnsmW-78hnNI70X54Qlx0wGY?OF`xW;$DY(w zK+b_ZaPF3Slu`}n*#yoHS};R-kXS+Vq>N(?pmFRJ9WkToHU|V_mb)?#7&OBjG7~ce zo8JW}f@?wtF_R((Z7+{@r+ws7ju(xryFT3Vxm>q>WA;nXWgu|eohSb^SKJ9F&-veh3p`|n;w(`@TfFN(+ysLKolvJxz**GP#Dl`mR_i?NFC`foqau-lHl zu2VzD53XjKIz;`vWWdi8TZ>UoCJ{Nc_4{*jA8F6rd}Zcu(ab!^2;<%$rhIdo6C0T? zGU>WD0mzEZ8*Six<_a_VVyhYhza4}hZhP8FOT09u{Q=@^MVSW7jdU*+$$M+{AvJ1Lhz;N6&Ag-p-{=17b;Wtc79z`Xbl zL^Co^uz7AKafSmvakv{oSI@=^zX*1XSCm}o8-rdN(tkHUB>3c@etX0Gcp3|@rIed_ zH|D&UVY%M43&Dlu+Efm#q1V^UH1k4~{Wk`xu!8uA7NEpqKv5X$M}7dXJ2caBtkdPY zo&o$KL%k{s2=p2ND(Hl13<)YJWgV{EueP@e%MXd9J?-20*JdcWpW&O#^@~zN_1Xtg z^ouc|2o1bb@Q#UeBx-h<&VGz*oU{2cvaRX);I|eEJ0 z_uG|c4wnl{riCQrgmtwOXjw&-Li7a<-UDKo01;%{2Q8MjL+7q0RnZ5Q^VY%2g)j$v zDN`0$0XFm$4}sQFQS7v~;_rQUs;NXA;cqbGvrSa$idWld$* z+tLC;?NFi9^vi?Y)JH+fS&e~B6k?;S@OSM1VJkH@${&BQhIR^C{$XG)lhV8ukDZH_ zT61FxTuEPRNjA3s6@mHMGMfrB^Ho7K&Zwr!LH*xl3F7JWdNO5<1yOsq_kSMUV5|E@ z$8Wn^n4lrsNwHgyQ3V-ur!%muor&PTgq7ay<)?%+;r_nf?|<=BD)8L*0|(Be>Wp@&(9d;(!QS zNbISb29)zh1ahk~DIHS^dg;f6#^}yh9lBnPRV4jL=kA~Pf=b5x=Y64B2Bz+M^kViY zKnDYUZD)y58664n9`{W6X!>PXiP0gk)~2Z0m$cDN1Wf-@UD*0#lVKwtrseM_ozHzN z{=ajgn52er{%fd3lii%(?>y`(nrf+O=u}SpkE~`tiX(1w%gLEXKPFx|O#p+|RCNlT z$2E7d2|=%jVs7$f$TjU2(i;84x!wPWd;to}MB8pH{jATWq1GGu!c($WRM0Z|gO)o* z{1b_klKAG)_4MXTlZnxe$3>PL6H>$)_)G0+)J8 z-3)snEp&44qA+&XL>4#^hNpktmo6@pG938n1U-Xs0Y)CR*#102QjZzB>MZeVPpb;| znJ}MPm=zbAs{ofd?5_SoIE9*O$KRG_16>=<%l!_A1dRE+=>$z_BP(N{m{DWO$3MwV z3wur`zi$3=6QlaA!|rLF1>?%3H3N61a?)b_S+~e%R41uLV=^LUAS~~slVmIf<`_l+$eoY-qofAI)7O;k!zjCvm)>nrset-;9f^I*%{Wx7W3|!c zA_GeZr{Zb|yeGh83siTOrA0*`p#9k+v`j_WeQoZM`{uUS;Vwofad1$Z zek10V_O#nHa#UFWLm~p8@-n7$7;GotwKleBIgqP}AX77^!@KEG9UbgkV>YiJ(yDXB zS-x>8LSs&jr3ix7UK)^sc zn6gH~s14Ac7?}l(0(27}>p%8r+J?9LRH&%zQs!ZxnKiZ<6Bj`xsNt@;=dQex_kL)&uKCVkrobPzW;Ny1Oqa#B{PHHSA-kGpW-Wf- zAPmh-B8deIf#ru)*h@oH+;67B)-gwdDLd%>JsfmvQ;W(Ry6yhL7uhR`??}*;y~q9O zUE?YMuOaL%xOsdYX6%T1IZht(9T2Dg3Vkz#t-!qT&#*o=Lz#s|GifhS z?1Z))_8baQY%WsV9raZ7`uBKedktDJ5`I4dN_P54mozEDTg!IZYFqpMl%5-38Hl5V zL4+xK)q8sMfhXchasIP6tJM{WKn=XFsK$Y~s3a+!4pE7KsouxD=z^{D!r>YDZq7cu zaT@V;^(G5~n6z%NbM-gL@Yx2ddF@6eq149N9PRHp>1BIA?$GZM?sRIFtzUW>X+t}h zW2&*WY#ZmYLZx&|y9XKkYJ@a$IJRh(*g&j%CD56sZFWI_;6M&g`}mL60P2~30%@j3 z$-d)h;b->|Q}Gmk!jF-l=tr-n{SO@;aEt@Wz_`JhH-MieFF4s9REzJua6=l9f;;Em zg)IFN_Ht1ahXW|JbPDwE_lL^Iw}_qfn)$qYEgzarjxXDW1rNRY+7|66RNu5xQu^1B zq;3YKtF@wjv;WZnpfAg$q9!eUcGbeB0*IE1!yZ$rKj~L{6!tA07w*QaN5i0o1`9{# zdiU^Zvm9bntwBE}PMJ4CeXcW8INr9;jApWvAzT^BJ#; zw}m3r8r3bvn9DgaNJFp?$#`Lx`94*hv@TagT}Ai0>@%WjM85j6G_Tn!ul+Z>*XAe6 zd*dW<`bmafMy;P6Z*53HY&dQ1NEpm0-_nMFpKfRwnxbiq7TK#09i`NC?3Vbz7=fH) z`4Qzswv({t$_ZvfI>8=dbY5qp_=lsa@UMcQ)S`9SUd9iLBj7j^E{OO7S zBUkOqq`@J!-1k?j``C6Br8tiE7qdE#oB&*AS1q*y7gZKCe2UuxI%h=H#|q4`Bv04S zS8mJ;N`VBw+L?`dpBv+?j`$kWuUI^?$;qKv054=c+4zkpDfHIo8@KF6xTfz6Ro330 zAN!8>$Ucks?9ao3mVdQ`aj*L*p7J3~=@e% z>KDx!?b+l$ZLp+DSyFVWk$T@+=LP0oj5q&OFKEQGZ>5%>@9vY@(3wdbTC)bJq*I1p z$a7BpJO!*gMEbX`2>4>~2z)ypW2x0{ChUW9hnHomEAHlf$gS?ps1izk+B0YA#LF*V zWkHR0M9fb9s0*hu*4WVUYa0IbRMZrD3Z50ui~o*Efp8O{Wi>tnDtXb7COe^cMDohy zgM(zg38&`=dC;Mry!qI;um-ktV<(iJ|G~cXm~VAYzHyz^JiemY8T!reeUF9|frniw z3N#i<83)-GHRxO}%=qPq-*!Y3_|ly!Lwsa_hAk?uUVMt{=&vvpfB)9US%9GS$-5Ih z12fK{0*xefaol$rjPE9)&gCTKa0tTu_WFr5K8x6LL$0eYeDT>eB&DQh{wXXXZ26lt z_3^9R#*Kw^M7^r*xdE@mELhd?6#EXORb*u@K{F0Oq4kH&tQ`OmcBJviI397WftgUH z_TzkWv){p`q46grMfHYaqc1NQ0Xk)q%bc#$O}i)y<{Fy~Hi^BTK|x;QX7D3TQJ!@6W_UnL==iZIj|{>KGCRW;*b_E!}=~3LqViLmGF+?Y>mCc-&o! zi0${abpcJQC4&ZcgQs>9^bW@D*g6;Xw`2*u@bwF7pfP%?+D0?u+o}}=DW!^`);_hi zy7~XZ7*9=fnlv*(C^|LD{#j4(JL>tQZ;e+mQJTvE`E`m675ARXPPbEV32o?%mD}0v z&sK2$5G=)fjK5D=#g@O%e?2KH=CQ$e-=5z1k*Er}>H=VU``Y6L8Qtr+C$xg%FCrQQ zxc7l4_4f+r7vyuSi;6PGU!f=U;0B%7o*6Cd3eE2}r>ni{JkJZX9kifS%7}YEtFTB7 zlHj60_x)06zg8B|pEqg$*2-mvhffhS0M_1!3->OE9@sYGUnZ*G(gOMiS}&2p+3B7*cr2Cp?_$x{u2_zEHn3+of77=)-Zwd z-}|LJ+3Eo_=yYXxO!2A%3QkIwO#$)F_m}T-0GST@6bN3sUBKiAn6*C8N#xpfbdc7( zvtmb_@>xec%_~Jj2&zuFU!y6MxMP4`nB=tY5gkeF5u11(J8{4GbvQG8$UBSEhr|(! zDTC^#XWglKG-*$dHitQHGzQ0?WIX#{F6_S@Ti7ffY0h(ztS7_#9krnB_^Z8l29}n) z#>)9_SaCo-P}=S|@UB5%f~)jA2Y2#)O4WY0{I9v3h?h36D&7lY`fl>_e^hIa4hgsF zvO3Nc=H(HJ`>ME!`)wazZ$tm?$+CsfBtYyScQyu33b{=RIrNy-j-&DG&21ZBcMNOG z=Oi)5Pm}|yw6fC_%Aaf0IcHzt{qZeapkl9M$*x3EdFPiiOFlo8obRCQrb-2rv~2C6 z_3PfmSB1U#KvLj0x|b@&BGh>8Il6lpZe7cWQI2#Xn-h z8pzcQ)*224QJc|HbAXFcO)YE*B%s%2UG{E;sg>$48}BoD{(L`((pmflS%WY^d`rt} zOMs?AS)kbyZD6#Xn4lSd?048DvpdNTlu6`kBe|IX8WazFXXlY8H)uaNF}#1>y|YuK zuW%jqQWCS`0`wlk(Ca9*wfb2NuZ3mnlJ03QSjIfS2gJ|&2$)-CLR=X9hCVvlARoS7 z)AaIvdkPc85NgxZM)Hn@FjUZ|TnXSS((fa;RJCnCz zbynNWtYe8$Iao&Yw5H*${|ts_A#$wEz~7h5Mv%+1hr&1L5`|kvG#>-=>d$1g5hfKN zffWHUq(QG!Qse;~e)wzD#qif3jF=fUk9Rnax#tgzKh^gNnX!S*sQG`4l+760+G`ch z(JY`5O5q_m;#!@gvvFi}#JF2r)`+YUu}d{S+fBtH+&6sLrSkhs-VT9$Qg%VIJpIa0 z!-s_z+zFl(O&CWP-TIcECXXpTwY-rjPyQ4~l~(2E-*%={C_~?TRaG^sjd(U&8?BIM zLAT|G4=z-Mavx!=q};Jq;@?dLE%?E_5YQ~{3~|!Z=9PeNLPxXj7FLI;A*t#3Nu|w(8G>T)J31F zI4oDHFoAnu%g*23_7A?-s^g>7&ohkwOT$)N{Fd)jR@A2X$zXPSay|dBscf&@9w(`J zu)X$kK|Kovq7^_q-nm1X;(`hVy&5*r%x|=8&m(?=5IIZ+r7T-D5NbMzNbd@p*V&z%qVx*{eZ2^81@r+@YVUuqhi>9^LJ&8RJgpCcYVg?1!=iwJ^>h$Oz_ z=76^<>c8A_p`GZcnPG>wL@&c@x0H*3jPg{=eoI*hRpO2x9;`4oFBUL`w!Y_Aby$+i ztohB85y)_St}vtg66IYU_ne9TU*A`rMt*jaTWJuoxua#BNZ;hJx$WxI$z(j`IKc^8 zNra*0-X0NFq}A@K*kp1BfB4^d;lGvwsV%|@d#;0N9M?`ByE6EN+w^kI!qYH=M`P5t zmq}lOE)@_$zrWb>LGnh%By-{1@6-Z9%HGKthVn)KWs4-H$lG!u!d3@Qi)}oqoj=JW z-zSeYpcdftkK{YYJ?wy~z8 zcAk_UJ^iZZ_!*y&&=AHP=R#X2xZ&?I&^53&1kD{91xu-))Tg+>@0>D!cCkyW==(%e_4e?@835;8ZsEqKd__H4h1tN zmVF)0WoOK#Aae=lghp|?4rUm=!5UVz#Xmewwf2wiDmeNU!{uf#F%eqH5vO*%w8J)I ztlcrZouKFc9Qyz0I`62avgqHVj>A|{5fBtmq=+;{1*s810Rti^B~%d*5duoDi4Bk< zy$A@Au1JxV&@&21iF5%WK%|5gLP%%{3CTM+^IPw&w|;ZiQvXmd_ujM5KKtym_vdT( zAEQT5oIcrTq<{{|bl{$45#6w|wzjsjtkf>}b z@v@c;I=2!z7j|*!9N-wc?Bj<7@ZPSYBRhX?%Nr-r+g?fdf5i_md^g_02U0Mukfw4S z<2pP#cCv-{zvi(Aj!Bhml5@t5Dk}BFdXPpoxGoDLb&esgg1pup_d_OoM_xVw0^KOhz zyv^4LaimJrnYv=VTPAJuo^03?emjbSoLusY7cY_+lk}A6P9?w~J_FmoLQ z)aj;8Yi8{KzFuG@S~32J;C$Sbhis_~y3kz@=L`;w!qdjhbuYhF*Yee?0xBtwq3B>X z9eX@4h0)C#UNoSMjm8Us`G%b^&2AbPN$d{=~ zB0R)u!qOG58c3FU6#cE2=$6Ksf!vgpcI-fT?<-jeL8u$rj!eJKkMM|vWLYbpvg0*& zN9bJdKsFf|ibDR^kBopuQwH#d(l{L(RD9irKZ{-$4R4MWMzDPG1Y{$6N`mX!-fg(c zc+s6+?>b)>GGbs>?p*x0yv*1?*K+9}%E2ssq~jC;VGGDVPTz0D)qW%8^*%dhYx-nf z#5lULRkrrnZT=CoTM#;Hdx1BGB;`^R@Q8KL+jp zIb!oIL5jVNj*+}0OLY)1-1?wS5j~1H)^ zLnO9h$j-cWWpL3owl|fG?#7%Uxdk*5W@V7Vp#Q*S_$(RmYHV$8NkS1mo6~Y})#M`& z85As1vdDS(3U7_aj~N1zpwK=a>|CTjq7?3d7>MPlcXcv{5EY2;o~>|<9CwaLU8&gH zQQ6`az<0adBBzbO1C<|vxd+1aMV&VBA?PNF@UiXu{4bt-u~3KntcZeD>!~7jTZty} zr`Eoxtnr7NZHah^|1}*Ug&6p@3A%P|oHmog_dm~>D#Sq;3JXkAecie_9gGnbB;y#XNP37D{xb-P9`UD@}Qx8ZQiw?;KrDIUrtP9nIaMU_32j}gSw69>h1rh9m6EL z|6NjQo6~Z`u{7*^3x3&thj}Lx6KhGQ4lmp)FT^3VgvMJ2Z}NU*ep*Q7Qdh`2%stmj^gfuvMv;OCJ8iRW&)0 z(Jc7gvh^h;>J+rK-!!GVvOi~vG#X$Vj4zNcWLn4n6}cC`j^T?8E@q_KS%we6O?Qf83SjKduzIiQm9+E_DtWr})!) z;-C?tf$~LBl+ow9Ej(qq|NDlJRo6Pq%$X*s9%~tPjmo~XY{$4i>i$K{`aacu#=dNcde|sDdUOlFjQd5pMJ2fL^ur{U^+o4`*%-CMX=*V$rY5dowUA9o=A78tUVz0U0?iD;ldS>A7^V=7ep< z$5A?!cHbuG_J8OFnQ=(VON!Q)|~pQbE}+>G)(RkOyzN=Z`1V^d$I`z_2)n9dFj z9lsL*6ZLg3-zLAIv>>+#axMHnd?mzhiuApu!T$qY>J)ZrivQ3QX=Ch& z7uEk38%KljLnL(h%4Dza7cd1)Td#@O;=kMJJB3mY`rJh0^e*MYifnQOb_ zPVQKV9s-fY)YT4v5g}$=?^VhxKP|bHb+#COH{E^}mEbm-AfBS744{l|; zIDdjYxIvMTme$v=ItQ_LknM0-WmSG*ZF}t#OEriLipcg?>`OFQscADW?=lfKyTreG zOgEW%pSt~raX>n~yrJ{b@PCXC;WE|cPLxD8y-u!tJnF``*ftrp^T|QXA{;S*+RRWO z#t4e9I+Q!A3t+46HAfLN)LC@7uyK#n4-Br}caMx+>e2AL3o4xlpN$=fVj`1wwF};8 zZH<6NfDt>!uFMg0xm!)FlrYXINJidF#ggCG=ocoE7Rc|9NLMNNDp?^EjdKUmXUbdN zv{tnwX0Dq){nJ7=&Fa>&u42K-EJN|19#Nv21H}&n#|fTgz4})0wsH1+ny1smG=`o| zlQztH{%~J*BxB3}yj8&em$Ckzh#hM`ZIzlGO}%1gTDp2bW-2wca0cbQeHzgqhRvhC zh`E(uDSmvWXo@dZi$QJPt8I4QltG{V;+sUAbz>@#1+MJ6=9MEHYl(T#e&w_Ph-cc3 zRmH7ZA@1Td(JNeWpJd~+hY>Hdr;;;Yv52e~J$dSxWal^1kbnpHBV|`RjwvC|Bud!I z#`B5?CFq}wqDaAHRqjexJ0xaG6o%@n_MlyE7&FWqiDWOB3$gbJVyaDJ$dT2s0(<0w zg8qlcRel(3H8EvATV8zUoJz2jq5xk^nF-B^Z`a+~h)s)xAo0<`_6IPQXIWh5)O^Tf zP9Dqgd14T&LmhUNd-j3((zQ+m*ERWp=>j;uD&@LD56@`~pe#Q6bIl+cFeUsBan*Jv z2&Wu0*1E1uF$xZE&3`QO*lO6Q=mb8?(Dg-u`m%sht4+7$yMwfz6-BfS5{Bo&Z{Ejx z!#p^w?e#=`cGFgvV8t?r%(_dYY^AJO>U3CcC+{NYjMhX6Cu&CE&PdglR z^rr9H*447N*YYf0_zw{XT85XuqLC%I*^PWoY(r)A7_!vopF+oSM zFEAH$sl=_d;>!+uZ=f?zPagl|=33zvXYFiL)%29nf(0+m&$c);{HV8 zSnu{L%)@))@W6+p$2ZKxmTdQqLLQ#e-5n>xdKD@m_rP|yBrEn0tD9iq^lTfKO1^O; zg;l;Tb4(*y|0wkO$cPKux0yO#QTn9AXep`ofu!1j?{xjFBzpP>YWMvEZ9F0w%g)79 z2i5k8AQ#gD(5Mvg{cWi;S;zh(hFqAk8ha9q+tEXXNTU$Ku)M>~S6tycS*E4;D zvAB32mkP4Wmt^;5_fL@_W$kd-a%WFABS3{i9a){5BY?AmXi)QD2*u(K?3amoIeN!6 zAXs@<*M9BKyX2l_b!9u>OOoR3nr2huSlow2pK=}Q=zbp=dh86sq}?4)W7F5zci;%c zwx2LdbTrZmW*^_$dtL0%LW+!>p`_1)2X>*V2j5A=xY>QBl1E!(O^<8BY7?r-=r*F1 zulERTX4|aYF`_Kei*kN{CLm6|40#I2B;w_bBypXMbVf&;RVsb?yYhcb!Fp2Nx3U^A zfB^v?a_=Z|@-W-1yH_cW!>Y9B#Ghkq|Gn4Iw*jDSq^UNfyp1w$hA_Zk8377bJp>+z z^25zN*R-DyF7fd$GtVgmln`1~!SX!&o1c3}YO?!=@3&-$tHt-*myIx4{m9^-aE_ZI zQZ40l`73>JJ%M)!HKNJ*z)A5~bUpfyXd3SYU%b(;pJ=&{d8^(b<1rGEZgz5v83F|r zF$+O(RP+T1BHaHm`!XaE_V)IpbhL(*RMCm{pKOcrShba`8Y7Iy)AiAm0Wy9Xb5*G% zbp^qQB@kjbbTXPlmn$W!fktn`-~8T1gG64lU%9MH`La*5BjP@Y$4U6eE=(C&(OMED z%q}}_F5EZ}%dcQ73r&%Y-|56MHjcOInX<5sB2w(Gew;@%IANCsFvY66g=pTYw)4`MH#h_Mt@n%P6 zP?--q_%en9>SAnn;Es_oJCMxrI-kTd+F>=0|91JtkwDR~)3<0r#gHxUg&!Xiy%+jh z`RriX@x<;mOe`@XQNQA@HL1MSjxPVOKGxT+uQ)k+!r{6{$7 zfe}Gx#BLqfSM5Y$L_&*#WkmqmhA4I8vP!N^ESo;fllpc6k16}N7@})%rX$g*`<+UE zrL)m*j%m;B)9nTRL6Dr(qr=TjGWRU`cdpjV~M?f$CKaklgvnWBLz@IRv zGbF;k;}FL{#%j2Gh?Xd-nwKu2$Fk^58Jx<6RX)@&vu$)tb4vNQ;plxW6C8~@j#jzs zl>64&kFd@R6kllfbWd?!HDXnM&3%Fq=d?i77)JHyVTIxjQv9R(Vc=n}#7ph`{(j$n z=rxNk@fEwpPRdMJs^Wvy20D+4s`iL7C(!Wmc()8CLW1OuaWGcr>d`-TfXO@8`}|&O z^SSO!n==W-;bOgZ(UdNlM~cHGw*GTfyE&L~f{$87;y$+iTGr#&4YwMATlDLwiFaivgTyUq=NZ9u4Vt4; zwgVhWTygt(Mdn0B&RHj$nBv5ElzAm9!$*;}>V*hDi^GnfOMZ1Ma|7eq$9@6+-<2tW zQ_@gN3zO#kku3i16xlwX;^a!cGcadyJh~!#M0RpA*46IbJ#m|Q-+$Zu-%Bh4uqU9Y z{GIuBZtjPyQGwKaX!!3Ra~iW-g6JoSVY!qZ=Phw@rjO9 z6ON50h_K;m)1B^kCD!_tk;(3w{ye=35N&C!eJ=y8IodmoH~&`kS&9jVkzWF0>as?l zp1s!dnSfTUZ?}I|GG*$87WTd1Yc7U$8!`sW;vA*+jp{!`XvWIxfzMw+CxII{cD>oF zkdP1^Hv=cVcI?;>q1xl{s%DR7F!5$}aPs?^{b>pNjzXg?#B_RCperPI=VO9P&baV) zrlY>GajSk{2lKpIg1N@gUUzfr^G3VZRy|bjW#GsXbBw+E?2fR7-)}i6eZspx!sKa< z0<}$NiV|fJ(CVW!CVG0}6+81->|4~vC@Jj7FyyWHKsDBu7&b-yMR#m1eK&f39DYXLC|5uNZ zKc*shyQo;II$G*V5Vo)Zv2o3H<=J+ZDRXid`anzs+IZLuT|@1KdmtZgv*^^v6}DpT z4GmLul08N<)88et?yb^uHk#{8mzn1q$i)QZk!6oPNV`G*Mz^N2BD=;Rg1PC0{2^9| z>D*j(I%RdHp+@o&jdkh6d1X@(_2?N&O_Kz#->g)M!a(=U4yM~l)iU*?XCY>c47;gW zeX%nMZx#4#5+iT%-u2?wbL-Lg7qsvw;xf;WGj+P(*;sesghz5si3++wr&M-?dM>Td zt5!uu=vKk2E1X%A<_ISTiGUm!rlBD?LLjxi%C?FBWbM6R&rrwxCac~7jE;bgG0z6s z_%>Wm+@2m)j!iSmr`jm)hb#v+Fs(nyw|Gq9)4JkJxNAkWP}>^|1=1nq*;QU!$N;tY zV4FwLso2ihQAyVoHk#BveRM=!^CO=6TBwnbFJc>;UYgp)RB!&1(G} zJ<7K2TGNcZLz*5L42jj_Bivl!O=^*q!WJXK^`e*hdYuw=t>|yg zQ@^_bX&Z%$yvI*TMu)mXJI9lU5we&L3z~0BHOS}J+8z;0+4{@D1^fBy$=AO$rOIcx zD>}0zQzL#}8{LGq@ZK3vD7L6mdoaOct3=YD=c&6a+R%`W$PTxCZIQkW#f(_garyWo zOr}Oxc_(^a!$Yxg&B#|Ri9JU2SeK~y!Rcb$>NG(Rfw&I2T7HmJ*m6Mbg!*tmwrfWN z>WjlI`6HX9bmnYubC9r%_~*`xCw*=fjH6yoRxp z-PFh7FAn;f&F{LVqoCg)Nz)srUJXH+oBB!w^Fi|6I<>E;w#6adj-t;O&0-1Wg2SKc zEWS}by|yt7sHeyFHEKBYVIgV2zLuN|=A@=}IjvqD2nKB2^N}yc#u??mRz;4BNyx;~ z5~wz3p3*jT@emT3rSmmcJxecme#Gn|H2U7ba-0%!cTP9 zT8wDzrqz61XP__2FSBdkymYL_gAA>P6^DJ;tYc~2Jn##(a(EujX>EFqiBLQ~>GgDB zHqmuUb!eEHUWL-t$9A=IQNQ;X{g^g@X>>6g>gMXcwYe$^`>k%Ad7C;LBCe-0v{GOi$*F=&x#)4Q`swGu4UZKfMI1vvfQz43OTsgm6N#Hkb{i z1oP?ugcy2|i!fI{gT7n(saQ&|sqDN!`@nEtqg%&xz*CCYq-%+91t~J3({-O+TOy7* zY%)@MF~DY|>0;KgvRf-Fhi}{(N7u*TeLT-n55|5TtCu&L5VbZJMK7|y$&}^t8;tb$ zw;&!`C@W?;A`q;$d&@S^7M~xjNQ3O*^3m<6QMX6b$0*Sb8Y4p2+IgMj4;*3*d-a&S zn11bHvXxC1>T;Ah>>`n&kN7|ywds_g?c>45#Fsg5eO}nSl*Q_&E_-8bI`~+ml{pz= zhmmbtBdNxbqxvWFBm&VXQ}(Gv)=0i=n3#RYZp1z$qxOpvoGf1h-A-U~%EZfaI;AM*hEo9k4 zCUFH(Fi!X|Clx^6|K#g%htoL0e}e2!LnAW>cjn}WIf>>y`%~UHQ&j^KmkIYfAdxQ# zt#1W#a(iG;!*%>nuy%=2W# zrmwxM(WC8u+WViS$j_h1GEdW$k(2Y1Vw=7bu#hJP(z3({mYs+l-gaZe3DzWj?M}{w zZ*z66wWI8#BS&~>Q61Jc2%16XhcSD{rg5y^qB=)aq)dH9y2DjXQr<*GI1PJP_`89h z@C;-6W9t2^*FP>JGflIUv_;f1SU&ee>d|ekMY3@Z@!7)~)6{{a?Kg+x10d5^a1PEs z>S8RBBOg88B&VrD6f{!y+_DX`Ejnjn&Q}&@#m)iY!sLkbLFF(Hes7Vh6IACW~wpudXYLREeo}R*rKe~{Gf-}F59#< zxJJ~(jKx}1(9Z=3`$PocY8>txw@Fk6V|6uA#)N5K8xg8%q#oL5_ecZ6bYlR?d4(2S zfA+P^!T+Q*$uUv})bo}x{`AFcip00@;}?y`~JxwOKR?3%myiLxqG{qKj=%^?)dps zVe8={;vtpg7#wU&6|-$y*;+n(q^vk=Gv%pp)B`^4kEY(L$I8p+#s%+gaU0MyCQ}S$ z?-nWec%BSMS<$n0d7L+e@^o@nF)T_-aWOWTQXLSj`0c8>t{pH=`7ZtVu;IW{r-%j% zP#?i2;Y;h$- zB=JteqHSC617o2n=J}N65P4Vw+eMROOxb*GdbjkY|H6)kMm(%m`=UzyLAuj;=eas( zCy>9V+mqG*B8R0T_LYx60Qu`D>RRa=FWSK(z!Mu5smsf2DYt&h+*WS`$ghBj`j@o6I*qFH$Yug@!CQ zXx(A@=?Cm=0`ePX=#)UXc6MvRzJri6+4=_zO)UD111e7F*KYJo(9ki^7;(zLy0wY; zh|s9QZGbBL$6TtsQ|{hPiK-k+n;2rH&2|_2>y^oI3RaU)Wdl+2g}8a|tDJ`_m=7#b zupLs`58}s{R2=l`fAC~bIV~iQQWwN?Yh!VXcmmmC@bFycb*jH7{LpD^?R?d z^JC=FX2*)3>8VAB8?h^|pTVB%@X@_h>WpLHEX>c6ZkI~^VHuyur+9CM8#8=Ty ziJ=U^2y|md0*x6EumN=Ytrp|hnjpl!^O)_wGW10+kq;5{5c=#K_E43Cmbc}waiCHv zfvVil=LclipbCTm3B{Dts-b_iYJe5J9 zwxb2QIXhdTmxsar=(LQPqocC{jB4y(?9VAaXLB?0WJ=X%as8_ilRU!(m@8U2#e7wn z<3ygee|yra?g8SFywStVX7JU&?$w=SWmJ64e!@0P1v|{~xiZmiPUva~_$&**!HkNu zaNX6O=!#2aNrd(G{fXWh^>k-bX&LK^OT}wbeySBSVVNaPRI)6HyAk?F3R93`R7oe0uxE8P1ZF%=rrDcDHWIuU^vEuV2rD*3DyQ zgUynwU!dueHUHfF8uYm4zMh_ZX%fP*RuRH^h@+EU9f(}Y!M7`MKwuiT4=MNip7uS( zpW7kOP9qCC&PwKylXg`o*yQ6OR@8VTI;C_DlZsC1|DSu#`th3|%0yQB$Z}@=#O7XI z12;OfLz}#IlfB|Rw9uY#7-1hLA>kbW^|w&enL7#fJeOG}VCZRK<)W6+X$f@|5C;eM zzpu|#pFtX6e~%=mfF-XtNF=z88!#ZZcV@}p!#?dNR5&*n!QuJ3sy*1SJ~1wV%@ z_Rm275jKIYEKhplL_yi-<17vSx!e2viU()0z3t1xE^>MmiLBuCy9X3pH?8K*VtErF zYnJ!e3f5KN)^UgbeQ)%4c2)JmjYJ_;g1c3}*jTOJ9KK;{YU&pP`hkwKJk}a3s+sXG zPF7#Arr?CG7WoPvrj?8gr*D=_wU4J{YkfSIW7&~L%;To;3?&$lY*M5vxKTyPl!&0Bf?52gAMRj6bo&yVDS%cH|hj?nZ&4D@2 z5}NP&&b+w3V=L|L9+)Ko5e7U>F5qZ&Lxrp1>sJRN6#4jJIjxbY;7tDa)tdl2{C)pR z7AvC*nu@F}C8p6l5Vi^pjo!a!vcYdrBte)~JWWkFbPo1B&ek=jIqX)Ycvz-BI1N;b z>ZH7ykupn?P-D>p`33&D>F3KUYJ3a^CLtlAilN*{pgcIKMc5p)VqSK zX9Uzf0m(c+U%bL~+G@xo3uVL9#)4PR)827pcjVMw-hx$pQ8;D7_NS$MSZRB+*_LNM zblCDn^%L}^O4$^{yU+e{W6$!R6A3x{W5EX?c6*P2yV7mm1S7iT-f=3&L>X8Aucey( z<>+k4m~JIKd8A~=E38EJyG$D{7Y`%Mjy!m!c7EYTy$Aze4*z$oK zu{Z@SrBna8<+GIUAnnFe`7VQI^an`YprcX9N+x)2zT*qQSitrmu~;a0cp^xsUi0~9 z*g|`r(AuImc||9OdNfaFby4zWr1af1WE{bE?3cR>SDmc8R1sF3h zZoiX3Y5#h_`XeJFMw0=P=pHs4Vr-9rBWfBeCG=UPP;`jg?f#U3g>Rq!*|&08rh|{z z(>Hhp91=A%Fi+S$Sm1Z{!q55xUwu|>y2Da4yr;OL^oCiUV{<-3fKMdcHc_y%dzOZA zE@wqm#~1ARA5T{Y?zCJfCXS6ehX)3_gzjt(3IpmIGT+?z`Y$;ax(C9; z-;ISG?%tU?-IOOYesUQ2i04kx(T*9tkOUs{--$E=yVKcSQDN58nQ+FpASu&_C?z3# z@d0kJ8a~kdorc%OSEQ_bc7p%gaQ9xK^6-=rytdMf=HUx=E*Y76Z>2eNsLOxtxTGDL z>uFbnaU6iPI~xl^EnfAMRxmHe+dIPmcLO2TEMM1v`uW+1)$;Gq^qRPcfZVMnF7qQ; z?O?WsFcG48f^Rz46*23DkCR0U%jgKQA%l9vC?3+ z-uwn}==9*6vNgg`P$i}o7AJ~D`9QF9o~g1-eT zy|GJ<7VpuN`IWX9%;X>d5{{_@2M@LW85qc)jA~fv`9|ycL7TQpXh9Pa&*y-EmQy5JN+Dny09m zg)76>+JEwh06)ZKQ3qpp)d?(A+vyw^x!Ki&9f5;5z|VAlne!@`A2z+s|Bsg)tk8MM z#{-LxlQ@$k0r6Im=tV)W7%zQ@zc`eN7W9a@k%h$Rh0r#@}r=*p) ze)4gna7PjDjtsA)W5tvuDOtR*KzV| z=#C;>C*XKwtt&zYyaFcz1ZuE{?$vNDfG0V`{_`r+&e`}`(ihMuDGNAYFN4?DhiPPG zf<6%DaN21c0dxdYGrN#03jhT5ZQZ$ROB<9|t8|zZ#t84Qt~zQAo<1#Cr_DRizMb^w z^dp2Q?3_kCkHB))wu67fheLs0U%uoTlbYK?NG=M(xW}VFgwtEWU?|taRW4)Swxc|T zQ({*SM0?v<4T*YorBp7@fGVMNIBZ81v6rs7y#)1ZoT%%PGXE`#+1@@X#}t0UQtD3m zv66ZT!7Yvq!0xRYN0Uc4ST7`@&wl#I_wTVUL{W_x06R>^={ z=)r!m*FBJ!Y_`992EP25#sJ!SsLUe6zM zlsA21D2{b-ggX6Kv+3*t0XAFEr`!%2;@}zU?rlhz5B3EfUBtQvql+LTdsk!DUmWSnN=r#A9to`f&h%LaPFPxs+#yn zU}w)D_@>wc3AQ9`Ics&84dL&UfY<%PoAx_kFy;ONP5w+!Gw;fq^{xqNHcYg?ch#i^`u^P@>{ z9`~oUsew}Nvp1Jycr?~ta~axyf6H{jjBj|S0x%V9@p|~dF{k12arDORhO+1BLTEC& z)FHysW8B9HK&^P0ek1Pgxwu*dDesvD;D9IV=+J2%uE>50+rr zfzr5bCPAR%u91cf8GSQGT{a&Oz`10{(^WbAF<|E+Gyyt1Gd$I-juE;!*-@XGUw z?~1q@yruWrpt&8ccFrd5>gUS?<9^ElbGUc4UNiLR7(Olw%WBtQvn=GYAcIL!>92Mb z&{|!8>iOYZaw*PE3CFcy9k@V@c!hWVLXMJexCR`S@{SZ0v;Jvk(nrq`A}1M`?qC;o zVb;nK%*Z%0`lOkYmF0KGDk~E#Vp}|MsKlx;)9(vb;UK$d;HwvQfC!pci4Cg?aiEb9 zkT>1aGTbU6)|P6mlgSNRi>{ud3(kMqdE->=*6TbeyZ-KvnaZ6tL>3YP=4_Npu%VOoYZW$s>Nziu z)zX%{dblwj_3IA>RcQCk!3{jV?X+%pDUZKZyf<<-R$ZvJ5yD|zdOPH9JsKf5a6?V# z1_ShF14TSr9(RJ*rm%FYkLnVDzSzpSmf578YMAa;`{XuP2bz=tl0x&GX8+sGv5-PA zPx3Qn$I=x!vmjarA^1(BIu+Jy-f?0+r&01*&Q9b5;`Z_-KUotc^$ZDd*^WsC3hJZN zcswibb%_JM+Fj35!-IO@z=3h{%85-w!*HOeQi6GjSGGo$6ju+WyQB`kbR4z`dgJza z^4phP1yZQMP9KA!7`2SkPvb}!{Y1z4xHF25?Z1Son`}Sde;zH$iQ3V9h~&jvHaQ!? z>_ho>)GthUd8OFr2MP?mGWV=e=RZrylw7X5$;{zCiUfk8X#mi)W_U{W)a57lpKx8o zuOrhgXcZV`EKhAL4nlV%5rM{D@~8!<7A2YF1IVyAfPfWOL^m1vAWc7+mE;9&&d(Y0 zJmTl$tKC@(pgssrNJ=o3nChP4T2g!S)}*D+nnrfB@q$-2Dk}L{j~37c8))L+8YMZK zs(GY=2B?9?tU--Z&@bMdc1bE9`tmj&oy0!@cFrQYWFsVgD?vAt;{Sb$oUzFXM&4$JW+ZBPgV;iNLT?S_TTaIAv; zRu<+ZV~YWB7)jogDm@HJ;@c&34J!Lilz_smk(+olyyy+_6OLrgJM!&g z$J`un)t=hbT?U#0kCz()q;ZRW@3)l}H@_CcD#xlgAsc>E+bcK)UdP8%jeXUw=9{qI z&6^>8lrur%q_WToUH4Ld|RxRfGy>_IHC?Dn1iM|oQa7>chx4Upfh#MO-f?TS~5EV z8P0Q}S3yem^|fv2@T4B4XMI^Wa);#-7jJjUQ7$W4D=If9w{ir8T)wGoYD9IdV3X~VhDkx%;>#(fxj5hmwFOX zZMW=_0|4do6KfNj>LmN2*Z$2~@fK*NjD3e~K8(k?6lT4vCm!$hthN>x9jXTqkssf!mwAn8^*D7WnT<-Hai3Fu#1%Z+{p$pL{E zXm3H+CNGfR`9_K7(WKu2_@GD1CEPp;wRDJSiXiIh-wn-&)%KP*u@_g{uL8i0?v8#- zflu0p2a@Z+YTH{=t%YP=*WS}^2(als z7v2B*_CYM#%A?)}&Vy?0-499z{87gy^WqU-)DW!UKYwkF?^9zs4JAkgI)40!Y z2Yq~Nq%fITL%n%&Ffh$vjS^qKT-T<7G)BQg>@vNl_PHFm8_nN8PkB&BI2O_<&+fV5 zQt!Ed7<<}gLqnQd3#!iH3EBIagwxSk~`Q$N?Yn zjFwFsMSgjXz$(=r64Yl<1rdk1guZPOIPd5frj=kS%$0m)=EZ7v+^%irKFcP&N4_JecK^m#bQG`8v? zSk{j>Sxc44+Rv9(V~@hhFaRjrdDlpDSw7V|*nX6F+1Pv0#aV}6w3gnZfx3Dj;PIV2 zzJl?{jh|j+RRB&2;+kaPFv`3B4(X*u*HWM67dm`O=QNH4FXX36vAHzOK>gUM+V3Ho zZ{kBX#vwGWg8r9zYUBpj(HtRi`uog1IfqZkkc+apmC70xAAgkA`0UQw6Vb#2G}0u7 zcpxkbr?j+7&VTOxEAahA8*04Bca8H@>(D5^qzS*Dle%?NQRlXV4&vRzt9laqH(S}< zr;Z0aYq}T;`DB?_K7G5sK;ua1T1W+cIjHXCa&>m5|82ExgW6v&4h(3rIgPAHH*E9m z(p(EkpMXpN99htb7Csvlo75CuTDK^qGB>vRN!X0G3Yfi#yr@-!vNU)TmL&>NZsMvYU604->}s9jL$L85I9>S(uq zBzt6Hvk)RxHHt-ay+-D;#Yj*~lMA76RO{hD7uuUJewJNc<~RlU23R@uL%6(LRNC2C z)tmAh3MYSC_ECI{Jg@1P(^~xvtb^iqN&|fgy1Y4Gh(Z)8+C`;qj0T~0h6FH%lQR8A z8gKR8F?5mo6d!(yzg9Tpu=fe`?WMxIU}5puCU>W>g)7H5)HMl$<=5+$qV5t27Bk0jZYrv8|?wBkx%A`>wt z^^s7hMyYamfVIoriP7_VvHI!fcOoqo=y3`2`Q8^^hXWq$E#2=SQ6JE9s6Jv+7fnP0 z)?Bo3g_$wdM*;tsQRtx@1(uHACktnx?iQY3MYSg^uUHMAB}!e0CXn?;D%dAz?B|Xr zUl=+(HW$B}Xx}81e)we$ch>iU4EKcfy3umI1NVwn0jr_jRrox-2QW2#hG15}0L6Q- zD>>>M)&ch{5sL=pr_WZ}&mJ~{nWHccv1*#czu)?P>x&T}k781R#kC7NR`02`Z20BZ zcR@k?0ZfWNfBdlTPkS|(Yu6R0uPqVFTxi=Q{);vtU02-S9wijRknN!YroPgBr4pPI zEfE#=tHc+3-jANS59H*$Y;3B2=|{;d z{hBMmOvvxx(L**F;f_!>NHJ!)ZuxYBrd{C5MRgssnro!(O~{9S!*2?o+kYH_^1T1l zxH$n;8h3P1J|5$1v4!Q-E1t-Dgx%&zLLs*_ACkMJGpl}VZV7;>y+WODsc9a<`&ud6Bxd^qeLEglP)YR| zllsayS-4@jw!WhG3lg#R3(fCxf;>@<10-3XdiItsD;MY27ISD~U`r@kmFgI<^-)SJ z`~+^Mq(#e>bFIdA8}MWd$Jd-uA!m5h>2YfJOM52QmB-%F+wgKO7*qVPez;HFFM_~c z%zERM;5K2$K~uA*d(UjyR^K(0@Lz>V3GwpV`dHtQLF0#yw*H*Dm@o=$m${Mu<({@=z`xHyI*&xY-T~H-#fd8 zD#pV>(ffArYSWjS16YNIb9DLo`5Yt^+r-yww7xhlL*DXXyc^VkPyLu#^_mEntC<{V zVlB!H4?-8bf`AzH3#Xv9*CPE!1j@r69Ru=GE*7(u2}kjcw}D_oYXU*?S?JBy?%dk+ zzoBY*FZV`}u}#%l5V5hvFQ=ap4~QnikJAj;OoEI_q{&*jTRCIa{hW&M#xmG~`k~-H zWFY5auTtHNGUEKHvQc9!jg3;HG$guJuA41mj1I)C1>MDpu5H>xRcbQVrjrP{K#Kip z{%JjA(6F`Fo0d(gCk^kBXw!Cq*^ueEC`g+6bT`I$qQ*q(F=zp!kuMd(o2-Z0`Sm#!Qa*-7JjoUmLEWPAz`#Kx)>5n)17N70W-Qi(Ke+u6p zy%sRA`AlWwZLWCaVN_uXw82-k0WXJ{kOUJ*uTya=B=Dzwc;0r*MtJDJTut5N=GGdS z*MM}SsA+oxXFUV*qA9mQq5oGgQlMji63H?ToN9&H-9@|CG{+N%y@Qng$Y3|Rk?_Hg zCIa6+uHGjxnu~EsF<$AMrpa&knesLnPZe|PfJPASc1BoF-vVip+T+5Ee@{)O#NPFO z1}BThn!9863kZzdfbDMHpAijjgGAvTgaUaSu(K$;Z^@(Tbm`q)_##4Z%6GyE^Zq@t0>?3O7Yfn- z{C!95z|Ps6pVx)jKkhevRQ%oAulI+kx!NN?pHqQO@38RuAJ-*T!Lsn@z~q@k@7L+V zey6f(IH%3I^0?vEZ?$-m(xtNe6^YL%+B`A(DnC^pwAfY{PrYA+IcJjHIV8Ke_BvAW zS+I3Va)VcrhqMIZdX5dVzuXkQ{VlTiyOjr44rGKJJ43EWf9@5FjOP|TJ~p&XK-7~R zbKfW*T4oYc_enR8&VND5+!}a^iPfaVot)|*d@IO+ive(WVLjQ;tG}l&#mekpL@p)O zJYlm82yIsjh264KZhW*Wv^+a1$2z#f=}Q&Dmc7}(Dy_XV@A~0}gOYcWi1qNEVQyjn zXFpnSoFJ9Ahk14tQaa%1kxrkH&zoudf{)Iat5yeORx#uGvgW^#z#c_`_`a&?@E-2c zbDZ1!(jo8s3621pyrpjKKe^X5p)vh5dk(_k8ykACUzq*9$-MgWb)GEOO`&bg-YEX# z^Ktqk{nw?0AD9q=jQ0jwzCBie3j?w}Q~A|HmUoMCL!WOT7W?yE?_ADlJu!knyRL2x z-ZY#BvpBa^t`kswxjspvtmI^=s8tPLLKol5=o7}qEAO$pRIAbs56@aTtPh$r1u+9# zc{SyH%LzwA%5;R2+8?HQH-S84(u1N)-B%57UuD<)LTd_G#$EB8u`dN8GeHx3OOO0e zkRQn5moYK1Tp>bYw@!XUwU(eoW;L4w1BipeFDOUlqJdJ7)k`9!X4?$#PVv7s08Vgj ze`r;6Is)@Z>kU73ZQj`DYPs8j^A=DY(GO_yy~TR?*j$Xc6v7xBHU)HvX*CQQJ6_Fb z6jT(iK5dx#CP&*G?SlX2WAkG(kv*~C$Lwv{vOK5)D3Etm9T)s;ejKUXvK-y4lE;Ez z=nqWD*3UK1t%btQ54iBazJ??YfYa~|Wud2LIPFp#u_cMINVtrvsxf?yyLAkp^&GwgY(Y@R= zReIBPu4NJGkAkN@@R}Sx-*iGqv0HTU{A2%P+uR^6vsrWaRNx309+O!JwdL-YDt_}< zJXPm~clSV^Y|(IKdWLRjm{a!OZQ1q(thwR+H#E2A9ftSf=KMB$m*p1Rz;0c-b^lE} z9_$Bcb)C2THuEd8fdQMD%6B7UqkUg|{u#K!1ljtef{jgr*9&>UTRfw>ArGsfenL0_ zH=kG?2zY!;E&J`6m)xd+Xy@{+iRrsyi(4BhA(N^AUwm)bK*;8}@W@f^`uH^OX0~7m z76?z@h(~D%_jevfleFlcN?F+Rg!obN{Br$yHPWNG3~z0T0=Iw#qqmcRU0?N`ipaHo`UyeN zc)|&BQF9L2av=s?S6lkwo910*h3eZqHXWl;06agVW-`pxru;rVeN5<9umNeN-89vL2*PiQVT29x z-F&C=yT72I8yh;khb#TtZ8f+8NQu>Dus1R&PD??eH{~~51?+G@dHW354Od31ulbL- zq=q=H%K0X!EjK6-TRgnB4`FH33qSyZuxK z$?o1WaRwmYm6u&yLF z)iLf{bWT~k9Sdk8cocl!3}3394C^yJy#Es#j{nm}iS>w|RoUZ!Q+7KTv)p)Rd3R93a&ovotJ z7%jYyDZ{NQ8%(z+Lc*%wN)D{NWKuA87fQx8yyrir_u7|yXUy5XRs50Aw^`meEHvfQ z->tEsIqzAifLiff8v1w3q$H9-se^GE4J)dq(o&5*#t3A4Zg|T!`oufC9Zu>KPf$CZV?~98y)o{tTh`iPaiVtGrezEK>TTFf``j2C6b2tu%H&#AUF^bf)3Ct-$9e zPpx)rn~14bs=8_%-l|Uiao42jY{-`K`@?FOwyYrMv6Lp%<~Zf=q{%ZOlZ2b(zc$!G zly)FXL7XBXqB)H4qzA_2y1eG$ty{OwhwmGjs$8UF_klboD8GBQNDrtgXvc!;2d-xY zK4VXlb5FDA4ujSM8k?E`vFei$Eebh9WCIv{2e87kQYcT~WU)L6Xyh0R9KM=w2!TCX z$da@lesj5AwEa1^u-rgGbDFd3Xw^amXP0gV$U9j&WvEh$kv8Y%?4H0nHQ_+))*UA2 zAIQv{=T*Mav)b2&sv|0m`-iwhRLwuiTt_GTKEk@3dR;v1J~+k~9I;pdg%~=a6+<|- zqH0OR0c6(yq3XNin%JUly?WIPs9aG{K!^?Lpj2tW1_($e^di!vM!J-MN)r$e5Rfh% zL$9GGN|8>amjIF8i4aH#0rC#s@B6*?<}XSzb7tn8efHjK?X}aDt&0{a0V&~e4Fxy2 zyZ%gwwq9gX_H4A|dzJj85@KK`MTGh3@?V+}8}jXyM+E{efA%R1b6g$@{2(FF`vFM2 zQ}fkQSe`LnI3LZl$QUMOtzzHbo|mHMd1c^miuNYZ#OovnS^<*H^3Y?22~pXiD}Fv}Z7R7W&@%c6KkK^P{2r9f%*pK>zg}RdU?wlHIx8t^Eb<)QO*2mCrCY_6>hpK#N~*M;lh= z1YrENbwIa)hj-ITUP`1`50oG344=m=F`~o~iVKAHBExw6B7xl|m^sKdP&S--XmxwqtfGrYziK=M25vA` zk7;1w;7Ry;Z&I#IlGD)eDCpvS@893=J@k^uE=}y8Sq9qr@~{^x_zEBp9}EPP?(IR z`K6hIjlHSpqA#8FY4#$iA}7B17dL8KPg`!!f8`~j54PFsTy{8|eL&a&8#^iI1k4xW?l`CS3OJO0EAqWd*cjRp+Y$K1B#OO)%eR+8ZbgyVil+j=tE? zuuwB?FA5s8rtu5;Y}U~_g=7et);L0=agyzXC+>&TczOAhKedS$Wy+mnsUCxsM;NP2n2Rv6Y~7>78YUW`9&&%LW*sb&(ok0NeuO##p@5UZ70?& z3kbKLh1&mk*oTeYJUQcKVu08k&XIn6MxW&hrA^o8`oKB1&y+84&F5`dq+p3!x&u{g`UaWdzzI`FwE-w{Ud ztxT(`uEN2Dbv6C2XXc&z0f+2f%Q>4x^B~n7%XX@oE?D!_51srcn?P}thXjn4Sy!M5 zyTsqWTcT^Rf&N0(FTWG2vN&9;L=#zfmY0khJ{tZtK<%8Ns~%IpFtR;1HN%*E&|xnu zsZgoze)%>W(cYVGN{q78$yaAU!*{7Nt6q1(GNEJiSYfnawgwFn0#^*Dms$cG#}9;T zw!Z~3c6y9X{e0fmen;n`Zr+Ra{r$e;Zn)Ru*GH5q+TqdQy5}S8cYI&YcLXkE(M)F1 zr9=Hn5N=C6fdnRtKC!K8H6!xZB0mJ5KuIsJ^~Haq5{lWRes!DY<-de!8T zSl|^v0WbLO2w>GN4joXNrNnU|3xxIC@&Vq)BN>3X8_W=Q;)Gf@kduGt(pQRs9m(io zT7=Q-_L5B|(VMQg;!zb)qUn9QH#GhJDi6hDz{;CiT<+SQMpk0E{&i48#*BoAKlzO) z<>s978;swMMlgD{J;KUTv#$B}SPWz_< z1oUd;b$cX*m=01$jlBdrtq-cfZHjE;M5u!aer1)pj)n~!&J0cmH1vawryGh;xB- zogX#lH+C%dj^Cw`xA~9z-*hg3)YA3upz}>cw|lv@h)2{@+qp=Ib9qj$s~HdFJpo-G_VpymIL43X8u`>=Heun4=#lo0UZhY;*0j z+0AaT)N8BeE-ZN3k(aMi_{+l^B9hza#}4(+q-PNHw2`1(caxq%*|HaB9fxMyB61~m z2#EoQYuBV`2LbxL(18+_eMIHBO^S+6A(k+?zrRt!SlV=?c=r$+kgk;rVymp}3RU3* zkj$#X?Kjanxij<(`)D%amuLjKDLpMMtyeh61sG-t>3iWoNO`IrmQe(num0BPb67t} zQNy{;9P6hIE)O@nSSItDoz2<807@12(PEy4+(PY_y$%#eP3j8B_&=I3q5VarWviH( zYlut-;G5pz@U-9AR&(+Cd>XSL3H7+pQ9mLjN_zXbWbtVjB*26M2Mv|*yr2Ck@k2Ai zw2Y>PH*v_L{rg9vA2oG9De^wl`ip^G;bQCNrqB8aW@^gd^Vrzb*m=(go=AEom8Yd! zJ$2pW&7=k|o4{bh1T1xz&1P|NerjftD6^;ySXmko@c48e1ERkt*u%#T`b(0Fa65-vDyO3fwo{Sns)7 z`Qc)(B^cR%)$TSB4+Y5HjruXVMu4#2IJfum`Rmn{{A?sWX#KMvqRt@`!r?gvttV*w z9Pez^H}}5RBRnG1seavfEg|~MWp2(UN%CPeNw8Z$$0VjJ;{omEw>Qi3sth;3&vxdg zN8uS|#t}2YOG?T*oqCTzj@YEyzGbA=MVTF$;m@hPxQ*{YME!{M@|96uJKT>x{5Jd_jTV$l@Xvj#}OT`!24CFbD$18Wu z#!YS3HfezT+tFdZ?_8wH#0A4x7`eyR6!y^X5e(&=66(9zB&_mtZzVq?i|<8j!nZe+ z_KCpwg%r378Xm9wjCw$f{q?bW9=R@3H&m!Eymka2H#Vbc`*=5Rj)+JO?l#4rVH}Kn zbA_dt3(@jhR(`a1L~I1oZ=C!y<9+$T z0L06grj8DX!dZOI@mdX@Bm!&3-}$$>%je9{tv4M;x!2|?YG7_(4^J9bxF;T=#Jgok z+;~z^`eHtDYfDm1_0A;<$)WRYXg$xxaK5J}G!2m3leKorCa-b|L#lQ}RBdMuy=DrWDHOt)aP)DDTjN*T!1nouXQj7MMXic2b?LZf-SFMwts z^bVziQhtZSs2R|Pfi9G@BH+Mlt%Xr__LT8%LDI&kE9`#7%5c+u%uFH(aXXZorXx?Y zT^{?LT~L)88yefqZfg9X6=fvq?;ejYE%C@|Ct&KwY*J#6TD+#FB%dXV)tRh~cT(g? zV>0!r0pEi&k(3~M8P-LbTa3-mFOWGLI^L)|UOx(`-w?6hsC$mfWqTw(>naCPz0BuL z9;4?$2Mv?g#K_SKKJvM%doF$r-b9-%Cz*0tOT`5~{ZIPjI=Ux;XBnf8ZrKcTe9$N> zFvs|RGI%kKSemM3`;e3|EIjQ^o!TR%dF_NvL~_MNuT!nLjSAy{gVu@ylRhA~Y-^6& z3g%@$QKkGD#4Y1XYgr6fMnV%+@6&bejDRic0+kUR)A(pddBAP7-I3C`1BrB}^CdP1 zCp`%uq zl`Jekv@X`JyYd+n`O7+_9wTn&?-~GT2|zm{7RX#;eNFnD#$1M?6iAZaP;ZE^-aa|< z`m5#4vr6p+^E|&xO||uJ^k6NWy=k8M;xL^!AUTm(7gg#m?y)*lu?alw%9hrL#fVQr@*M>J{;WZgmhx+-o*G>r7+w>+g zR||-4Ow>f>GqOwEL?fERY(ow&+^-l~IAADwpO_?TZC~*IOiAS4{n2gcm57;WcJtJN zp^60+sYHjdGOO#KU^d&NX}6{22_p=s?d_yQNa6*K0vfqy#asf*?2{Wd8_RVo`eT$h znOM%;2IS5+y6CQ$Jy)!eqQC=-xBu*Z(SPvdJ6(M6h=iZ@tpNO4i2)M)78)5*>`Qtd z$GZOaG{~Z8Bg1uKtNZJZ_NTWF&5ZRCZA?_g@B3?sx=FRWBT%VC1VE2l-e2URJ=|LJ z@EZ05SYdhXz{A+I`GyUW%q$gG-zwnCXpX23c)it@*bEYYG5h;t9gPU`xD1*A(EzFP z*_^Y)y*Z5_lRN6ES2=rS)f+x}Ji3?II~mprI;gSZH|q^OU&JuQPWvxS{RWO=`{1al zSK3|7o`mAYM765v4|NG{<5OIenkOwG=NXB4R>mZb&ti7kU%4cvYja$qxID*~u3w=U zR_Cy&lK6yGPgG%(Oa~@5t`=^VW2b%F$V!pdn31ui&K6;>?G~aUVb2Qbr%-&9sAI4A zYbj>T7KV>L=COlW*?*OH8Th+pf;}7F0yecb9uU&;TfsU228Q#WYMJeFf&yF zt!=M-WGo69T7i+b>(Uukblz|?u3I#WjV`@9zhKXAtt`9W@Lc(-T|A+y@|ocQ{!8zY6(0>TNq@clwQNQ)B`8v2S}fIbpLNSU_L4xP{*6LMjBb0NRc)*m$NEq79 zbA|l-mN#mFTs?DUEiswE&p+jcZIbF9qpli~5XRmMlYbe2oJ7u}R=l5#m3%Zku!8q* zDSm1dLA*H5gx(G{8t77F_w4j7e;dL)bM|y1H+pIAA4=cSUd|ZiQu*1!sH&aGuCdZa zBa>jn>JX+`=@c}~8Q$O&tr<5?eX0Dk-j70QU{Kh-)glZ`@yED#Z1g5PdtdC1&Svr5 z%8iU-V$j}W>YG3dU)c!cw4-7@T#^3@NG$>nEQ}yeYmS)Np`{tx=QJ5Kl%#nItt2{f zZ<0Mb|AlpCT&@aN6>i+q{%T!>?5E>SzlN88PCLv>?|aetRM413|6^I4yAlV&QBUEo zx?jx^SvA%bpa+U|FJ^Vsp*f5@jj1?*D2Pfh!cP-HuX-6YK2I&Bh;k%eKR?hd!hK2= zb)}L|gJjYtMLt+Q=DP)T88{TjCh(BzS!H-J_SAJx!xX0xaddH9qMR?OV5oCFEkN|GSBy?mZD6J`KszXyEWdXhjYoPEYQ|4g^DC>Ad3uk$ z6X;Z5#VytHIo5tZ<1+A`%ln#tYs^=CKj5^AU-RFiwc!~dPfOmHq$J#)U7?mAdg2o3 z9~3fY!akJ${m+~{hIzr54e<;4Q((P|czBWOdkgtfj}tr!!$k;(;_cSruxN^%uL)-WRQ#>4xn8mFXqn!P4N7LNn_@kB!R7_F$ zqhL)~`=s|F&WUfEycjYqshCk6$S5W7flaP{=wQl=pK|EFl;#x*2>RmU_qt+VG2Z|E zt7z4%ljJbMr%g9cy0$;*>AOnk1_-sl{srX;cnxql1*a2W91W!UHB~|46d51NUsB75 z4wwxC8pkKzZ2#Vp%n%U6%);-m(umP5W75{=(Wg%IK)^FM@bis_sT@J3>phg2mjTMe zJ2|pc-*{=MQ%YEcLPD>zjqz?e*f;3 z#3vxT+yI41?{(Ef?~O*HdVgozU#B8`Z)SXw3VX?nC_-u#b2(W17X>5_tN-9@N%frg zYKSW%FC`b2(o@$P0^ITHilvzEKQi0(rdpCYM$chB9C08*$D>FWT}<8x*+rj7ug()-g16 z=FN4PiF-st&65-5?P>pVB^QAdu|nuu6;DywzOa(gsaZ5?V}{H ze(JjSMn<@kI`k6a_3SVD>`q8KySVj~xBv0vkp}$*TG`9KuK{`S2O$Ze?o&JB1G_1Iz&>yq0Q6r4^k6MEv=;Z$*TC zUhWKCq=&ipxUW-b3N4kw@(eK7N3{n5M{iEku&`)Af>_Ut_y7GpG%F{8)7Xi5#Hi41 z_2>%A!r{?ptLn>zeU{311dXfDg>t&S`s5zlP2=!(U!JUU8*_C&&0qMPx7 zalcC%HbV+bt)e-N724Syc5U0$@gh$69)fgAhSe>3LDs1wp_GQrRdz1Fal*%3dtqjd zL?LHXn!lz`RNq0p(Qa&Eixfr^N>NNjZ7*V&+{8d@P6q=D$yEe;7F4)-H&UWR=< z@%%d#aEC><%4bLLf<|K4){hd=OVv&~+cW|wosg|E&Q&W=fn#)-gzXIb!qE;T{Wtu6 z&wTq0wu)f7OLuH$E6=M6ioW_~yR{+VWR#GM8H~aOo#pfsdzNwU7Li60Zc&0Tx8IOh ztKagIDShXybP~|rpT?hi&aTQhr7(BOCJ)=|0=#Md7^6)?v`2EyLU( zG0$yW>C2?CbwQq@)! zmd~iyoKAIHf*#eq$dPQzaVT}YNt63}(zYMydJxIs{`0M2`!xq<8_#j?{2}c2cfj^Q zU=X;XX9;!cRA6_7!P=h2|<*5^VOTDP+-quT{VT26- z36~@T_2NB$DycB&P9%G<%N%zQyAPR8&exqmEm`aW^X^hkr$rkxo0S^7wBwW4Gj00W zxP-l-5>uS3Q=u_RE&K1=ZUjVhkSO;4JqI)w^Atiu+0iy|SGC<0$p0~qnB}|e?H9sD z?}bT#vx9&gQ8;G7#2qrI2XJfEe( zxrI0WCV`*h_CIg5?iHgZFQ;9uv4_}24>H-Btz(X>rS4T^_@WtHH09)Jzy7|M@{-!ejSzbepjv29yJr6 zXnszKV>iI1femZ+xbXGXuT$jUGv^Z+!N&ZZh?V20Mk!N!aGiLX%J` zs9|oTZH70Wk7+D+kOapw7fQsD*jlNc1Y_?gZ(l;S?M|Z`EONDC+9wnLm@%kZsL3i_ z!_Ui&*}}1*PLX|g6{bC7nc`F{Z@b#@`q>^&bkN9w57a?UdHaAUjuzN)>}yQIUZ zO1`_w3x;?6i>w>-NT{|bMz3iX<33Df!k%UORn?BJHm17G1{Az@J~l!-`l6>vndQ)2 zwA{61@opg{=TbM_FkZJ*H5q?{cVnU&@~mu<_NnB$`Tf+CwnO+E*$hEidOpWeZzHE$ z;Vj$>EV-hFKItv^IbRdKVg5+2bEe*H*8RTEhnok|6FF=*DxYJVT)7~uzUPajW4SbP ztD{A05WZMJyQ(5f&_zD&B3IxYfC_P$7@myh3XM;s9gMjF?=&L)Q9J(N`6D%M(BXZt z6xgvSAvosHzqWyJ3bY!+p0iE$*7{UtSu>TVbO#Em45di{Kiv9wSDedeZp;!N1 z?BNaH#D2af+DO_rp7|CSbz$yDB({!V>NzeiOYDiT7yxT;vBwbP2BE;C@G+64fnwOs zaECowVl=zt4PRp!_!Zbg5s;jFR=c{&o{hla*$Nlk$7Z;nFemgXb92Urv5P4qp7|0C zCqp(s9dNXHU~j$iWqWB=StC?8%S=bMdX%t=B65?3DqK8$6RgF546~Cjzt;@TvU(AF zk_j1<<1u8fwuVH;_`iEuZ%VcH8@?qd1F|llzy}jljGC6#war$H3`b@hkc?ddEFB=0 z+=&c^EJJ23VVAf=@a>TdNnUqWzfa~U$BD$H#@h6yCQ+iBYnPkKSnkwBhS#`NkjIfj zJsk(3nF*rs@$tQ_OCp3eLJ}4h__NWwk{*-z z!>s$O4vn5gzACPlqW&S#%NJCEML^*c=oJzN3LA51D?vQZs3w|mtI!BG{Pr2Oae~}$ zu>A!6_j}5Bv*`Y8rO=f@+n^tj>;i(V6TU*K3sef7EALif$3S`T zrQNvFo+WfWADHk4zD)r~6iFZW+Au%GBmg*qGhYH3Bb|+5(yGtIYSgHGhsl(Nq34_T zvSsmSWz4YYa@-D(AIKsO@1cABPO7u_S8^_?6dR{o^Eq^V;_Y9WM2ZMDtXK5ov%>u` zhxoQ!k#=-~pt0Udc9PjRUc{GCz%Eak`@L@4Jrv)OXW}mT2OnhIS2N~`GWFVrYf^ke zMo2var(u|Adz1Ae>u2e*Tz()Zw9sArY?|+x_Onr;vLIGZ0k1D}hLLUO@m1&xt37UF zy`V)j?R zahucpehd;^{C3{)AtUbvPD^~M%K7$wgqWKq$f}%Oij+}x@6bP=|L?kZ^?aze+MBXV zfh-5fS4io`@t?aYuy45B#;mpUm`mR_CBTxd+Ttp$-c*cvjjKP$S^HOD*BbR&!H0c% z*2uY80$NsPXmf_Zt~*zCy^dXfpb86e1DL<`-sWY&uPZTn( ze*$z$-XLd<^LVH8uBMf$VsQTKMY*JLU&OI-Ykvmm;7orjB>F=hFQuL7^99*g8D-e%hD8$^ z2?r|0O+75Hiti`BPA>N9>TD01@>C^6l`W;qgvN|UMKJ}TpWf~{cC25MRzjP1C3nJb zwUmu?zwLetl&Mz_RkH2OnT?9>3o|oH>F+n;4ZV7qd6li%Cc{yVJ|6IP#XlZ&ZYw12 z*_i>xM=5#s3O~4+?4)3Kw{KN`I4!EX+i_M{p#LeI3VqNXlzij@@}#E;fsFFu@X{ud zQM?&Y<~Z@dxpOZC`Itw-hK#tTP83+o^Vq0?Tq{U$P!Zdvd)E0d(4Xf2JgYSC?-QTB zuB6g1%i7E%gbMZ7`(e};Q2&(u2CMEsz0_ffec^>xOVK(| zTXVpn*8o4w{niQE$1Ytsn~bLk z$XPCB0FBryRnMU73!i8qwCqv^?s zrOmw~GvCc?EX-b0-j-jjvO!t$ZGm$IZvb6Zn~U1azx;*oNvGMif6%8qe#57@feQ4^ zSW^cM44~n_FY{!!iUL8aqTz9{l-Jz?(Mi4#2<(Q-$Q2C_uSr9j5BA<<|2nAC8#gsDd< z62;9~H<6z1OOZ36QYnfcEb#OJcoM*bSSvfEMbFHgN7;W~p`}}ED zfPHn{6bM(eoMA75Ean3bOxO*wVEAWV`m-oi-o6Df77fSPC7;=|OV;45aG27+8N;)g z$U@T@h$StJ?#9P}e3Hswz6Rr{iLcH`)$XXdWa{hY7z?ecyIh=fbWZ^sCM+MW0*ml7 z1jWPKxAOcHZW&_}y+^i@epUjXvvB@YC~Iep<^O7#h^NguDbhV)k*wVNJZp_KnJ&dJdX2>x*x^H5$A^m*t{vmO+1!-NJpc;n&fQ9&vtYoj`@vBJb6 zP7;7=VJg}Wp3pt3wCSa931wt#^4SHH=hh`kJ^iiG@rAD%o3V!9pfN1{# zU$xv|$DPQJD%1L!k2eNB6dfJ;DZVH?<8OD z@Vg%f;*Wp@sR$U6G2m`FF|mu&3F2EC%v-fk>P#x zhe{u;L!DLKOVdIO!j(pUoPs$%#FN@4|2qqpj8@vU6DQ^$|FPZ+aZ#5){63sT_)26H z&0h-g3wUk(L(!1(<$cY{satH33rhCK?`0bD@WOv58gdVg!Ytta?=w;Fyr|B`nj53Z z*S6k$w@|hUB9|MHSJ+xPqL207=uQl+u`@DT`|rzO7%!}Y!!f)^OE^q_2+-F0Zx|h& zpk&di>_qVC+e60F5IOD4z&Ny_CU>M ztNhUq{AHSsb}at?84>zqtX5ewIa!j;BiGt7-KUNJ{tW*W3dz|YWL8;mXrD>y;s3}d zi5q6l!OpZz2Tc}-Ld!X!$h^MZxt6(I`@o?4zMWqK_@40wd-N# z;0o8{H3YODX^B`o^}GJ~FS^La?ZM(}Rqt4!1~Y-zCiE)w!Atw^yniO3amn#Ob7syR zOUrehWMose)_3#V^G)Ep3;s_&otFL}yyQrP)f-l!eMTIp^gb_jHF?{<)Yo#B zoeKVjkaPV`^2z@rWLFS&IY1|P8=OYxK%?8v*Ix#lLix{lQa`=PspzGbExn4<2A9GDH9yH$ge-XgY{nwuv^;;$q3AAhtNEVzoB`5M``wnU`SmqA{PeZ zxnj1t<}!NfLkx3G zjgpFOn-tCe?`vttfBO7{0jQy9vh@8rM)IL=W{k@yuH6#7Coh3H_5FhUtjb>zRuG?R z?aGBiSzJ0k5syg#=<4xdUvZoLgV*C+8N%wBcoP8$NbR3PKx%9@K-+D*u^(U;WHqpS}e)<*&Bc4?+}Gcr7{;Ek|mq zikK2V)GR4!+Krn~l`O`6-&eO0pDsMK;siZz1n4qqk!)dLLW&wDjz#r5AvJ0gFGUNY10g z@k-nFH9`$FJrmG9S}L*7D=c?JZF>GOmBigFYM9=i0Sv4Q;%$M9y9{d{<9FThNZS$W z&T(})L5Eyi(`N)7-SI0yFHXEnbL*3n7x-|@bdd9J0Iq-5qcy$7-AB83g$Xj6tfh_H z_G4~X#G?ih$0I6CpAjoZ1D5T?2^IzL@W(yZ|IDd3V#iM532%y)79V+CN#Cw29-cE;?E;4DBjcJ$J??|s+#f@ROOkz!;o6~+l~+_G_(^Vt#Bave{0 zD7iS5A?~2J1C4~pLmen4gTy4#Xw}QKuR8f5!TraX3%R3NoC339wRWk#wO~(1%Ojq( z-Q+|vLJKwp4P+SfngxWbu|GJQoI^TUC zx7~UD{RqH^{L!Yy1nzt@!x~vIdBan*e&~;f{EAPehUORg|Hu$7OwCy4J^A zj-n(*yEi$#C_D$O4(0__5eIKIl=Wc;Z*k#+aB~fuM78}ez4$mlZJI&DbH1uR5a#kV zszbrDC>YpSuq3R3#Mvy_OUo)_3m{)XNuvBC;iX8tm+J47`z|jE&iSs_l%PwAS(+Ji z4q?lMsNO>5xI6mGa@C{G13AiCh4tY)^Ijcbvdl^?T0Y!znfsx?N5NT^wVSh&QVaL5 z+BwNBEl~A`qm|kNk$dXwz5#&thjkUCj+(a-Q~_Z4_=fIo`4<7w#K94@c9{^M0Nc55 z3B+Gwy(4M#%+?z(HVooO6PIWAtk=fyeaQU}z%1+PgJouCj9%5+hJtsb^d~k@5ghSj zq*z(sgb8dr4g39jQ|hKlHJQ?uf7^FYyw1<*=i1X!5y%W>BQ&5NGf)E_C% z7Xaq!c~!*frI-`Y7(92(CrL$&BxSnHDH?XeryOuSo%6~w0G&TK)c|KzjAUc>#9I=I z;-VWi(E0^{>~7#WZry@|H>Fn}0U45i30Q%qoq<2-J&UpP#bYo^lN0Ypbh>}={#G{l z9L31Mxo%W@zl#~~MEIWP^xx}$Z4`QeqnV~IFYco@sJlyb#&hFFDwCF=uYdn~ncQ^c znA>rGn-=vR`Do#|WG!f|1asr4=X2l%>AR_}+sYQ8^n!s|i#a1K-2Z};Iow8wfTo%O zVkJHsG2sBm`bJNAb<_V&2<5tH;xRlt(-M8Al@N_c1O*4USIt}P3h{%n>+{rN6zLCh zCcTETn4*w)%rrZunR=K9ziyfb{4uPbO?m`pU^({JX2S+k6WNZBdX4B^O>^kKr!(x@ zbB7&%&2!R)TBc!>QpedIry<9D#!u`nbY#MkknD{qF3#a#j0L!SB~RzdVv4VlAREM| z%zW=4LO9Etlnn7%{ytM{869ROs?$FTgzBiFIA_c)f58oz#x@q?AP%oFA<%ux`mKC= zd&X-K*`vKnGoZ#I3RS1KC@wwsVK7_oC9_3)VY>*9?IQ)+m_cEe1eSW4;)EWzu~;ki zRSYm6NKZk_*rt1X)-EQ`+WP{UvatbB`*Yh|3x%8sKIX>MBmQ8E>TJ^P24lAPL!HF0 z%jI9lk&+7So9S}CLHwn)MMLN_7Y^>HzMAdqS5A3*3i>`@e!IhR1`upQ)YGIxB82L% zBa`=z870J$rp48=cFu<23f;x~mSNH;Qk~qfL{dNX`FhjX^T6HgIS=AuZ)Jk~ZWS#U zOuFmWTst0S0u(6|>x2r$LaDOJrF8zpRq>%%Zf+~vY?WwPE=6)2|a=MfYul(VTPU>Y#?!7p=r=G_OvT+Gq z(H4qgPAj?m>F2bx;*L@;1F;y)vK&c(t|Jz?zw3M5v0iy)J_G58-|(#?L#b_HXI>D3 z)0V4&^ylc(GaK*a%+Ty7B{^pyemv)T8%d1N*XDJBF|ggFf{vx%$E-4%%v_IlHyTLN z^jjY@bpZT$sjFMPfV%XYduXGksr`TXUM-bLgczpB9}ofS4f*rJ{cCXLbH{+$*U|ES zOA{x7NQD+tU_SO2kY8(wQL-VRDzNt;GD1MdVkI}vSUbjaT@(QXw5(t~DbgPHt8+gs z1FjS65R}}dxmNmetIL)di9l*Z$RWK+oisf`b!p!~WZ5x$t7Z5e1;6Uz&9_!#m)lQV zma)2`8ng}oLx%OORF4rUt&_3KqK>62LJgao&h=lt#_ZZT9(j-9S1Yknl0K=OOSbLj z8^$cxhaJ|mvAu(qRkz3ez&a2#I|33&YHANwX%h}^(OarYbPu$XEWd;8E8EF%I73X- zwpZowf?5VtFd6E%_q)eyr=V!Qce|j+v!~N9?7Tt8k(;IN+n@=%Lro{iU#&&Zq zeftX%x>ia^+c#jD-%^cUD(u1gsLJlFB?E0vF292}yfRvL z^-gF*p1)->;oKhpfoAL{Z8%Yc8z#>PSYi$@0gf+5E69#IpRE|(XOxe`lM~H+q|~9( zp!&Aimw@JIx}wM0%6BiRTd3jY(tg5&=ggLy^+eL|UHuFt!i+^I2a`O8UzA|!t-D~G z)tK>E^?^?FTSN%htG@p}^fC`!N=HbqHxQuxJI5spJ55W|nq~;<^d(}pL$f@P5rErNIAf*7`C`!mY@+te2=xBtpSZZV8IBRs0`MR9SI z)Z*Tri;3q7SHI=n`rzA{#S|Z<;pz3=s!?(M*?2DMnC(LFQbt%h3ifu~Z*yx7P_Y<+ z8LAjb^w<|mUu|<{R?BeKL`RW4|s5C(Tnl%Cg-ka&m z^zkIMPv>vfbXD-lgZ}{LUN$z&iSYgGCc|2(xykqnAZtcI^2>ohPWLpU+g95ZMe;^P ze+c{HRK{W7m=}JwOJA>FaKoyDLAdd%sj)RD*KS|5E@eRm2 zYV%&TxcsJ!%JS)HjgroajroM(nnRFoMOTb4d7YdYqvx-i$oS?H`S0cCX7v*j%7%r| z=P(8Vx;CTw<=g9I`GbFj9h}_PZ)3`lP@vRh|8mqhzO0#^KM0gj-kBUEm%L2pO7H`< zfD03tw4b8JPQ!Bc5tgOpr?b~@ZviLeQnjsNQ_HG1%7PFFEL&ShOl&3g1Li(=|Db`%L}6y@{^O!;q(`{nbo9MO~lHaUSTH z$bFx{UJkF0EpN>Ly3m65`k+X^=@Gtx@L_R$&iA04d)9iXo$8z+?h7vk>N-3ZyVPIe zeEYN8^|VgDE5B4f(##v#6q-;sBikQ!`n)tx{M-mBd1A2u``!X{?fwXH4>0X za(CkX25(x(x%VTCzfyhV7EqNz1qWW05Q(>liso;XLN^tbdOZeeLyI!8(4?Q=&9ukh}!mj zKyF=C&8uF0NRlcicTSWTW)(*D0^iE3F*=v^J$LE`>#YE&vG`V~My7y(d5?+cab{mY8 zd_r8WB*>qdX28m`lO`?6%c8bx6Y$DMoET2uD)XHt6gK$qye#npO`-U5?~& zm(phfng&gW%1?W#npBWIOXbKs;_wLPly=lct2>)&kV;LVh;2Frvq!>ix-4lAXM|OZ zNkB8GtoIMAbh5Bvw(Ys1eLUW9#i(nrMF}SknJs65htGj5j3Lo$+qTbT z5GtoM=M)JqjCK+{ZT%2qri_E5Our_mBz(vjbt&^Libq7%jS(s9m9v&ZcKK;+Txf4n ztw3EHUzdpsC3nl6Yi`WfD(tdy!ogS14|qSS=_-1I8vCrPVy*^xYGFTp-iH&}?AdxT z)VjJ`B$8b+yif|!aDp?seEy>Mc4vMCR3_n?rE)llRUN%(=fA(Qv{%CwdV74X>NYnK zMDxMO7a5{lSvvu{)kWST{%YOJ22%1-r9Xcp6l{^o`gn7lAG~0!#YOy3QTVij6;^@c(m?B^Dc>fpN84x&5h`Ij! zhx_z3F_EsZ4*t`8eyldT5#;Rr*f3SL@7A~hPe)dVE3@R8?uTo!vXrJWpt7{H`Un8d z;Ux%F!3-1E4G+nj67u0>+=g_&enOh(#0}XY!c4)$k96M+_B74)X+(D!C=XKN<`!f{ zA`4zL1NFNMqb;kkGK;O_x=6+0x7+3I_VJI3X4^*111`Zv_jU$nJsmxnYH*8fVPYd) zeN0U2M6u`3UBq)XLAXlahIE=o-pyWe9R9G=lmsC(ly5{IEhO?hoNNCc*fOsi*YfGB zP77f9beVWnUsxeT!bUXLpsMMW^HF}teNinIj9lSnY@XWM$kqm!{JH6GG$sNthgp2E zgmWmnQD?1pDTsigtX^qQ-i&I8OWr{va=RnWfTh2$(Mvr z3-}0)Y(4`Kqg(mXCHW{AE?>y9Q?N5goeN~UzL@BlH$5JzQKJi2MoPpD)w;OMs%tG0 zbiE_5-V;Gjp$JVgQ+3R^M!@itt*;3xtmQH8QGhwgEsvF3_Bl=1$|s7CJf$JD3+6_X-QwC~*~A^Mn$ixvdXXPN zTJ*WVnLLuciqHV<;$_uAF-Qb)OVU^$r$rU#;`l08UivC$gBN5`HQ4`Tp#MV_I)fnb zP9q)MTvt}m&Jpjfsod1Q`($mObC*8(s_K)0qxkuGGAwRh<+n1smW`9u6Yc^xR;b?- zo@l@>2|9LyO6o}a%Q<;znpF|iKgut40Ku_<<7K@hwY3IZnx1;|kvZB1>fVA%dfABe zA*cUszx{Drt&;<1AuOnvao29aER~yj8_lt9{zsIh9_2+(7n$S|(}s{oogNjqqQ(K0 z{%Wq@fS4pDy(JGUj6<&bKCSN@V0HKuoRjOjO`WW<8DuIFx84AcW!7&@;J>1uP)?paIx0B-d0tvw z*eomtgI0-v`A`lbCY>&A+`kLxZQAjn$nCAG4%WLpgBl_HC5?R2cMM*9Y_j#i7a3vO zu9*H?UCiJ8`(hgw9uIScEE!e3yol$Na_)1M6S2=70|~zygeVyE*L<+9s{B1sIglZaqALy68Mms>tS0A%!KJn5oiMr*J~< z>2A6tqMA!=B3U(sx`Pw;uwoTUma!1PkRH+C2Gn(jUQdg*h;XM>kt8+@fg}-|_Qf?W zV@W#w>J_Bb;%WCT+qB)4kqaot2HEM|^_K=+wZh`%rS8&o-KBkU5dNtT_;L$>8lcIj z9u{(cqD560SKR48dz5~P=Dh)p{_H#GtQVp9RpvY`YSiv?+DEY;hnH(c?Lj7c480jc z)^lY3s}=0d7uZ$p_hSwwI*Ve9XcMK?9JC*S-~LdS6_oOD*5Kmku1|Mc(GuR*I_9$q z7NecKa7aj%?ev#nA*AxJxAqKn=rM`s7&_7*fkm*Ga|uZJF0$NP$Gm|GdxH(Oi>?zL zqJ3+`5niLa9f zo-_;4bod%{L5~l&E%1F+M34s*gK|piE$u~bc-(7CibCC~E)!l~^|hBzp=_oI&flNw zpm4_T4)(rY+A3^ebmRAd#>U)} zMW+nTNZ?@bN~}i2sxxN!e!Q=#FdWGj+Pnz{+UfNgnNjf9^nyb$gw8fYh|hVok?aP+?v`dUcF$m=Xyu9GPA1A=cbs*)66puRsu5Z3MPkvKJtV6w~la|r||16Nk z+179cn&vON>St+)=~ zTRsgp%cJ8Kfm1~UZ8E&5HTCgh|vH5$O z3GFzsDvN&c)gqQDB>y&Rck082;gy=&rT%JIk_My7cm<{(fFKv5Z>jbs+9*8*eIv}( z`)4h@Kv3DbY{dxJ)Z695dXvTOkpve5+gNlD`Jq=&XeXr2Xbtlyes?tVIS#qG_+UVF z%_$IyHF(u{p?R9H#-@$|=RA3g<|Yb98Y)g<(G8yPB@x7TSrxc2jU^I8%+~4h z1eQ5jV+*O?7^-c;<|lyrite9pI>buo5ApxrDU+oM#~8Y0SGc}tD>Nkh)U`))zMnvL z2LZBJK_X|$O`47I4+REk90d>Y< zMO~49F+Mocju{`ysBMOr;Rw~$y{%pYcTFgWPbniF5#(!1fm~}@E*mO&2XLBgYJs4r z1=z=30ctSyI-bY+k5&Lgg$5>au%VghO26W34&)@HrF! zjO1K}G%-2lo%G^&ecCgEg9VWXLdtI|aKi;Ru6d2m3|RQjh1c*5yW4j0*Ss$QDFy4x zUZ6StvAwok*(2JRiNZ7yrCnhoft2fD@)7|LzxCwP#l|zE%1iB85g(Q?NL0z@I#@=< z@UTXj9|cL{1WUe-BFsZvP+ z-^`_8Hb!HA;0iM1Z0SBibeSTvpSpraH1OQ3Fk z@BxJ#u-TY-OC=CukO?I%&mtK(9NXJ2Ddi1uPp-l3&P7U5w57e!67D-fu3~IGbw1Al z-tr?=y=A?X1{_H7IP*Z&kbUPFD%i6h|jamS9v%zXlJ8C)#l3 z(w|p~3p3F%_8ABqQ2Jei_Pj5C$?md5#!}&%@s80d>{B~6$r(KNW~ibJ5-vgkT2e$6~`oq$0`EE1K0y5W^K2=Y+%v}v#$Y2Bt3|MhRXc{PEda5nWJOQdfmQe;-o*JOcO)ol+^a6O zT+2Y7y~h1=6&N{$2q?upf=>4}`r7c_{ZSA-zFJMP6Nuy2qjp)OZ~b8I{?=6K(hvCc zjo;p{#y#VwGOc1xN4u_z=qZe}XI}(kd?;3Iv2p}xfJt};r{~k=3^?_}!q=5U5fa~V z#UXvZIP8T6Ou1gnQ|GmpT-nbF8D}vxJ&7Vz(2Sxn*S79Ca2MRwl=%QP)gr&uM=MDJ zN;DWcy(CFak{O&k?$+yIOe*oR z8}U9re{|D+jPbGjz)eC#T?eIh@8+(}#U(j~74G8OZh>mxw>*Yga<(WW#wrEJRmdFw4OoyTdbi-{%sPuFdFr^ECY;D%0h`SW)h*7ttR-fg?a zP*T6Og?9sYh5uMeO)z)>TdMZqYX6qH3@D_0jBjtEdgZB2@=LGUt&lEW`X>(oh!qH_ znZ7nzb^G~{Bf?cVuKFWKhuHz8wH* zj@+I)mLH^*w$g3$f)TCQpVx=?Fnv}z1r-yxuSmAIU(Y^VHUXX=EwVI_i_}tU{Y7nN zsIu>kHmQC>MM$sUD1v8>KO7T-48K66Fzi$?NW^13A3 z^*`I|wjmCs;#twwJ-B$BB)`*J|V^WnIH9|NPyqa z{s9&&R4e_prmY=2@C**UMx^_u$2SN<&D^Sa9y6ZPL}Xk3YI%E|i8Cj3!y#4v`R{7j zkZlrW)Kk<&m5ARXg?f+5foH_y^+6^P`zufZASe+xgi?F6CEj-uRe!_j?F4v@SC5UV zI>^j1>%fqS(N`@|#K9ng^1MhOVxt@@r>mI>NEi!#7Yep~Yu39HMed1frmZ%1wj$%* zPx_1&O=#wXTFPiWhVI&AN~XyYenv8hh))k1E0~Niw*TQw ziWSZt(D@-a7mwI8m>!227k;l&OFY`@63hU(dVtr*{+nd_#ami0UVr$T>l9DSITA@n zhYNi0UOEedv{5mS=6T;aJW3yMHIy%&@L{gDY{r>?P>vQgRZ>uvQGU)bkxH6>=kH_h zfYXsLMTh&;S(_sDrO$F+;Ecy9$;ZiA#sDeBtts`5`w3sN*TL!EL)F%%2)QIvh@cav z&dLuJH8PR*ZDdbBaq`mNK8kaUT;z>M!AxHojlcnMNxzl*s{hayU@DtN%!B!56xA`_ z{Mj;HR+^fVc26dR>2}Uu$FKM5GFu%_QY!Vcc*SAu&e)Ns6)$ zc88+@V~tFM?&h3RfkyU&M02~4uB)LL`kXhRx5w)J9Nc(+}9u61$WKsz|_d{+sNDp3F?wS@IedTC=97He^u{PvzsJldeA3D4eR3)2cMzG zFXrQ=0eb$3jG6?&ozj@KWQ;Yd|R}2Cj!pB)oM{ zCqt1TENp|2&CcecP5!b078?~7IptXZk74xJ_UYr2`M3sB5dZQ%6>|cvr#+hQ5@M#Z zwndtb>IrYH;@Llxh5-$~tpRZ28&xc>ss`EDq~npQHlX*%Z8E@PqQHDBD(HBv@l42? zytzQ-Wt;kz&c4xlSP!CqNoi#!#lH*TZ%_sZ zr$+c#@FVBJbKFvtooBBC(VHoD0*!k^iN0@AZXK4`0kc+wg2zQ#yOle(S1%Rif`#jyj~g&YqpSsa0CIyv9{i ztp2wM;IZJLPY$N=q~mqslg;~cbU|y?+((NR)*($Kseu}+*5F5UiLo#s&voFFBZ+ow ze#YSc-u%nX1$^4(b*kSm$bLdw_iFv1}Uu*6BnakrdQ&E-b~ zf3Z6zC5qiHORwn7WDgSDEqW9vcv$r415F5?M5$ay`3(bh$gsoV@#~R(|DP*B+W)1_ zYk?o-)4wSD`c@vI&n`1eWzuCY7kly=r6PX)N_h2FR;5m_{s}s^KYvbq1fMhM4B+6S z1Zz!Y1I@+p?{%v6Nczng&KtM;GvXZOIr8Yw0ZL@kmt0hZ-+as{l)bg|GmM#B=I`(S zUFoncy@$%vp!WRv`!VYGe~WZfjx)wKF1W1|+L-wN6DwF+m26)B<|ta!S^GO+zLu({=xfO(K}LU(%NSJUo+W1*`#hlqB_!I}dG>f%IAF^sr3K$bINkp4o(;qq-`VPnoz1k$V5!4xT3r8=}_0KNs%k=H@b%d2ysx+#S|3Ks=+ z?O(zK$ggzvcjVlB>>1NrNWCwcRw=Nn%nx&>Hz}WUe^8XBU+;>mB#_wS!ssLu5^bGy z*b9Y5G6)^z;?v;p15%OuHw+#2mH|2TWgw52-(s7@Vy7^zYp;2=-Sq+1H;x^do5uWS zRoh-47fu1bW@PMXoZz#4#L5`ZugIHKpolc8#9S}cgmz$I24i@#ptszKxtE}RM8?wt z`=`bKz6p(?+m{rT6hq>FR~IneHi--SmY?{MhuO}!NBswSaMmB0ll0sHR6R1K17+}M zz7O!O3xQL}&YrqTsc1VNoA!JmouTT_H%hko{%UyRO7#C+9f_vz{C5E!7fdxqkA6j- zEUg|OW;sdccQf|nRi3FL+JTObI>>`cHr0i(?S+)+oXmepZerfC80}C5T+u&LFe!NF zO$CLkF6486zQlbffAg3 zTyV3M&s?K-{lk&T*Kg({W|LGp*pszBX?o?t+eg9RmW6d2#wR-rD z7cXaY95}7>%ozB`_S^b#6VG{{W;_a*!uig)N$E2h_&Dv0xh#HPy{aOx)wTcZ{d2;A z(cky+NHrUu#1kV3PBZIopoZEe=|28ZTx6fV31noyqz@Mu&TUFxoKunFwKcnd-o2%#d;m6z7{SsNB?z~fG$l+MHTIsz zR83qA{Zym1^q*4<>p*@iMhAvD73Nwo+}mCsUd!}Iqz$Kc(r(T6*_0wasCw86o~vZ= zV}Wbu{5x7o*E~}ngI_JUgt2-gS7SM9mN4e+m)7xLA{M`2>E-K-q~S2xU%esK(>$h+ zf@5ohRznHl9$eRch`b*QIrl+3|2l7Rf!1+T!VmkG(23L)3<)7+v?`3jB7gnYp=d!t z$L@5Dv0;A;E=&(4OwKv%ZL;lV_^+-ce0Ixs74hZ2I*XyBLw6q;z-)L#dt7a~*rF~{ ziP~1hzGb?lzpp(3 zE(n1D(a0bmEh_~vYlQ;8k=0HQS4H;!(Tg3g@!an>kDHo`7iU1B&fYq49{si_-muz^ z@zWpai&XCTOL~+~ZxZ?oV-xu?OB2`w>CBwfCVs)%KaOGn@#y%7O)cEvUJYXze=P!GF6@759z}W-e zQc#-bnSLpO=1!cIgs(ct#im)~px6o9)3KXYX$))JJUk)sP_q9i@L)IxF>8MwI_m_n z&cz!R8z5%quLGIu`sCvwzN5IXzCC;zc4iFxf5lmnHcxQ@NT9D|d<{^3$V@IItffq$ zg1lB)onsYSYgzSB>aB9uBI%k)$G@)fe=nQ)SEVM^GDit_rT-9Nn)m@nXBp5Ga1;T7 zA})MPk{lwOs4NXoqj%RSbFZKx(ADTB{(sJJtl_ltp2d-#rGGo$=#x}Dt9+E^c&$E4 z9sFP)Weh(3JGl5O3NVGYz-K$(d~7tSeBvw>pY41!`3#Oi%J<5Yr&s!eYJ{_36mc++No zVw|tg&!f`1txn!R@|mGN2%u|D+^+}NG&*Q5LX1b}GM2b@*WyRe42OKsB@TrkfD{El zC#xx7s4D6UOv2~L3TRq~_e5nKdN=i-)Ks<_4Jq0KRJ0;wu(R2Z?v69#a1glK-V$v`5EGl zODzt0wgvxz4zTJrMLjugY;w(0T&ArgNyc3G72!fHH3Y1<$7gxWNczeK>3;MWz*GFEJCpWr>6 zaH+)K+rX9Z>%vN47p{QKx|`zV*2k+mD74uELpKu(aFCBJNHvax`{ zcq`;lg5Bx`x?7BFtIYT9uK=cFnu!1R_nP@NRIuS?(`M+{^hJ_mjktd}bzvY~gv703 zU=&Km{bl~^qt+>54fVT1NhKi)2I||0i0TDi_C2?e%$_!q$oNaI6l)qixaZlkZv%Cd z4rGs8e|iG{EJ)tOF7@q2qzwEd>tu=g%?g-)lq{<1D^NbKq7LWV`P0SA;wTxv0>fp` z=-ek1OQx>+_^rayQ)KCjg^2IwW<#T#6w+zbyi;B_i)$CT*b-{|KgHG;(*(!qc%htk zXJMmVMk%O5zr31xbF)xUmB0-Lt?RU8j8(6I9Kgt{b!1>6>kV6cViOd{F9Qa>nUsm% z>vi6F)DXf!=!+T7_$6Rn^6m_gzE^zd;17U*&ybDC{=1nz23tD0uI<6QTRD30UH!O@$QXWirI7T{cT5nU5al?1DJ2?oZy&CXo{%t05} zSb>vn0{4jyNXva(9fy(Ej3-smx~ysq5#k*PTzxtdv720JKls;2H-6p**`DJ1+swjG zA!J|Q_FIHc&SZUb0X*jO33Szl5)JhOUo$57Z=#Rv)be5DeQBkB{7NR19wYGVTnn$! zPyw>nv{+)RER8sO-vRln=AQ<MtIlr}Z<9-2~}-Dq+G7UYb)D%H~4Vl2TS4{msocmrVEd57&KFL?7N_ zGde-}d&7Gp(g|g=T@l(#0}N1QBzxo~OB;G8XX=@sQ_2Qih|Fy~T13tKk)`QuFeY>Z z-qn~!16C`;F8Y>dJRLb%+tHEtr-u&it}@q)ukEM#t5HUOenL@fi0Dr0kFQ?OPoTR* z8tL;V-ly7Ku}a$k(i3+)tb1Ie^!ZeOmEA_$8kqauCh6?*fN7BJaG7QxO0sCAPCMUj zj_b*Lx+w9YYWwk`)mvg?HA@f7n!n$%S{WW*(qWVkvrw`{2uYiGm-3HOkqs8NXkGuJ z9{99BHC*bQ^5)*a$(8AKc|?{-^l!2BT( z$9BvTV13Ekrq%=%d4`xyA-l<@nK3CM1@EY-q_E+%d|xo-p2MQQnXPpiOCtZ(l~Fa* zTVocn{!6`8`W=Vy2!Yp+wZWrz>*z>Dnb6}v#9b4!cO}WN7Hd4_hSA*vL~SC!K9E-u zy9zGCod|WgC?{6}?B^H#A+08rbr9K3I5hH~u*!;aVmMsiLw&ky24b5A))!XBXyT1t zJpY23L^uSi-k;zGgcH>Vt6!+H>@fZh*w>mc(_+NFXD`XTQ~195w=(Fq*P%lodIbN# zL-{m_g?yDUfe7`4v+z`yOj-aaR~OH@?O(rtZZa*N#=%5V;Ou$iXAktRzioTFyO@+H+RyV5|P=>l;_U z_Dh;FD2+tLj9cRPqa1O&pI*x(NqQ<@Aw?e$11ustl_9iLi$wHHaL~P8F{yf|^{doB z{nN^ZwQ~B7jtG5CGgt{iP#+R6M16YFrpa(jwdF*D+ZQm$<@xE1N*P#(dGCht2s|V- zt7!h3GJ5&@vF0Om7?9jZ5@%I3%_G#r$8n{AjGE!FDEAH#{D%+kx3kHmP@`v%{}>Ol z<|#m2l=mmRjS_Q^z-kFgMEjE(%*MMz)(dGqSWn45)@?PE6SMnIvxcZ2tlmuuY46q2 zJyIk}5+)YEnN4)NB&4lbwi)|kE=bX^#EDGtJcZTtjGDD|TlBTjmb0$l6c>H>c~Y%Q zZEyhMR~vj0cJi4n3~4!h1NH+=3``>)aM{-_(!HGC&v)%Y;Lh|>z>6_EoR&{kMUnv2|sFde0<;*)an_%QAYq>~ScatplS|7|p z^Oj0H#N<$N5%XdtOS@vSg6-)4RM=fGEI`a)7Giw0~v%3AGJ z0*UKoPx26!9gtFwqtX|I;Cq>aA8HsImV54uj{o*vd3sw9vjC7VSC9rn5B>$*y`!;5J1^b5IDoBqzDA#lC@oOl+v~5gEaEt? zpLqRyBE#L|h%hUcB`DuZVXVgs!K#1Sce)~0hkxL@le^p8c*;gDHe&k7%>6-?q0-60 zuh%)-Huy)|OK5SC5@CnTBPV%|rWS~hoee4e^H-qt2-NmF>tHk{fj$*-SK{Sp0qeRa zDm#xU`o0y`e&4KewW z^inPrv{8^NMinV9hlrsCcZ;iJI-I`ZjHwzB1|NM+r#l}wHBaB4(&CYxk|YjxC1kDn z0}Cd$<4=%E%@A zyMcwJ4duf`-mpXYCfpmpga=>Ynz6Z_#)5nPDZGFQz?yv>>(51y>Jqa_Wz~hD1;_%k zPhaOG+TKY!gW0o#FaqgVbxF0wDt=|QAQvEDrS>KGB(xL>+DPa7Ycv9GX)fKqlIh0q{ZH{k*ju=$s*;+Y>7xvNs#A7D1y%`N@t+w2IN2tu0e_0` zV0WzQ54Hi*mi3Om&Z=+fm8xpD=GMSuiUe?V)BB(n!dLUN!fb!%_YAzNBrG~I(MIj` zI0bp(@D8c%$3gJiiAVGI`T_x)U4ZTrx^}qw^TDnjP-29yWe0Ma*twSTkWIMP{2t-h z7iijXCO!~b3a>$TC_k!*JJaa2L5IeG6g;yjw=rsMp*KW56YqzKQlK$^;fqOX5lf)E zy!|fa`@mhxo)L)v{+e+~FV*#3kJS`h=5IFYD_5`+;1=%|>WVQyN2p>CnC?4Xsdt}x zKoUNK{Yle#ptE$@bm>iwva9LjF>AR{f0}IEJ{*2JJ2E)tCcE#Q+MBoYY?j2$cG!pk zdT08m*}{`qI2rlx-j`lFoN4XikF9HRFANEG;@iuUZQ*SGmc*!+<>B!Qm=fV5?=|tS24Y?4Os2hwEf4nE zkJ7#n1SB4B%SRq@Dr0L-Cqj^$p~L|v{3|qpy&%rM?=!k3GLV?!?i`r9%JOQ8j_Z<$ky&6F zc$Y!es)=$Rv;@EC{OsG=00QkV)w}^f@gy>BZ8b)BXxhe;U;uRX#Y}%TKW`E*gNTvM z7X#!=XVRnA2nDqX@PHWMdBd{XN4b4Y6@!`;25=tM32dxRcEByD=uLnL{9_K3 z>_dK&N)4YLtS+N9!eKE4&tgI#CkyQKrJ6e~r(vO!H@M*0 zH~e<5*uA4eN7LC#g2IR7ic4{T^PL8MA^&gC>Vsik5eF4O&=etN^=eLMc^Zh*KiC%UQu zzq&mWB{s8DSA%BKNp83J@Yr~An6l|mlMCF8Jc_1~e3Yw*Vg|pxIdm;-GPl^FO-YGi zz{a=XeBFLoyR}?;rAmG1FECB4$s$J3MFkO$)bR&3aI};9wJG+Zsd|s; zUgMPjRu+d~S=LX<^=X^hM;A(ubl}N5^W_&Z8C|_DR6osfAKx6Eb%#XyiQO}*AXI2} z)rzYya9z}&9sKoS0=6>E3OBC%ozm@)dpcWCAx5${)nQS}jQZJt`3GF^wU@5FdvUhT z{U-=Hy@s#WduITpB^-mP7^0r3jaCb-wresgR?g*Q)fZ|qmJerT;bKR0A4He}PY;c& zjb6_g5Lzl;)*BdCmmhXq!PG89wr3xN3ST|tS7xth+g)*RisL=eaTNJ-MX9X~Hsd%I zDRn4We?_INMp+u`|F#M}1KL!3A41eA9F3tXimx69OvCrpA%{iFHBFqvCn@40h+^kS z7sTl3J_`&sB=7)J!B-X6`1??ikNh#1FmMZ_;oWMFbOKW!R`bMK)*N}Q z{-{wPZaJ)Y#nr})o_zk^;rh!*x5`qBQY|Ue7>n-5@nxTu?t=%%_}okpFS&%Ce)dj4 zA62YZY9hSy6lA36Zg~Wq@0qNzK`kTP0Blk=(;^G4oa-?QzDAG8A9q4G&dzg8*dFfA zqUPEn`|47%A|6x?JM8%fv(ciD+`56IYVJTqXz*y)Wi|)CItAF!^cADzqM=6Pm*$!^ zBPz79(+Nq*JHPwkr<04tbxXeYL70a_qa!T|2o+j)zrCz^+$fE}-tw<*FJ%avHN`#{ zrmO1o4LgztZ(>t$)DcvJz}*Z4uexJ&D$q{;s_N|f&d(ca)7lPLxJ+4w5GJmN(`91P zQYWNdmi90@XdIn;w6{mJxdj_?SS=!8i4zEkS78|SPY>>P)95Y;cNi4fu}cGw5pY%I zqjtK*9pglmqr?VBeR1niF@pbRdDIi8G*7=isA)|l%34`+qXvxxhoj;TympceIUdM5dg zpIRr(cD}(f-89rcMP&e>5ny|D6`*76mwDJpo>0jBkLn@)N`zJ;je*D#tw%C7zGW>Z zU-Mv!z6Ooz<#06dbIRd6RXVayq+eVa6SV6SabE)rJcAm6sm|hWTU~86p<1*7Pa50{ zv(<=uOYi_T=Gc@UxrK=zIUgWkL*fp8fOe}~tZkDIr|Y-t&~u9~S=wM=<60xYM#ASo z&%=jE<$0Kp(Gt`K<13il>841*G_ld2ImBD&*mbD=d6EX<5dW>kI*Po}G5PW->a2GJ z)~MJm6{>vlH7m{w^cm9cpY5Ukj469E zjD1q?mdC=AHP@LV3ki?o-D837s4HpVUNyzsBrhJR&{eF|Ei`z!dlS=ji8InIJl1}} zgAdU>gl4FLg7hBnX#HY@6N#gYZ_@qJ{aH4&Ik!-NVLAzw*~{}_y~(cec!M;y7Hmq4 zNF91zN1-@+t3=kN*?>%WoXAiNH4rH5h3&=WLOU@F3sX*;J{>BtAg?#8HWq&0=X*OG z)uJE=)r>xHvN1${Vfa);+fTlfd=+{TJiNGO+Stx2Fev(F_AHtDu^=An@*>O<+SrSo ztJ1283O9*@GYeiNe*NEF1d-Rykcj10I%b}Oz^!?%>Kj=s=oLQ=&Qf*pHyHgC+Q4)Z zOzN7NAB`vhb3qmD1Jw^Q2E8S|R#{c}6m#FnxKh9Qn&@i(W3d)Q&K}eUwT_Q!OpkM3 z2h)c6WPa=!;^rf_8_`mIbBVujea{!~?#RPm42%f;{7(D53EAS}C_0pZ_MbC$DsR2a z>(W^D2$=w2xy^M3J;l<&;cU&82Pf>-#>+j`nYyVQ^k??yZY}5|3w&^gG&75kS26Z< z`X*RbPIaUAh*#S1k=pKUjuRBG%dr;9kM=E}YU*mf=O5!1OLZJ7SG#hsu>(4(rWVtC zM5Jtx+?$M-zg}ZS1AfOs_(ez zIS&Pg@#{|)aO&Uq$a&?$HBqi)+PDaK*^|DJRZDE0oNdL9x!KPhV)NN|O93JVd{>dI z+CJwoU@z0Vbn4lFWz&c|$_hLZ?3w^k*71niFCSs)HMj_@K|1QCr2HfVn+}}K8er8C z0zW1nN`X$_ti5d3UV2n{J+j-$kl_Cv(-eQcwrtcoRukIiX1+*#01&Uz9j^t?CkuO0 zSIW}4BdqDY={Qf>^`{nG&sT;=*4(yhr#TJeLxwNOP3@GrIB|_vq`rdhi1n|9A(-{j zMjR;KCci`fsb9z)b@KAcB`2J(16Q$w&y8pjV_E4WL=k?ij+{QE^zFUoaE;yt0^6C^ z;!C3@4#gTE?dwjH{%$7v2mRT_^?B*6pd58Zd^7`zjk~Rq_5DK#UBttJVIeGwAkV%8 zA3~=%nL>Np+qNDHpZpYz-k&-x( zFs1dgYYlq&R*T&UbkG^$Vr?E*-53~f*iolwOZBi%E+S=jnhmLnMi?MFYB!-08tM8& zxibyj#MtgdLBO%mMw$czBwR zm@SM$4{`aKw85(sHz6YA;#BI^m?==cnNp!(C|);xhix}wOi~sKyN7WZx?m=4i!OmB zzZSM1Ue=;e#7;3Ct~zZV>WWQPLCICd%cHqQ6T3m+z$BIA(>(wkwAPHR4Bt(59s~iG z!SNg)yTh)C@wfuV_98oXXW5ZRKC++b-?mPWJ(-%kUNrVa7jOPV)59OX_Q2D+A!6b~ zUW&m;2=58wqfXP!oehUxVgPh#0HH>(*3ley$QmRZI$L_}*18$ksBIuklO=cGA)Hn8 z$7(zb8{FLAYT-me>7v#Uzrj`*FQTPWo8N3o~T7eYAG*21K zgg!XkH_DJESr|2csh=xBn&JO^99WOO*Yqx_0YrDA%L{G%mi!2ZGy{j=1~uQ9vttpw z=lDHuc-`=E=3R@nGXxC5AVp%ah$+!>J=@eDs64PCyd_UJmJBAqcNcDM4jE9S*WMn2 z-xYz$Zb~%ZiJ=555p^X6$kAuKkpW5uAUlz!V8YG*xvJV$nQ@Dw#7D^*ZDAsPfi3;d zi3<{TrMqE(98fX&8Qlb2zUf1tcUCGkCN~ecQvF2FvxpWAJA(`W8sCjt31rj28DmDp zU5+6LT}*uN{zE3{#-@qSUhEy0#qQ;5=&3D^>r25<6e8S73QRt777fWW9ZFVNjFJ2M zNg5*uwlHtxbaz5!^J`!%vsGJ(@y#*mYS^D|wKZo*iv7=(q17@r(GmDY34G`#z$ad+`mWec;c_2-fXwLX zL720LSJ0TBc0J4WCXHU3bLA(EAsi6W5Li_%GuvgP8*1d@gorP08oJ56X z;(n4D5PpDMRwB{&c@wW!YRyiaMe5ioMp0zzx4XNz`()bt9(Tm)a9*xrCD zr3^^N1Ti$y=Zu+SopfKw42jHkjt*7(#&Yt<|7^l8oML;F!Q%7lXeJ5c_ui1+$bA8k z0YizJW$iWuFzDJ|l#gIynFg3bk!9?9^=}5o7~rwOD-68R?$~w400ZsE@kW>GohJB6 zKnQSXKMSHXm@W!7Y*V9x_ln0xAGUC%`Cgjxo5|4=;-a{v5F52Jnooz^Uqmf`e{;>_ zD>9>?xbDXa_~(6v8no9^W8RHus1Wc;cl219xSTnbFS(Z8Rkvh%4WvIQk>(-zl|rXx zb=jaF+cl_M8#1y|)QU==gEI9?v;1!L1UJKYHNMGumy|yT>F}njg(YQjwq@OK_ojxb zJ7~>X;t-iUvep=hqw|Ckz57MwgYcQ{OOI!Mm)a~E)oeP42Cs_`Q@LTgni{8Fg zZP!?4Z9P@0z!2B~NxmfL{Rqe`=pNtIEo$$UbvP*4-O%|J3?{=CfZQ?K4&Yn5H`#-b1r9VC>^(2XgPttdlNUUFB^_nkV#&SeTU4=?iRNKVO z6G>nek*h*EtIOtyM#}^{4oh)D5+F?1UT)^-0aKR=@uCW46nFW`@1<0lxisMKqB_slvJe6sX8P=&`v`LuGd0gvC_zA@K-g91XB25r*^_sEOsI-4MuUaqF*}6vO=X%H7g& zn~CAw8vRQ5+9^&RSb}Y7^=_hD^O%K7b=^WD=x-Epz20o|DW*^g#llz1QL$H^QEa%^ z%?^fYp^~6FeXLV0YzgS%xNIj>&1t^|k80wO8U$(d&XsTPDE$z3fd+D5>x%ZH!+Gy) z?pVbe3M41*O>MwNd_$KvzYG$0mybYt!WCo5LUM=8 z{#@1OiqAL;?Eqi2+@_GJr{X&@-viZ}*lXFNjva3TI~ESz4}JJcv9QdAV``OiMgXWW z?MmOyXhz8%NG3f$K?={6fxo5Wp(>^w0L@wx<`l0T0r!R`y`L|Cv7k$knzSR%7HtKK-4xD5~6GX&7n+)7v6H(gir!iy2QFg<^DEp{bO^ zA-1q8TusKY23D#SDK?Fr4b6dk{t`LCMR#koMstwsnzv5OxtQT1rRWy`ng}*A#GQ*> zU{l|615uh*@kSTLUm4vah*>_zloJHZK+aTqUCH?7(%LKI@5BxDlY{UQ2kXVlx*afL&5ebp)d5LOma`X; zKGwuYwo3Em!5aNl(Aa~=50pDw=wldEOb)j;YCm4;rEF5)k@ zb6Tbp_%1W{ZE_V75;;qi8aXdh6(ZV?8fzAqCMcActBmgy|0dJ%-*%?`QuIB=sHrI& z%J6WmDq1!axC)Lb*}aQd#hQmM`L7Yy5DMcW+sq=xnefBh#y56zTE_LUT=bo^MHI_%*i5R4&Bl{n;O~AzqeO z#dB3X|6-X}qeJ$Zsqd)No~V$@)Y<;7m(!Hr*yytFLT_kUs&yu8WUP0(MeUnqrZW2tmTG~Hyw2T@$ zv4GnV9KdayHVWj%Gmr>St^KZdmBqJ;$73|+4L|Gu>^Y;9e-duYMHl6$-#YEntmXVV zL!h2SCX>6M3I0^3kcB+T2$7={;_lCw=a|yn`Y5kt$3iZ8@ScCY>#UG)kNjPpJIC}h z(rXP{0@<_ORa5fY6D2@+^A&7nNz_5BWD%au68_~G?;nO2Ws1kb3fS#{iFiF*LXPDP zbf@Zx3*kSvIMWdRq;r5t4Jm6um4HKKY=NcJ9(*k5h^A3|PtGhn37BwM>4Bp|!gGW{ zhop|dKKVEFY<$NII@0g{wRd+QDl3yHXS4rL7jg8fX#sy=@gn*ExsU&!`xy1V<357r z_OEOcUm=pP;~$PLIX%6t1}WUczQbDhEeJOO*$|{~lT`&ZJ7aRK1Fy+yO?DtMA|1#2 zp`mJ@k*s-;CjjKWsq-h-JANOaTy>j2|9cjAN*>9;ZR;P#mXZRcJl<~; zBUZOW{AZIDpx90RtwI{U2_ueLY~;ZXGKHdXBlnXTx7; zeU;|O3Jd?DmEIh0rrYEp<;9awn|;Zsnjh8{2Pmzblfi;#i$fPr085u**Zo>DvQI?6 z#u6n^lyWPse3~r0T}Lu39|UBwS)YTR(GmAyKUF0Kchj!I=8x5%Nwa1cDfmqPZ%d^0 z^&6nOJ_|T`MOi?L7XBalji8(Fu1v=B14;~#rTI8{{hRg82O%j^X8oDym;bVQk0lsf zrYDrXQJ@`6aM0a$pt%4JLQZd}=1>iG0kLfPR;WrV7z_0AV0GcU>n-wt*yvmcNaNdV zO(2bETblqi2$az}P=$Wb*;VX#to%gl*rR6l`QIrCfNVtd{%1;Z43qmDOPoA!zsMka zcamE9n$|_xHxwY*0z`Tk&k;HtT;p=>|U*#HjCo(?G~seO|P@z1&eCuPn61kq`eM$8#y=no`dC9;LE$aMgg)c}$YPO{0b+NMGuYu&l2FH|pHJG*ev zgjpDfNeUuO9Qc?wB+8+rH~PBsijbpD9`(OP^SX9F+tzhD6jyl`bDtVkG}p~~DnHo* zil1gx!Wbg*7!v#Y+CI&ZY-S4zazNR<2^(-kl1o;F4eUd{DRO3p%R_%>T0!?GFs6he zYDLJ&*DGxiJ(ndVZ;@W~Yx9$G5fxz}Dj||W)Zkd+!G7VGou-E5tK7`W)EU+1D1nbe zg$Ys>!|<#-0Bq?fu%EB7I}mk4>1h|JjXLQICYSlnl}#|I1WzK)wF6G)orY!fpKs~E zXX4`9g8StA-haj&{)#MHz10=$HaUE(cqqH0k3bcVO0tBM9( zTUS639?vaM6ws{4SOg@Q1=KFF+j&uZbwvR;$YnsxuTq>J7KpwQwVr*~)7Q%UcpUbk zcR$W&=R0vSfYo7y3k1C|vP&#ZmXAezbLYdRvfMdVmVRw60OCy;8pua|KtDRt2D06*a}lHdSF9Jwn1YDfW1 zZw#0iCG+L|^6n`7Qi=EEStw%Np?r^@-bOx7lGoh(_!K#-RdQIkX7fD%ijp_Q2}=bs%IA74)}gmTuC;C|ozUg!GG_XnKy8(hhg^{g^;&&)kD_XIMBhdK|fOWM#+`Pj41uU%UkUdxe z-iX8M0I~Tk*giTu0D9!E#V>tz44y;HQGL%tQUw}xutt6K5lg@#$?iIo z;l+Ayrde!2c#8id)s;DMo~NuBU!1KDlFf{HN{R*PPuNCkKUQIC-`yO*zc?5vft)&N zN42*b20OGdM{3V`HV_>&v@rN|4AT`c+z(0~aq(ZtnGo7r_*(-!V!IuX&s7D1uEZ8Y znBAK@6V@7+V7FG))vF7`JN3>G_TFfPatEP7e+N)!hhD!#i2epwK#mP3)5wzp)%Hcg zwCOq8RsUI9ctdq%5xzW?)>FNlOC0BCeA_}tdwezKSOmRUOZ{iM;Hcj#0xmtuu{+(^ z;`82X0$qbDrhFD*(~5XQyVA-8YZ95ZNFx?99>8cVHc*p&-WJlF+lisnGXcApVfWdX zcw7o5Ce?tPW>R?$T35ZlO%~gAgQORAZlDe%{(y89x=;fukCBtcsKO$514yxl%&_yk zL16#N4c}UE&a39*L4sX$pHa7U3TRUF+Sl-13TUBaZn%?~F_Facdg~3VPq``tK~cIl zpn(j~g}8{oNFYZstQtkDCKu(#hOs??C{Q)w%(F}MzGHLy@jx>jM=aYje`{9dJ10PW z@U!RDD}$l%mX-B=2*H^DbmxK^r~zRg>T~WKnA=%KB-O7tf;SVShRkA4EWDlE3+bP8mq38^Vb) zeMY+BXLI6$!^6Yj5kBjobd7h=wjRt?SRPS-frF2#x^o{$q9!x1YX4H$39FbRz2kd> zwwLxJ`E8X#!8Jvj?$-FX(Au zbiRHB-tZ2QrShHKb(q+#Bi!A3{jb`_`Cb(3T3jc!7k)KTX_fl=+Ot!Rd0&<-GQVA{ z+`L^StO2m$%Q++ln;6f1$EzpPV06w%=>h6lZ<$tG$&ejT7*mtg1A*Cb{6_)(y;xXK z3w{>pM@BXnqkmpP(C<0W#CwkOUUB7sW+79|ET&rdw(VB6y^DqefdT7wctAECJIFhS z419(<0p0VuU%MM#Rp3eR`CyGYp*CgQJ$lELhY1mG5XRg!zcHE@9o|=lk$;eLUM=Lb z^!P8H9Itr>Y=lL=Xf?)+-*4=78O^R@ls}Gt zLUrmje2e^D3w)S^uE-EC>=�5OP1728_Xr7+A<;bGz5RgnFAWkCg+bLXi42Ry34 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⪙9>=)%&LhmU)!;t~KG?JSHv4 zWdQ%q^(mZyTCGq+tWq*?7`s2&H4}t})r8kb6&xBz;|-)LEWZsr%Jv3&N3ROX{J3DG zHoiihT680tQ8yzg)D1`hwWmlGh^-e*?$FfraR=}-4h7WAB>fM^At}n_>v?|lOUsdl zhg@EHz|@EgS2ED@%i_-4<CW7dgJqN*(+WXj6S*&;U)K;LES7B+3_-NY2mmT2*oyh=F4iH2J*v1yaM}9 zpfJod@R<5=-elcRHzH(+tZQxmi)d{q{8tU%*(yfO^gN2Nm@w(d>Sp-#NC0O-pfLam z@}0f(A)+CJ=g^_TVGlRpZMr8BF}dc0k(~t{`8n5QiV_bK&x#n-)_&DJd}ZRZ|LZfa<6mz->suIbIQm4Bg!i4=(ZP8> z`LFw&?Gh0Af9+A(Te#KbZhU!qce|X|W#(LtZ5PgsfS&7C*KejV-W!$7!Dy>3W$dem{d5Vw|=%570A3{E@aWYx9hNL4m(wJvx0vHhiHAuI-xC~lbadE{Q z>JZCymWi_t^KWFp=0xQORF{m8ZkWYa&B3pA$7kK}_(Ft!0=lky^2r{6Pw}KpZXOpC zXChJMfmhxr+w4lMdf{0uotJMj48l>TkhV1|rbnZaNlUQuZa$Lj?B;)^R&PeP3x_w%7m z=nL14sO-d(NGp1$HZd)Wzpv0E_6;(o1T*$It$3$K1NunO6S;vfXRSV@Q#xcO7zTk; z2E5@&?B)AzKJnMQ57rY?PTc6I#$;BSRg#OuMwS#cZn=N|`eEOQfSFB>=5vmT1#WrR zrjJM{3Y6ML#41=eTPolFTuLE@w=~O$buBqHZq%a|$3C$1&dIq?f2L{Et3!8dV~4U1 zf*a4Ds)b<45BZ#(w;b53D0S1^9-*ix8<6*M7sA_tc&$Zgzqq2(z+qGCkUzKF<{*T@ zId|RHbG(YO+%WXfuaR~7eQHz->_z}p;c)ZorCO`yg~lRAdpc?$N|;So;%}D|O-dT3 zYIJ||4Xu4&l63Z1V&K5{j};kFNdZMt%(0pz%E)_n(J=$0m!lu8ceHTSO|4RDkUpB| za5|z(rk%abTo8V)K|@oTtwy!(-v4s9I=z#+*j}erp*s7$qvx(ksXQjoq^H5?Qc+-7 zC0e!ZaYsH@iQ%04&}1O6`R|myGVYf0ij30s1&1IVb8C zeP~Y5b|6XajZi+;_T-U}KcD8+z|C!5j$e;f4Hs5XWXzm^76!P4wuD!9Ca{*L6GZ29-%x5oRlpTpZH3NFT4*kq0vX&3!jBylyp_@zapvEU2+GgbDc z^hL6>F7@kGm}QKp3B4}-DOeENH zOI;0YXxAKhjJO0o-bvg17(-voy)>qG@%F@Hvn#zj?~kXJ23P8zV+4|w+;XmoSP%z> zXwWNyYkNF+!X(exjFKJOMK_sxQPUgQjT4?d9sc~EeoUkaUeQCc5<3123P0pw@0pgz z{L$n|uWTa+n^fmItoWapG}hk%&bS?Aqf#++W5TRU<=B=^-o>iEzOd}; zFR=xY3xpYV%`9PyC>Y%HvYcIX-Z(KKH1JgmJ`)i*%p6qk7H_=@%@CNYge;M zE%aw8WhEsgfyd@9iSIQ@?P+P|7txk0yiAM|sYCQl zBwURT)`jy9Twd(&@R(kbeE6ka&A09={XQ{Qk4`I@)#+iy=aA^^Dmer-**YsPj=ERn zy&Ph7AXQ9ox0#LaHpRizs>DV+Cd(yV)7Kvwm* zQa*=t)#uHfsc%7$Sc4=2^N#PNMp>|eCA~c^5kVUB6?T~VI>A0dei3A`Oqe?ZW>LYC z(az(c-2S3ogRz;JI~YqDdCDZEl?gl0(~<`Zu@zCKZf$WB(!ysd#G8{E-i(PqDLE#R zP}?mdN}a=`IkBeW#xB)&!=$mE_*_b%pg**`BNJ7oOHY_HhL}0Bt#7f{FTGJHgTW|z zmm8?_--6xf+V?~T-2N-jGMq11Jz#_&}|S;a+`RSuS^ zj)qlu%LMk9Y%^_T_dgVu2v&a|F@=SEmSEhu&rtZ`KZ`3fU^q?T1;WO@tXO21?xrFj z^zFNS+!4@+q~bB>r zdNfE}bun@uvs(Mk$Z`y8UQ>z)m1YGsak<&>s* zX0b>A_cApmi>R#sSPkdb5=5DoJ)EIy$6!BPS~6|7pX-aQ%D?G@TVzv9?xYol;n}*R zJo4lfvttRb_TXLc1u9#6trtWUd-_=&B?gz+loVZufMl{)7vZNUvglM!pN)u+`=`t~ z(Q(v%8$(G#j2tauDdTgBx*1lIcPFd2MA4KyuXyvx>{s>WZ+)6SRQ9DZ|LlCulJU3+(^1-QF0ACOK6ldSE--1@xRPRx>Ui0giSIeQ|$ z=V!=Y-W$(`QJ%+QNqq(`&Bb?R3)1`M@Hm`!&cH`CW-zZJ`tU4om&qKmN@~#EfcDTI zHTY2;OY4?%sJZMxhZ{}xn(5-GBo~L8^1owmD|(u>+Ya_5idc3fsIpZ~75+3~T6oQv zvAg0r%Y3ds8X>)8v@_5i%Wa~<(O2GR$Nq>M%bN1>q5AR{jII5su2nj81G z69x(~fvSHFss_xby@%se@6COsR!h^mnxa+z;atQR z;l5qtM=i;;&&KLI#1JD12d3cBeUARvqVdEojmsiBse0|-j46bWP=?TMcNJ`1gVt?U zB32b>YN9oP4HO2Q4rwvxPb~wWK6L242)^t3t@4Peg8R24xoI+gKDRnlUK-WFtl6qJ z6xK}B)c6V_9h~cF!?x)I$nbOiKZawGxiF+UeR({(py#c_U)z}St^{*lQ7mI@o`gg^ zxI^zFH(kQ{+z@x3Pe+mU`pX+Nc5UUmyuTxkwOk-g%2PWFoBlG>XQqoP^EbmS;TW%5 z{FZeD;#gw~StMB;>=a@ZEL8gPDtWl?*c?X9!35oAYDVV$A?^^s5lXicWR4AIzmWQjHx*FKI zht-R|uc}a>rF@mt_~>G6Lu=rdtzv@|R#{hS)l4ko(n~YToCc#kn(oV!TQaL*?JUcy zY8+2(%mt1TbR_+nh0>e-xsJO_u6rDae;78NY+e72S=*p}AO4y=uK?F9*k^Qf-(PF< zb9{HVk0R@eUv2fqe!ok|m)7U(FVS<%g&q377E|hQiV9wx?tFrYipQ{(4z~2RZN6JZ zrQ|7TG{vlAi@fXrQ)QPMu8kOavmm)YmNizPQh+xIav9mpy)qyAvf(n4HvgK`X}8E2 z@}-x0t^n0h0oC^g!J65q(m`!p{P3(ez|tHu^l>%lKB*9=B3>5pvqparJ61LSbuRm6 zM>yyogqtts;n8{uW5|;70$USVEB*_g!e+wwi9Trrl$sKgbvwEvHz~%nav++u^m&dl z^RzoOfA^nsdsKgt%|J{^#kjUKvn$v>tuVY1dCJY=+%W|8$GJ@J5pYV3TO1*m_4swz zuD-i^gVe}7dxgM`FDyJCBO@lPmLr}sw?7k`r@V9k*ZDfhq9l*7LNHfV>MbrK3&KbS zxDGgO>18l2Esyo1$+@wl*SNo9-=gyVMMwP`(?xnYTd&$8LW_yrU$A;$y@|m>r><}RX2U_*##xH;KMg{?Ng_R?&Opz%k1AXr$6z` z3~t`|BcqhwfY9M|q6Vf@=FC8c4*%V4nHw)4C7C{=ulgu-c;n&DjXD^`_+ZVU;=9hU zfLq5@>;qsAKRP;zH_d-V*Ur}+du7Ed`g-w-P(sym+dhZ>7QGOaShYRHKk2Em8Sh7q zO(5^Bj2(R_A%aMc=W5@w*j(ogT5$vtqjWbG8z!7SmhN*@I38>2GNq4W_PS)*BYjU! z#Qw#Y{vqyBH|pQsTX(rWOt9IN!u;BYAeE?<Nltr_p zzqW`zU%5cUJK~&D<$C7)%cYp9XNW&4w;2edk_IEpnCQ-8jYgjvPK`1`uUYU2nIc7L zr&9x4E{Uk4$NKZ717hG89rLJ``Xb|u{3nm}#RZG=rS?45s!g&uXGZB92xh8aN33pI z+ImbLp(B@wef_;AP;(E9FHoqN>%8$z^E-6Y;dTljeg|C-Kfh8cn-8Cmck3ib*JW%>ck+>h{cKF4v@XINn!A}z9Eyko`eEE%zI18yj7)gm-qLmooy4` zTATf#Nb2*qMQp~>t-R>m~WkroYj)BArwQBX} zy)G0~Kt~pJ8EMAGZ2o%{S?JPQuqW0}Gp(wMSp@tUE|K0{WgUgIqd_qXJB{Y-bmir1 zV$4jZ*g{%|o{im$5S;BjQ)u?y>BQ-=sf*PD4Nq3jlnAK0<+UUw5JFkDGvOSaxOM9v zI$*$BV@k{G?*uo$xK{J+eeh!qMVU&!1|oJuk5)#$cDsHygx(!u`SF)b+5W`01IUzs zJD1&*4R@a_XLVUgkSf)r%X&739y;MxPW0+Z2(W7$O|tX4A7-rmhFho!*ou zD(}*ZVy%kqhd&IW#lFL=f$CR7u)jTv3!kk@>g?V66xg%0n47yIMp5$)$eU4`uXeB3eRZf zO?L?oH!1^3=^CO8vh7VB^APYx15s2G#>LY6-RhDiKjTR_r9aTItBPVlWOWu{d zx(=(~f3Ovk%=>X$JM8D?L|Wftrxsu2v6j4PChb$re<7uKxr)XG!mX%BTub7*w9uWZ zWeZoSexY3LlJQnib5)Evu_qDxFT5|ll#)aLB#S^W_q2{{pr0h$WNbaZ)R-+OE2_zE zuG_KM*Qt1T-XDtoiNq zar?3Uio}XrRpjvGN#EaJmin{ZEU;MRFQ>oE_ndV! zh%K%<$8BOD+I84EYsD}yYpanX>wK{rK{b146kXqCw&pc1lBt0j}{mHn~xV70sFQf`ci=iMWb%2kukdiE8X>^n%r9X4(}&>dbL^gY zm1z_K=X}#U@7lg%MazIoY`He?xvVs|+_Rot;a`S0`vP+f1$z`F$tHt?(I(^ zT_rU(vpOdkJzXc5qclTmMkom`Q?C?^d~xs?_wFX>|tsFJjK10#Iytmq%kjWkt^OR#DG zgB;sdsXrgmpYA@-_XQL5u?n5ia6XpqeXsYs`f@GGHV>_H!g*|~mWamoeZ4A$#EGpV z%BGSMyRa3{FcPsVZcDVAJ40kRB4|73=rz$d*>gnc4ABv#J4)=lg* zI<1?cYkc~ob5dz%AwBX+Z?Q9&A?SL1!b8uW-d$%8mZ+m8EQr#If%Rg(r2$8YM-N^n zyBhr#-=yJmrJW0tVrtC9exS0$1+p*GK8;Z^xTb?<6O) z1BfjfTz03FFRf}xzJ|_gmorUz@l2vzFKnwA34XEv8{%j6a~`cQ!85Z41nYb$W?z}_ zq<#DMV$bn}I{Ums*e>9TqrGhLJhEJC;FDgGcpA1%(V^la?{1l0H7=b`8?A8z2@|YL z7*L^oACM_e>k1L=daO;A>-*FGdw+fwpV40J z?Gt08!h3a;g-UH#+(aG=(rRS1w(jjc<)I)>AT%Hsm3&=yoEBiJ-N=)tKNc^O6b7Rt zRJPL?1Th~Ph4_E#zZF6H;dJ8OZrXDiGyhN&zHXtVt@Ecsf|yO0K%<(aC}&)`u9v>W z-gPb~hudcm9vJ(^#@~mR1OOq_j%7P~V^6-^*U=Ui_*4E)2JNk)s*@nOjD$7rcxiSi z2j#@eKBiWTjf~jq+P2dn5NJc`yvGjg-TelZ3}gPNiSFoO-Mdr##BA*QYhee{vvB~mA2d2E8aUP`XfeJK* zx`-KxyPek)=PW*ptEmZ6HTby&43R~fsV`O$1GLnKsbQt)daa8`PYFNPRg|#esi!@_ zC=jO6S}gHr_-R=2b9nebF$N=>V}n(;4qO@MSsUT70GkJ-F3$$t(2hv0o;f`~RuRI1 z8pm{4eN~*T7g{WRpaGXNo!5X-oEDwxZ?Aqm`(?)-;VoN(vwQpEz2`{!p~M%u9fxrRtcu3a{qX(CDSCl# z{nZh@$OkLLsk4lw9u4(yR(#26QsHWes$K1ixY&rV?B)3hiW+$!YK~D7N_SD(BfGi2 zWTET}oQD*qGN+>-cT|`E@TE+*)Wg=ne+%tgFm-kumC>mZkxlS#$~BprnrLHtD0tY0 z)Aq<-fDY^3$wAOqovyi~VYNxJ@{LTKOR@Q`lIw*$qf0h&69VRnib56zCq@`I9qgY( zR?;~w%%F&h;X`62f8CwDA1S!FW3T%oZ47F|9Q37bz4_9SXpu;C*tTN-F!gV1Sga?0 zn?ELxQl1awJ-uEQM!J{p-p`s*II=_Zw&()3tI}O{n^bJ<19!=^8z*CCzX#F=>u!DjNL#S(MqV>3A$(BPRIh-z=ZlWb?#ZdqHuho#BbAR6hWfl_ z%1EEw?R@d8o_5>!R;7LXCxXUcKSmpwHE_GOre{5s4d_dRf7~}**JD~0kL#I)mzbLH_LtWmM7^{J+Ozriwb3!1rUnvJ zoZ_XYeCkGA_5E*@()jC$qc;x{4WC4S_?qlg=w4TjOsz&i@AhtY0?$bq=esenZ;NmI zP@HF#hF9XV)CTQ3zRG3>F?9xUkkG?^0R@;S~8J8@Ip9Gg0Ps_04T zYJjBh%;D=Ae~FdxMPc)o8`O=0KTKV{1%jiQyeA^{+uZCO!){tga3EYx6Ez zRJdev>imzYloO+>gSJ)|#*3RN(Bgrv>z+Hkk7IgHJIYq}IP$`=DNjMe#z)7uidp;5 z7CDSJ#9r?Ix--hQ_wJ(}0a=NazRxFtPp8voue2#>UJrDJU+)()BC=Fn`?%@PoZJP+ ztOwyGPN5h~z!h5W!~DN@z1(gqn_D0=_0Kqdx~raKXqO-_JW*ws-*VOR=ZhW1e;S2V zYomisU)!SFpWj>I{xbud;4xxpkxPV5gY1;u{|%JNJ;$U}^2xlBwYe%ldr4C`AZl~@ zwy_2(b>GcXnxzAUj4-+*NRL>%QiGdB&@1XLKddGs(|3A1G?qAEini2k#@|!dxg8rZ zbARP*psFD>XPBw4)#t%YzXEl4Ltbu*_fk|maWl*QfIvRQW8jSHo0Bz+PMoJ_c6^f% z!S+4m80K85kF|0$qu%;BIDhU|do`B&`OHx3?ig{Daqa~K-< z(~s4p!N+-NMWI_qAB;!8*fNS89_*GyJKy^r@r=18uQ&u#Xw}mDRQL3`6tQ+7>DPV+ zOc%v)e$J_g=66l|bG$`tYW7g%xeU(-`y99Evf{pI=Nm<+C1~XT)ekf~P3B&$HMI`Z zBmk}0XrO24e~6bORx0~yV~wkNwDgWLX8v~pbIorX(N7}!&{c*x2czWgu+6$6cIy}w zRywx-;Hlo8!50O~Ew#2#98vE|-N-Yyy$2Z@`znN$(8t?@^sv=LhX2x9SfHID7gzc> z&u6j;mFjwjHCBbp{A!q^Pa03x1%^nz8x6_1X?u)EPRQh@EEKYWF0joK_;sl7uB1V5_vP?7 zK|B>^>R76-vOLueJ2mi=1f~ z`&zHtM2l*@;(uD$ilMKEgB8yt7|uUi#(su2kPSzyo~N%V^MVO|O}{heFbAe*3@~xB zNr`rT67?T(m%g467#i={BI-Y}5{3-`jkdJWKX5dPp2m<0U!i(6#haG2H}H`YXkgz6 zTU|)7uVZO3NJQ5Bskb|;-4~l^H*}uM_%S_K%!mKJuhL1^_g743&F5ztx_A2}uQFSM zE0V2jwamYOwOzhc)h+6aT~VmJ_P3Y^_!7?Ta*yxcHx(e9UuE`t*X&!>+|%p_V>`v6 z@#uaT`@B~uS40<89?kYt=XWgn+XEpMFPiJ?3LJ?R=R~)+jyy`W`3Y5U=Xeh^Ru$tC zBJhB_g{b=bZXO1|I>Au>_K(l}xbwpwrQ>4%P!uW0HfC_77V7U5vM>DV2Tu4o%9n@t zqP4`ucyuRP zQZCBL|4;chU<3e&^pSE7ANFZ}9(?A$!m4}`dhp|;%|^*HDbbG%gkiC792UwmLIQ6J zMupu+$|v7$4LsVr?*!p@ZTHLBHPY1O%nt4Gv_-m=;<455r<)OO`R2XtMPfFaQ^>Mh z`%1dGoR0JIH6oj}jn-vN>KOu7b-PII=;Ft?xD9g^_(HJL>Br)p#z>R5xNi2dLJS@T z-xIGLu}ZwkQm>UF==R|4G)33)uF|UuXXO#YHXaBr@Y_6#dw8kh0hrZz}#=! zoqdWueolRgrXpnWX4;2lKXjV4iA8S7$0xv-Gei4VtW{hGcg`=$J@Bn4x9iJ5g*u4W zLIAk_uU|2xL&s9nC1 zWb*okk$#R`fYC9{I|vr4JAOvdCPVBBG-k`_^(8Lu@@CVhf=W~H*=9iCHbZRnY0FK9 zU*+ScfV#IPoi7N-@OaT`j=u0a!(k)+afHjyxLNT{#LMPGA}RP71H}L0CV!i zc@Kw#nQD>)^{S78)J(0civk~il#}E${se4KOcrp6Yiuvj57z%wgX>g+9k>O2Jv~d_ z%#?RAozLNe-*Py#{j!U?^~ctjMWi*T4%<3>)EWV7J)RUt33*|KU+a}kUNd`xqaz~* z>}TrHk7Le~jaFL<(7K2AiosuX_5*nHj0B3Wv(rrO9Dtt1Q7#Y0eg4L)q;a#bAnw)A z%h`@HQ|b_9RJqOnG-==;6!KxK~4bm#<~q&qxJ$rt-UkhKKf? zY~G?zKd&Sb8;SZi9U+)%`u_%o4sWG*g9qy8Xj74LS96T{UYO1`-2h*_JlHZWOCeAr zTRmWqZz{CLqHJCGV1tO#x6W5qoP!rCs~&or*iAHvZ*3Sn{PHTGVueAKl<(7&pwqN9 zK{j)lX`0Pedc<0x_$-(>7gi=8Lb?*REEa zLGuErV{1;%Nt7I0oAQN~&VVJ@4*+lUv15&2+@A@>y;w{T<>V(j%nHs|RXl@j*qNA^ zP$%PFKGnUJEnXK(znf#n6qHOq{CxP_@YqS0skEJ`vnhsLt?}tk7DMkd%qr*>E!pf~ zbbs8|(Cro*bUrO~Yj6a!vxJm;*lu)qZ#c8o#HU!(C_OKYo8V^LR*$k+-|% ztFxsq#Yks&FIjUg#V8%InaKi@Jk9)67tm&3^v42Pwd84fApqFXKnE4Tx-RvLA%B<# zCdyjh5NT$M$>h7#Vt2Vt{W7Jg?c#rx8vym0;Ddcu$M1AsNK<_e_+$DG z)alp$Z(RCf>DH~Uvy;upaOI*?s+;DQ8*$cVZID)Pv6z&exPi=alQw!BqmRc!iN|#c zZJUa&w=tx#19$|s*c>#(mWcfXpIz8PXOoT|Z_VEaKYlsO5k7@UaDQ&?D{Id!fYSg^ z?mzU@BYu^Mr%ay(LCA0E%XT!1UQ40NY|fO2M;A-w>gxikspLzGY75u%+YbSh<5)>| z^L)7X`-`70vRHgtdG=X55EKckPoR9G%(n`5eXonJs=TI#?OFjJbuQAsw&;|#s>s=P zu7QQjg=eo8$9;xkaS_%x9$j61xF4WJLoI!T0LkHT!R;e7VYhf`Adn@)h|%xG%7)zC zMYSC#zvU=jXJ%{T?qQS~EU2riYbwy8>G=XZv(Se``^$x*R%*6tMfjno3y=h&yoYEB zPC3yECla`r)7aQV<9L&3EBbnFhftLH3Ho6=`Si$-*T}!khrO3Nz?gIS7UgCqFH~8YB9pUFsSXlN?`>!Nw&lTjg_c~2hgV) zd&>?3U!AfPY-mOk{dBdIg+ia=e=~qy;B)iY#QD-Vp^TV4#f7aYXMvK|1TlXYtI-?J zm+ar@b|U%!wqy09pWlt}Py7DV*Rj{iFL?H<2f_=2Db)7eosSe7RP}$&3jKJGDlg9O zyNr;<(deJD`;EoyoHdbE?-Eu_9FkeAb-SqxeioChzX;9|9y$DS>5K3^yXECdy3BPn zBqCq(jCjs(`?La~+v5||@uDy}KvHP*TWk=o<_;kGf}(%tFdEQU2E_2Xwu{69NP4oX zA;46=rL->gJt!_vsZMpyt@(OcG}acgpc9YOk*!;H(zKdYTASUGjY9OdL6h~1)F4nC8#AekZV=_1 zdIL-WF>~|LLp^Nm8|E2g{m_umZzC>!$t1`xpA^-P3br2wUBN+$mn&s4#NiT773Od76GN z-+!x}60U{953Uz_GE9AaS-{saBwJIyD|@kDSLgNhc}~I<(Bk)d+z&RJ^%slO?AF)4 zZpu{A(13e&>Q&sQ*|wmOm4Td*?YWLq7N;|Yy+!NbTxE{9=T)l8Dt!UZb%x z;7fk|`f!vkzNdN0P0s#e5Pop{+BPR|GJ~~Vg6MnSH`s4!G1tt z7R`z=;^Glk`1p4$Oyye;8#bJctZ5Yy**=ARXT~T1gk!8ZZ9c^aicI0Q#~NVzEBXE# zSU#-2vu!PzV!i+3^K~-N)RN^7C#?h%#;oQ2ihd2%w9IE~GdzEF!z4d9!tLDYDfPs} zV_O|8RC!9U+o8QE4f5+Ea084dewXqtUAg2$`nfysDGJ$8SJ`m) zQYL2j>lPM5rS1lAZq5Anw(sLFXxb~@?o4Vq1p;xrh znbIoKubno%?}RnyZHdIG5k6_trNpC=AVDYF!$& z-6ojK&%l?=s}A4Jif5mF^g-wr&rQH~+;SPHyHVTd67PrmNqY1z68qIx-r5p9t6k&i ze^hB$WaymE- z1zqOPx{|p+^$q4jji6mr&Z=7a&CrK7ucXDOw?Q-ey5c>%=a6Ve`}(BzcAZsutDIBSAe{2IqKwtB z9_gQOjffkggAW9VY}7U>+7X6fIq;%yLAy&#yqrwuxVl|9IpoBG2ly;Y34qB++B37ObH3E{o1G}K`=rL#VDAa3ui$>U8Tp;-k-9Hp7KfLD|CMKH9rU95+(k*nUl|D{*@xyu0Q$nVH9{gW{>_U`jChe@~^XEywZKatm?g)^f`XuiTqJv*;G8^-%*3_ zRDrFHl%1c98xS{T6o_xt%2Abwa93lawk(bZcVA5dH?Jbv+QWxpM-)%J0gA67=VkWk z;4^^hx0l+$`T6yn3+H$hEq-<_YE?fjmaBDQw!RlJmZ3ItH}I++)X~`v(<$FYxfdI? zw|R6Lk0zxg6qn%q-Lu@jUe-lup{U7c!ac^~%7jCZ(FkR`4U@lV*;9w)u|LlpGEC)QkyWes)P0poDLKo`{T!+Q0O}dDE)`7vv-jU1c*2C=~8~QNx!_Q1dISz{;jN2QaO!AaujdJAtKFImFL0#_a z!k9SaTzTFOc1)*!((PgSy2R?MMHBOHlY2`m{bdQv(Ekh_!~7RpT*|affjMgxv77C# z3&C;|v~?ZYR>E>_)?G4_(Of*-^;UoI=~*Libm@TPXcRrI7n^V<6t$|_H$)`}MHlz! z)O^ycvZ~RqvW5+&Se~e0oQs_cnULMmoOw@20{HBf2SLvZZI;XT72*99v&X#)*H5LW z1O(Kq>}g;Q9w{TvcgH4LmT%HXliBo3{1>wCjC%$mA}<>8oJxyU^Y3Q`IaOG0A}wFv zy?JNrdm4dII|h0!Xkskhg+Ee;=^uSu1ZBS|)&1Rc_OI$G)s^eKq_6K5uAhKdxXq}g zcUBAz4h}b4gTNu)S`8w)(jJ4Gm=`Q9c8OS?7d<6?db=MwKbSBdHz>7H)nobM*rq~$ zl#m?{4iV%kj2Zt=ZbH=W9KgXq_wCHlb~m7nJnzHmb1e}DkjGP9^p3qvP! ziwEZ|am2wRR<%oerJGtnGAeQG2u+_4`^+RSvt|BAk^2Jw^X$SDNRfDHX7kf104p^7 zO0A6TAe&b2Gk?~s4CZH+si(1u@+dl3j_xQT`lAx(ourS#{(Xt^$MgrK*|U<8oDYQh z3CCsKFB?N#!yUxRuq+Q~BH*kzsWe}tW_d;rL#R!EFb7l-4-ZIdtxG8eKrQQkVEx13 zi&VaX`-atj@r&yscR~(!kmq%-Ro$X*=l1-U54h_dE`0jtB2xHj=!{_QtFFvC07LrD zv`CHD*k_V#>UL9AZ&~WvA!5MUN+I6h4cQlooh5d&*Nj$kSFqjy9Upbz(-V4Ufya)H ztL1Czp5p=h+rZ3^X+AlkRg7m|#4bARXlU!nNO4`eG~Zm)x}2>}v14TG7Mm#CVQzU6 zr08|UWEucnEE>ZMvaz92O{Vramfd}Zat?(Bi()?xkj1Ue-@r4oro00y*uB~nS8gA2 zwrsR7_%dP6M4HU(vNl7ja@2*VR& zX++!S1%)wzj10#r(DhpW(ETrh!vpf@Sqq&%_)nxJ2;IjQ@lu6yAo)c-?_9jfr-zF5 zUe~**20TwxxpgX4W`bQ`#ENyI)$vR(IvJs?9u(zRtKknC+=u^8-1mi!a#r}$?_*8Z z&z|kQ`&KbXo8y+88`u2Bow*z4pqhHqA)!k{F9ExBHizVwrLY_ue=LKZKQHBx8^85~ zN9^Sd4OP?bAP)7IX!mQ~QA=-U;R@oY5(V0%+TK!BFxL!n%ws2OlCgg1GI}XUEb6f6 z4#-d5e{}t`ezugG_gHYweq6RXd9?_l_W%Atq!PxoiIe>o_nzXXIL>{Wqz!dtf?^^# z7@ucuw{O%|Cp1&!1D%Fwir7xv@NkL2DSXMg4iF}MD?^r&_r}z$Z$mL94h0|^xE6ZvOMl(3!V++l556Kku|eoqff>V4^&GP zCJH~YG4Vpm7@^`(hdWoM8{iK`DHdm;80`@IIHL%ezy zwY+u~mvrV1{<*7?YeA#GoMq5#pLHX{j;$>wiW}G5Yubb!;>!RA)PQDRYF+I7wmH?1 zvj^@K$Sejhav6R)>56o{-#p&Qbs$^TR)Bv^fxq~jX;iuE&--c6bZ8(WJ4tz`D;q-j zRfkz@u0ttID0pzoQx0>ePV|#>&4o@8xg=nnyWZ1{UO}NMVcWTluDyjBTb9pPfkX|9 zRihmQjSM}r_EHpLW;)Gz$*ImtM$Gr2!quOLqdh$@t?MiDoZ7Kd9#8|H33$e6`nD=2 zx1m1WN2}<|NB%7FaY$8zlG5}B*dDa?Y&%~2Er!(~Fe+LkY)jv4*uKHtF|t&tM=Yns zm9MN~G#T zY(HF(mJy8J+sa$3?ZBdBVo3dLBRVjO;Fx3*wZa^laJyeF&*?v`16d zB1O5>rt4gEO4%?TVAIhF4@;%#&WIqTmA5V@@lhj2^0G`<*WduWmGv=q{rJ}jTb3Ir zG|FgSkxcUbqX6jzHJoq`xh~!rq<-jh;80V5Sq@dgV8@7GuxMPs3XP5!8~>t*s}FbH z`_1g#e0)vLZ#vD=!;8SSYgsiuI+Iu={Fr$l%QNL}L!qZlck?Ih7t?27#C0m&%I0iG z36uw2_K8JUTFbdQfkQ$fx0(oE{^=*1ukx(;_B~Uyw(-r2wG`(W&)lgG zq{H(uZ>(w^YVtl;%CFX>wYP`5!`MJ}S^1IcS;5`QnN|apQz0%oH&8@4@$;w^_lUCi zVY*Dj?oTo<$fg%1K4?uoryrr^5PcX3hp%{ShpD$L9%$RCkC8pG>?7E)l9(HYx%VdC zUt}Xpz|gO(s>4;JZvZGEPiOgGw>1{U&>v2zn?!6U+c%OTr9-jvc|0-u3ynayjEvn; zL*2Qn{uMVt076BZ%wxLH(C9l=kKbQ{WO~OQ;-KP8SM{uCT7;kd^jPxXQk8~GppYnO zwX@@<>6NkFQfY?r6}n`}<;Vy0 z{-rNx7z{E6ohhJFIPF_((KwN_CfzX(vc2TO^5#`>D698(-v4S~el10F4*0*Ls-j{6E)pTb^|i;F zPs6daSQDM4e|z}V;=w?r3=Gkk;AX8aGj~Pht9o@Oun-vZ#@V)!;l>;ujLWMHRV*yW z4HvV0YP~pa+qFG%v*OdcQ*v!O+lZPmfKaeP$;P!EID~LLHCOVW4fqiry{p=cj6QkI zyUmeNjK0HvlmEw>U)RTca!$TtPBYbA^Xy)EJ#aebyp*f&=;@s6k-ewmPa4Y@`uewm zIBn$8@A{`D=?UfqYjnkKOud=zXepD+hsTiDKhJ!$_4xKSCB{9Oa*+qb^;A|Bvd@?w zzBuJgNs)0OkK&)4?-Z|SHyfSUizdz!Z@2&O3mDLl-bS>9fxN5a{ILDj&7`dTNmMsk z?oA;a2@4DG!fXt^eEpFbkvWOLYd`E4~86|?+Gz##{viMr z<*-y^o3Yo#RBu>%)KTGJ1_fCW$%vagWlYQ`-l(|ectrK;-HKknycEEaAZeMpWO zMO4}tWl2RmhC_1@h&~Adk+8iH7Hb;&o^&2V%3MQYuxOG07kK=}A?hmNC=pY2@{M!q zB%T-U*8toKND(O?7m5nugB!U{`9-z;PlLkssMStg?J|#x^|dD)!yH*PL^N4mF&mq8 zTpKAffsy??)=?%dyFoyQ_c;H^?p(=KrLBTU`QeVZTff=LZy5T4@BVzJ zqSw~+gcQyNKpkt7E^PRYT0|?%w&9kt+TJ9|Yphb%h_b%9sW0C7%Z#38r@Nv|5IzhY zLX*Qu+{&R=$r*yfD+Bf$7+0Cxz#cD6yPD!kRg@|*THVnSo4Wni30wn8PT1G*%R7`~ z*j(m``v7;yidnY4Ri48vrvsoSol4xa1y$vSV_yqOKjim>#vV; zit+(Gi%IWe{$~ zZz|~3ov__r!O}!@;Dd3enTv;;3oLXTSdn8-R=b7RbhO0zMN(VVJp4Y3*VZ;3w!jI* zDJvf&cbIP^HtH5?5FJZ185R|_9?$n6v|(qUYLqEhFi>#`Io5(^-N@Bc(3<79tMS!W4d%;wM}Y$yUye8ppS5;xn)`2AVH?7?Pv z=80g`#e5igEOcYM21x$46<^1!L31*X`Te^HfxSIlCS; zKV*DuZPYx-k@NNtdul|1i2O`TnERcp&!a3Ai}vN-dYqQ(e;mXKv160yrWSd zN)iN4Tt&`}LRdiTUYcoP=E~^Un5DG!bbVBCu3tb#vRkZrkwBT)Sx?pdAE^3u}(z3aRyU?=U;0!1-z=9 z#Ijj)pfFqts#y0Cm4rq1V}^5@{b#JWC)R^8c|_MB-vAVCRW59Mw!IBcEY>n5}ISS%(u;6>O4paT0(oLc&cKp z1UUR?CC6ShBO({$%Nn-YvI~wSe%7gc8?=&T(7>QjDS=-tGI9UNXE~*Kxc_`A;>x8@ z+G)vWEL(>hLY&-6x%)0oHyf^6&A|c(@}htYWt3K9-(szfHNas|RXJBR0_3uNlgjlW z^aK4=uOJ7|ElNuaOa{mkA%4W=z~#?1#i~(z?%YfVo7`ZV4!%HvGi!*~txFr0hcuZC@aR%L{nioT^upP^DNy)O5@A175Z*Ht6ET$5A z$Lh>lZ&|+4mdo_;ZkUsW?EBpW<7p98)pk#kmqk@OH7d*%i-9la2JZ?By4j})A1i@F zEBA`9#vhA;x#Z(pyNsWDT86d%y5jNyq(NB?3bpzGcdjNhhaicnhFOa-G9<+^N+ePPgJ}cwU z3n<6kcAOB6)EFKi09n*k-13%4;bT((4R_XwM=zYU&AG;KH6%2299jl_jaCgs_;8&Q zS<45gn@Ri12h#&Jz}!yKsR@UnNOa9x!s2hRWf2Hyi7xdlW|gi*5|B^Y8lo-ZwF506 z^T#@4PqG6S;{}U>o#JNSu4Q4mve|$#G*KlOx?d=d{0j#)x}{=eOeIkaY?;=_B$9Pg z`0Uk+!Zai19MQHjBl)|1x4~1P!3-W#;Yth71g4q;EA_`_X3V>+Pa4M-A+_Hc-MV7O zaC>XAf->&5G%_AS=3y1HdpoFzsSeg4P+9_uDY8y}sw-PN79n~l`v=!J?d7ILY;Tlx z`Qsge2N(f^$A?2w%w9~xrpSE<&vq7 z3kh+I9A_g}i;eXCsoS3^juPP#_Oeb@@qWpGThDn@M#P)lBzK(lB---m*VAB~Z<2BqKX!Y}&HlLD?;MAa3UsPH9ZViJuYYGIGjJE444Ox3A$IrL<6XtT zXiP3xd(Y5vxtAQ7FPQ(HUwZmr&NgU%w$1CHbth|kaNAJ;2XkF&-<->I9cwFm62AF~ zG<85Q6DaLYWE+Dbrn#dw4>qrC1QBZ;L!S1ND+cZ~A9O++KD(wtaIjd~))oP+lZ!xn zUc^C4-2xA{0e?NfBccwwG5=e^JPJSO9nlX2HfGp%Rd*#1!eTczvKyD5*i3*K92?Ys zDux@vOJj;+mt(eaTB&hNoa>3SYYe<|;Y-OCS1MCRt2NS^LxLWD<;emKH=bXST8F0a& zp>8aZyAmc*tZ&W6uAi`B6;ryUN}N5Lm7<};(ZG1_xhu1OmO8>zOYi5&w7-T;`Bb-#P?(|3UZpRf7VXHxE1wkr=<9O)is%^%?nvsTkB>6>51}y zRc309`8dEHEpvO+;GJ%^Vz&ULvcu}#9Sh2uZpi0;QIv`kr}mip+Ba#G(0?kXH$<_I zj{E!W-E5LF`9dOEL0?b%)*SNG1mN_*eY0k|-k;-)Y;%%xnk}$vy}=zF9h3oe`BJ=- z@VAoY<*CsM;q&Z-l9cY~Di?MsGJPc*0iizGifK2D1m zBh2hx$msbo2A0Dnkh@9ti2Z}502EGKjkb88>i$nLKX#w2#`{$NoWNQ(fiSFSt&yOn zYl>DPSK}lni%|KASX^gtb?C0qZ04ZovqqqxVR09*h5!bQ(ImPkC(gws#Dbjg{1D!q4@WF2Ha8fy5;@yBjH}*nITk7tm;_tyTSGlScz6* ziV3H@e_ySaa#g`QzhP!)Gl9H<_bxhN)bRCDVXs!9oBXb`vmp~;u^FXY*P>6Q&juK} zL~j?@Og~$x?UQFPt;iF(u;yeLVK#Q-c?#>zx0zl6bJ^Cnhcg0?Go8O;l5Bb3sW&4> zOv;MGrSW1BrKm0~$BQJJVb~^k!RSk5Q%svn61H+^QSz6PaDT87?Kn)*Q~0Ho&kQ$li-8C zNrgX3Zf@+b8nj17j(3D&jUlz+*Hm|YN;my5D}kTL&M$*IvAjvZp^&d2_IJcMUs98` zUJOm2d>iNdZ8D|$n2pTmbsVg5Y-M&F^`UyB>>%>skkh4K%A9~jyNIku9hQ)(`Lx?q z;4qVS5Xb*@O}Fha%m){14VkMBTOA#$OTr*y9OslHe7hwn*)V%eAbW}Ep5v{^>#V9j zmR5OH`2J}1aBA~|5mrBM>$`mX8xj7)X{9UdpEY)rUq0bew?`~S7t-9A)aB9Gu%hO@ zK43ME#U1~HA2`68Ng~{;q@U7LthQ1jUnG&=`YQRD;wn$hfr(TCiea5A_8`#qy`FX- zci61r4<63b*Rn5Z3Y_ow`7KYm%+3B(_+6PBg;T}vl3^8>Mn642TYoie(2G+siwE%F z_K9eE**D8~tyPbXHA%O%4<=n1pd7GE%|>veuz^&ms0Qeeu$6y#sF z6fN2^8(vSkWW7h?fgR%Z6GZ>aylLx@hpV%FyRqhxKTr&%EaTP+UFMw-I($5_*6ZpS zk|;t5{6Wvu{RDFI2a~8h&fb+9MHQ+r*7WlotOr*{_OC<#)Ism}w3vHf2G><7Rp{<- z_|l-k!M|Ll$=d-4a@dqrRJ*JiEqarCN_B@6bx6X#?~)t0K-?(oogAN+IO+G7+wwT> zo8`JF-jS9vL*{%Q6FNm$$8Cxxm1V&Zw89t~1~e*8J50nu5U2iSO;^dQT(_y|v zE?t|%@SM7E*mNXgEWnVBj_Ybz zz8WokDWZ>^ZEHAWJouJ?8bJ-=9!XU0&t1tIq1L6P9S22rW3bqM@C7x%m-6`d^CQ)s zPkZ6=iB}f3tAHkvnrGh`{%dQ()pr(90P0<`u4BWIC%gbfhp;j2U6Ta3!$u*1sGS$r zU#!QV?bn->lz6NC{#WAEm-lTCiZrkcQo_N-3_9LrV(?L8pz(s}*s4_0@e~>HH}x|$>W>=(tv`-( zZocqVP>yeYtW5vx9yc~T3iz!Ax&A@dC;2~bL!g!*b(|=N;ryjrWoEz&XJ*NMjZHPM zln_HQfe5-heZJaod1sxcU<`j zHzPsnF83z+`zgLA+zTzk5*Ik_ff5XFa!<4xHvy}tM%$Dhs;z4zP?&m1@_0^^_&OUD z5ew=jAt_5l-T}3LE-CE;VN0AD(4LX*s_3#zDp!S6s#xp}}imMHuw4@YE4YP8)m=#R-b*qrU;Q3CM^%Y}A zif6w#M3O_N?PHqt*@U0O;883JSx#*J_H`$OQ!@FNp@7e2>sJ+d1JH1%nZ7B;;Wp3t z)dmfj3af4**!wq-GM8_Y)3ZwCEFYdkBWR})PeMH$1Iw(`6W+XDOH+xDVyRx;Kni+Hkm&?ftD56 zKvmjvSYe%8gCLp})&^I2(3@85t>qm?bR>?8YD63k|2i-VBi8f&g9H@S)gz( z?v6W<_nmyz*9sIRDtYFTMw965xCBG3b|@%kPaA$q<#J5b7pEv|#ST)}+@L0Y(J%~) zD%S#*zE(eO|JHQa@13~X;5qb(Z%&$CDy-8`p3XMhoSn+!0psKGIH>wKeqMS|p(Z98 z4L)De!GOZ-9Qor3G$Zb{ zueX9tF|oqD%+)=4kglHll)W>T(WYzNd7uV&zuiy}l1sV+y5=m+kLD4Rk8qX{nivkM za$SmEPEVf#XLlgeIPV@ecqaeJr~)dU0XX@+WrO_w>pO zQ}-G!uEgL~fH{llJ$W}V9-t4R^|Xxi80D-7jfcSk!4zfMJ^7j4t*zY+6E%|WbYq0U z_{4md>RKH#zj|=lr=qOPlssFSo2&t;*ij@%i?H0<#o@WAjJQC|$I`v&u9)rDH;gL@ z_PrW+wZJVQK+OY?g=DGvd+3*k9YbAnfD34~h0rlU-ibVLM3UH`v7`ghr{DgML*+;T ztcB0JT>VO}Q$LmM%r4AB38ML7Ppyj{jQAeHu}u?B25v&p!GMu0Js+{t!)efRKhfn^ zRQ0jiFpB@V)4jMyHU^X8ICg4uG)&g{hY&en2flyw6BKc03Cuvz@7!@Iv3Xp6e?8(W zQf$~x(q}x$*Iw#Gip2otl=^-kVq zBtXvU{iMTyDo;rJ(;#1G6zET8I^O)+=X_PQulH)MhK;CoZDr0?00!v?Hcig9CHEOf zDafcc=6fg3=8C}t?EQ3P$$g7|9p)qw*+J{^AWGIJTqxO zvrvS{SubNL>uaR994lFP?#II&-vrUpU~(gVW+GMrjEz$7YnC1fiu&;pI)>rPDHW?) zDYA|N#D4L94IL-9=J1^zTTg91@heuK{Y7h^pbZ20`CmKl$+g!vG;tGc`@Z0Vy|aTR zoN~T~fKjg|#m$^NoC!}|gK(;=5%8NeJk}V?DX3HAS~|UKRv&RQYD94@UJzQVmN}1K z7LVf~s_7e%lbNg&p>t=9u?wo92GD(l)J`~!MYxL>afsNSeS zzvrWzV|m%W-Y2?_QkSQQOo9`z*dOxq6DH`D2Z379 z&q3QGh>IKYQHOztht#O~am{~jn-{gb$0bciz&&c!Rk*$L)gUg!P+MUDUoe7oWC~KB zfmyGa3wE?G1}tfAiR1(aFkx&Bu-^8jWQv3G!EnIkV`rs3T-dGvq!{P-x|n3OsFXdd zO6-dY0IlQVi5&sz@<32|{PYO}-ADG~%!xSW%J>^E?!7N&qzcfs0@T$3BTEB1BI{&X z?jy7I&HAvhs*~wE%`JJEgDOF5k8vZVMn-Io!FQCFl1iEmPp%ti`eleIcQ^%VPd+o1 zSf35bEFs}Ar61pW6+BM0w)XPpc=2AZSR!dNgkqDjMn=-HUDwX?lIFwUxWZs}Ld!dkON7i@s$$dzbcb43#FV1# z+bV_F4EB~f`)MBH4a@(2{TVsh! zd;S}NZ8g)~efs3;(7h*{7u#wm=IHU4V6x3bw%_Mwz^j4J!$u1NTxV{|ARPj@)qg(O z0wA_p%F8NA+X=wYFtjh)bUOoa9t61~jzI2Ely`|`LBP@*~efb86%a@tSgc6o@OM4 zJ(nfmhub)e#b3Pk&Ha+@4Yah@Q)E3ay=@{TgChDH9N4WuYw-iQEODnTi-YehM#xN2E z74T2Sj)2CD462;w!G2uL1OrJt5d~VEswd<}~ zScTyK)sz9k$5wCocn5Gp!_>#?^8xFUJGp&j{SJ9kk%9DRr>#{#RW`UYcx|}yyi8*s zW?-`3&0vgk+7jB*5|5kYV&9#mCZJ}KJU%-lO6w+x(g_s=9^;3PzgyeRU6J$YTo>bD zACjnVkN$(RNUaaw#a>;GeeOrT>CE1{^!+d4u8r)$D9&cU zeqRinzp~?QGtGWpl)Wv&yVNQLlI<67ty&u%s9yA;xAoqERs)6?VGqptvF07*fF<38 z_JQwOZEpP;=gWfGS0k~fmka#3Dq>D|I!M1;@O zILcCKJYs_ZrAG_~T()$xe8r>iyXnY@YTMUcXVrO8I@G8trM2#wNfi)!2~*-iTnGxR zj)@`r!o*Gj@5KTV;R%bQ?jOyBfn-moyO+Oc#}DLt)=%PJx;6X7tuCkA1uo}-hHfXs zy?)78TCj>73yUO0juOG9Xynek=jL7NB6t9=YVuEl1lZNm;GcEC;N+U`n>6-0AJsf! z6T6{zX#lO48h%h4{&S}yuZoA%P^&l!Bo;w;zJiad+uO!~U0okQowcXR@wM+$oz|7} z+0?L-N=eIrX^lkM&(<`L0hG@LQqMyc`h)+danuocPSL5C)ktXJ$16>JHEZ|W@aI_r z@0@?=?nlZ%6RO4&wBODb#cZO;`I^APp0C>L!zbceVge7{$V30p_-7^=ioL#WUzHB0 zK*-}_>lD@XD0{i*iAmF6UZwsD=|a9s>$>6BEeBLuEbdOo114^{fO!Y#)8jfy<6Y;( zy|~nPk>wlbKvzzrW~N8x;oC~eN?0Q@Zfqj=OI@zKkv+ic=uQDKe{gQ&wD%- zTyH(kDSS?z#i+D?sXmO;UJDGVDu>Crk)IBzr*Qwv-r%Li!Cxwwg2Ye#H5(S_yFEf} zO$LqEWgxFP%kt-$uOhK3Yu$8T2m5qwBcJ{@0=2T3 z(LwQ3uefXy!23Ke3aeo;s_F=3&z~sosvrh7#m7G}3!&bZRht13RC+f^6o<~vqx*^! zn16Rpy|{9PQ|@))9oNgfCm~Fia`@)4^ThVX#^e&u`MV&Q4$MjjSIVw|n1 zI)~oS=nl08-z7B|>4p>MaF@!@UZeaAwdbV{)xuo5I>cY(a`g>`oPyw|mi$V9ZJQof zz46L4x5a5(WN(?G5(^nw!ixT$WGnX&8d} zhs&0}Ph+Wg7OVOgU)YAzf6Bs6C8-QLFJI@TsHW82{JDKJ=k3-b`h$zclIngQ75KV%0z=1}t+g*s;{a zVa(Ej&)o=(Jp^QEv#IgM3YY8U-FUF+DohyPayPy{*L zfMG*5Fu`1u%{4%i?^MmH;+y(xCM$r()U^fVji@+Z?RCMC_ILMz_NVpFV`)d(B{+P6GnIkH1*j$Ysx3LBVq?dQ%=*H-~cT6kT!MD;5r_D^X)| zwHFe}*HR{+IcpsQ_Xr_e$gR-8!=bDH0#Ju^Xy4a6KpV0nVXwY|qi({t51BcJJ1F0y z7&#(Tw)lL1MybrR+dPWe_#(MJiGyI4x`5dngR%V%(icCTOdeq2)EY>-2yLljW)dWN zjOgA-o*_GN>vSzr9^(Cyn5@yrf6IWYyjRF|u|$l%_Bo!lNlXY#gs)9Juc5X|sGGDe zz@_j=SLkFKemjV#0b?Uq=Ikjti2ei6hmSp;xP15@dZ*j$%Q;r$T9d<_fPzAMDA?Cc_Ver$~cd% zV5p2`g)Wi<#7Jp%PTfvK&TANfS35<8A~@wB1qx~{xX#%@zu*8ywQkbJQJwqJ`xBhN zbduQRo-bC)aSFn3`EqrCzbE5lD3iAs!f7xrx)*T0uWCIy)&abd9s*adwUHje*JTj= zjsZ_y!dnOz7Q3U^3OSzlPpc%bbv%b4#0Zu4T5D07;5sE6Sr7*KNVMyZjD#%kf%o>j zV-y{hDZ!3P${db32s7d;wgCf3aQ$KAB3|W@H*t7Qd##OyvAKSV%^J1-Hl!Nc@o3uUf za{BAzx;J7To~S*Nd+ST2e*XSv(`~gL)-6(hwlV7Z{Htbh-JiiTz?rwSeoY1)DRMxt zltk&>qRXv1r~oQSh2D8BItL(if4l$|YG<%FZYy zDO%bm^=H;>uc=;(YsyS&T7Cu3zOnxORyULRIa-m{QtpLss&=j^JF?4cYEIqGdMwSC z+As0)e|PMi_0?8v>-KG?UAOk-&3!Z@M)G9b6yQD(zl-0Ctg}HGLuMsp6Q;7%5HdqpV<$JpPZvXE~!}lC- zRFkdt+at=Rgz`rjWrSAa(xRStvqgBOGZ>vZQDA7`8Je?>C$$>**nD{{baE?OpeO0B3F)9%MkaBlSpi zE$g>)zkJ-SKYYLI=2LIK-i+Qjb*;f>$CSrjJ7lp`>%dmE^ZnXic3Z#xU9{qT!lbWP z_rLF!x>jx-TYi7yCU7Uo-3Yux84@=y zX!RYm!d_zS{Z&-c>KQeD?aC^0!!%gII&ae$$uU+Zr20zD5iF?x+?0-FF;l9D}E3|JgK4&d3l~OcYRVn|Ug5uHgA4eiNjGh9 zX^o-|I3okeoT#EQ3TT#sq#rbZ$1G7*GO+W2%VShgiv)0s5>@a3S7X;gN-^ykG-5`Xb=o_B+0xNKm`=DdCVo;{Zms!m&_+fB=a6|rOW zjV4&rv zo&UYXV{3*R=YFsFC`J|Y`)APT-xO;9t-}7@{~yDsk}FabHoconi=V!Uxd3`%Q2SKn z{uKOvPNPMoYt^p-DOu}@QmC;_qu|US(Bn^3Zg|rmq1ub#4}M#!C~yYT4c!-if|T|r zUHIPoHXWA8>qXqqM$g=%i=beZVeI2mVTym>9qed?qfnE1_m2H`?Ys>Lq|~?O0?V4i z5Vd}_i5atR28Azh1G{4s=H>L;Vj~U8m~M#aUj~6{2hh~N7F|iQxb{4P7C$pg1p1W8 zZLK;sqyD!~&{TmTHLw9nn0XY_zqP=363^eHeS04CSn;Uux89w8Y-jeBc`0D>|4&h> zGg$}Pz6RR1n%3Bf{HzCoVubDU{{RH$qaxdM?Ui5kT}(pI;L%*4JO51(D(!QBH2zhB zSM57q934n^0BB!MK=&O>eoho@Tx~J<%Yp7iKLVVuQR7i@fmD z>W2i3?dkq_Vp-j^`32h9J`ClrZb6_Y%k8{68CQ}M2MfKuVQP1torusy`I~13kvp=# z@zaN~yT_zU@9D2kfh9qF?s zk9?KgmBf|44`Rv@ks1iS!ZCzank2H=1npRK%dAe5Nz^3H^DK-b+HK;_v;Kr4y+ZIA z`Sg`f$+5=|o%^$F=;W;hBUJ9w$?v@#O{S!;`a7cRKr>50S^M5{P4&3*F{U$^X53*SfAudyNd*lCAeGKs)_dc3cd z+Uaqjw28#wujV!Fl-*d~3;)?G2$Wsrz`zz$L(Ghx@wd@<)N&x-X!=Mr*f$Z24n&X6q&$ zC%lW3Qhk6Ov-IA|yAZmyS*@KsUe+6WIQ#&yD_VbV8Tms$NB6zU$!2_A{Hb-nI1Dy09k0o$V^bPnB9~ZdM9KW=K+Va$DRy?!C zi~F<+M^B_TW0Y}D7<9rug<4h+*>)Iz?M`5F5XQAu=;1IIVl^wMXjq1{rKl!3`Q-H5 zfvH28KnNv=h>ikLGv8JUmTQObqsDdPp=hQoxzpKQ zFb?L{qfDomI!VrQ-&SE(huTlnmF=yK_c3n0^Ig=scF&a#hR2tzXBs~eZIKS|ba`|4 z3%ijU*v&OdUPni9*Zi?LLjeW&d4^x$@PX$s-g^$7+~Bcl$a3s-ym!rg#botQvC|h@ zEoU$NPxqzVceT!9TO2AfYP6sh*g|GYuQw+ryGIBgZ{9gdiZ>MHk2l(eICz|lu$0W? z#j6dcNoh9KT2isacB;HlV}O`^YthWQ14=0>zW5)r{_|vvv^6P0LYal97QUvEx7Lc z{apEXHDTjQrNHC$2?RWlOnhEMbLZLDixJT^ldvwgPPJ%u`K9FT*80y}!q0rj9m&gY z+vvP8j-NfR;a5BkOrG~JrMVD7nMhCe>>5_*NKmUj_}Ou^xyOED+#-$BvzjBj#VDyb z`m16SmO%lBM_EDhDn?Cv(;uY}L9H$BM^zi6cMvp_igRgt<>4tZX={%LT9q0tC z&TMG%ZWZ0yvV^}Jw}v{|=_0(# z8#bt>Jma+xAM4e=M3EjiH(S@I9k$2o^yV{L>ccDxw6X{hpUH5H1d{kHt*3OVdigjA zyG9j95ZY3!Icp(xRjG0al$6z_zB~0#H}_f|Bao9Vd?fPDBc@;UgY<X>IIWWRipr`=s)C5XJQr;gymY5(e|kerFnp8R#Pp;(?q zJh~bev6Lp~W4b&EoTBN<7u^tPV*4VGsFV(Q>$`G@)j-YdkA6?jYC+(D!_&i93bhTi zLq!se)Z{-}-fM$%G+Bm^AAgg%2II>Rh%bCd>sHYA26{G7f(RfT5DqTjD){~wUl+ae zd>{$%iL@Who@HP6TI0ML$!}3CT$pjpoFeT|H=`r`wPAgHW>!U(+o^7<0ErWk?M*Us z%)EP&YOhO{gKmP%Bl@NhN_Fy-G1cXoYzvG_?Z3w&N3>;s#VLafCRMrxDr&kN zs#BwK&>Z&4&tK`MtDC zWuLG~TXng)Z;Gi>bf`XR1UWTXnON!SS0%F4Ol02Qj@3cIc(pRGHxR&l>>LanDNRjs zL>#OT4HJf>=qbE5F{p_j>{4ZiD<>s>S&S<>dDv7^Uau+Au=c>{g|(+~osoqfRHT0G zsr26WPdmpSrEF|3&srb;7{cndZCf_1lT%1R+;q>g>l0Ry*)u>K>p)QR=%t z{QZFAJ+BVs>SujPxw*LrA{6bZUD~Que3g6Rr9A}XyJGcsQmpOkE zv}X~kwidPJ@cM)|zKc{FW2baR7FVbOOfWC{e0pVz!+y9qY9O^aWE~vO+sgt)s~I?R zkQI&m5z{CaJ~O9=d>i%1m>Q25i@+>ty%yq%8F4<0!*)-VqmhffdF?M-)34SP_s43- zO#`^LCUT}m^#x0;SZTIa8n3h(Za&hL*D?v%!qr>nVTSOzzfK`Yo>`2 zUe;9Jo)FY_tl~4I*yc_S363;?Mgzz;D##{q|x2KZ63*N>fF?g@9jfjI4RjHgKW074RS+cM<%d`!$K8cnd)Z)v{W&? zIw@Sq(7;4i$#S$k@(hHWIi*w3hpkE29+ufdV?009px0j6C|CY6_$9ACav}D|%`5@? z(Fuqk+Oe+Z`20<_I{TsA?L-2HtXI11S`nq-$ogPTbK}t)HDS}57-wi>&sURb^VPhH zmSYhauV?~-&sNUK!zHRTT9a+67TXNxJqQ65}x<8Ai!Ys3P zQH+$;!ozEo{W1{N6E5T*hghS7Igf#^<%oz#XmUaA_{O4h1wVfbCtv15LG5FQLbkeO zVbttrnv{tGxC0UX`5|#YONu(!K)L>?EA(kK$*_Y9k>NGn4J~$`-BylsRy-M0`?WBS zIn7^tDnFf0#{bur|FBdid%H(nK6DCuAJZlFJi8y({{;^FXLx>~<#=Nz0av;jRf`f= zxGp~pb!pmuBz{t77Pr!|xGgx5wFYegYN;j%$Rm6dAtkzZz>R`)GMR80jV)R5+Xoq&d~WhED_pWVFxO`Q}DMpFGGjXt?-GD=Og!&*y#bJ|#Cf zCUcuOue#*SU6V1;Wa!m9kMj!Erl#xQQd^ zSla23d%p*lXC9VaS(xP``GL@A=y_$RD~y9ihV2^LRYFcIBjv~l&2}A9#@hm_aQ!s) zo$s#j54T+)dE~v}qsac;6T^_4!BJmaqSIDw`|i=|Y(wIT4hb*Su=SD>W4k__PiVPz z=h=l_(g9Q!<`Y1k3pkXAUA8|?KgX|UupO&yCUp}Cv}Asr)yGg~RR$L5Ea33yk9#Yz z)OR|&D>t6?rW~>S^bh``{iqjvtn80le{R&i{q_ZWXk2& z^r7`Ro1SWojjFRiOdx59oa#|{4k{K=5clH9_zjIKeYa2Fc~JYUEA+|8`o05fuN<8O zIQ#hN+Qbk#1*J#t-x0j_4rI3)G@NAjVnWO}rz^27r26wW;a>(l5C$cN_l3_j8uP*4A{NN6Vc1br>%PBh5SR z1@|eQvzYXBbP)C47FLHHy~Td5zLW4N;Q0FFZZ^s5`%B8MN?GSb5vYuj>Ddtw!o};z z%`rNp48MToFF%FJNIN07zqsSHqYIWPxEb`%modc%?2LNpoy(#ZUga_xAI3; zGbQx3rHMBcT{~<-2cD0%6ilC`r_b)-mYmE=KQ2`N2t10W2JHh<#^caRQPft!NHoPr?f8f4ruCmPYpI->>lBW6O3ZDu9f_EHo<$yz>AU|KX8x? z@44h_cQy`!9irJW&{A}+imCx4d;Un#h&=%Uot7{3`xpXI?h5Zfs2&mska)O5-rGmi zS!g&eb$ds8%v>RDbo{?TOfl+tf4|bIb(k<@XP5rWcyWvobI|qhauk4@8fIe4L=9FI z{v8J>$}CSn31WKVuK!UV9P-*`hA@>E7@F`0fH=F3e&dGD$69!@{M%eUu-ME}ro13i^n0AnsMwqFnU=5`P4c2I; z7^0Npej%qy1uVAb;u;9YthP&Coq%U~&AsM_u?mI$0lF*rKcGo82n=IJ$cAEs2NcgB zUvPF+L!T%)Zgg@4T~;nX2V&v*9k{oNd}JAH^IwqbZst2S5)cKCyhzz5Z4ngmDOBar z-pTL@Go!jWUk^akojv8wgYMe@_YSoRfMXbJaOrpWAF1;G-?jMhphWY(5e$aKpdyvX z6=0GZ9Ic;zwMJ5~{ie!*`q9ZAxRU*x=C3BeQz?24U@VllM{}U8zs!5EV z`11%R;Z%=G;7_-5TDy;D0Nnm(p~;`7Py~hL=AFMOq>$SP)J=hd@<@AxeiwsJSU5;DmH_S1`0tlNN>FzSHL|NP0Oea90Zc(EsP!*!89)E6Mho2= zznVQZd%FGSuLS`95X{o`8}<)WeB}IHaDa;cZy2AQKb7(z<`Ay@{Co%mBDnoxRx6no zklUXnTdXI%<0c=U>eF!C?Cf=^jN~*S5KFYNoc8kh7(C!M=GWJ^1Lxvr`KS1XqNvW! zjypyocoQJPV)AQBbai#B7?>C@ap?VQ1p<`_;@^$lQncLJ-8Dzu1WkpVzj>o~O%+-B z(U^*g`WKf1dYt1^{cQM_;s7Jhxh{6#ESNkDGZy0K_ryg1dK)MaID-J@D0Y`MMg<^W zknKB+6y?9!E6`&JVI}*i+y;={3*a3zr8PDBh71hqZs73W-Xfk1%uYB}Dn32^`u#;c zQjAJ1sM*prC%BfH2RLVyC5UR-NS<-s_ldVh;#_rflKKQ*r%aUv4xk&u+XtkNpI;J`*J8;PR@<&zE z7yr=>Kfg1|_P+O7ShpVYgx_}T@CO#w{mAn-vor0gt6sfAUmN(1@IrRCU!tGQ&snQ7 zx$xTl-Zar}C4G7L@!dMY9~(NEppVRNR5~C%biYPZsXn-nX33|Sa6jZA$zbTCZXUv= zl^m|22)pR(Xc#>t>5?Q$gMY23oqW9at=Su_oVwc?(bcc&TO*hB0=oIp=a!rz(?~zN z?e0@C6B9I@aOx^JxnKBCc*PLIjppyeLIn5kFG-EP#dgDpZgICAhV@26jvt7(jX`z= z@o2jhy`J?Y+Is>=^Y^!MIvH0*?`A?Uym9=K=xxKtAtLGpEZt7RFf%#>kjGEME)7Jt|1bA;`FFHZgqV{ zF7p6el-qOXYUkH|gF!BC;RkWUkl6I=;j0NWvx$0;tFwIJwhPO>z3MGqXi=x>C5@7# zhGAplfOq4MF8@8)IyBmKH{$$FKX)fz17W4%1@1F+5fdk|0?r`x@Ob@8#H*Xak0Jyg z?ody#Ky-Ca--{Njs2;0o37WpMp#Y=P$!mIVf5~iVlk0Y@R)xBX8hOycOAeXCU<+nO z7<43HnfNeXr|%pQ*~Xgg>KgfXrHs_4>#mrzJV+Hb6WN}N;h^ite7eqG6dhK{%d`+x<7WSg{19!uqi;NC=N-DU=%X!QV2PKk5ICC zW~Y--9(PhHV~M+~y#W5l+YqiO2>=Z|fGgi?*ZleO*G@v;z(8{P4%LQ!lCT+XJP?sc zSFfspVd14!Us#airViklI;VV@h^tvdNZFva-CR?{&n^6~pt;muMJ?|Eg)t4We&1M_ zLT!IB8aU9OJ}Gm)&2@Z z|5HpYgWkdPnH-tf`*cC0;=)*9T}$BKqUi4~CI@1 zSXdIV>PwY~r;(ggqLtqqOxU77HHW$p8RLrD&bC~q+aQiG!s3A!TI6$f&c9aG4=hPd>hBGF2$uOG>vMB^;v_ztk z0s+<=!)0XJ|ACjS^L?y}nUlzfwv0j2o~6-F(k&6z+`dpJvv4lNwdy1Z;4rja_-u!H zXdP2ap~k?W;!v!jcGj|;grI|Trb6pZ>(Rln$($6MJ7tlVq|B-cgr`J= z6s;II@+U?kV)kkes6&f)eI3N&n7H0_-v7$0($N7){!H<3dS5Lv?1U@N)6=ARR$(&; zp!XwU{sQdO8}Wc+PpM{qqI;2muncAu$V#j44|hmLj9(QB@13T@aP~0`B(9U#gc~R{cmVQ#oeLrD zkt_uWVt$??46kfmoZO8*e={Old_+GYrY1z!sc8=VJ^)k=b^~L)6{(mxGUWFz7hQsi zn!kQ{?&`+p!YqFl29EVX8)f>S*HSLJ+mx1DbIrB@9|c6|jTktiY1Pv={v*pvCRNh$aX?aq)*Sx|jonM*AAQ7qI_S8aq z;mA}jQ%Jh1eYkH2QE$t-zQ3^;PKvadKG&&1h_JmXBx*BUu3p8$z}c5!bR*xPgNLth zMY&-t?29RPJh#c~g}jZSr+EN$e#zP4$}j>P<*>%VrqH)m=^zo%+y+fRzF{;OWyA+A zX&Cu?9yF{{ChLEuP@Tt1y*8Z3qDvi=VWPd*`znOai&1s;(p zuN@NaNi`Xxmy<+H1cj1}^o4OwjS2eIgU(;J?!1EGC6|~vQh49r zOWNT|5sA#4V|JFzjF&bZje9EP9({bq;=y+lSYKuuHqUQ?5c>H;ZAk%vq8SdcR+6rh zK6P@GYNK~0CUo=F9uP-&oe`RP87E(}c}?bs@0I2tr|nDf%`Jnv*nO6C8vxc3dL`Bc z-{R2w?Ni8d7dNG9c?pFCo%~%0fz8b&KQ~We!dwr4Vzg<`TH9=GPl%ma?!;xIt`B0? zaRjVqwHE!MBnvB~U}J~?jMCG&P>x%v^YWyKH<10z<8~P|0W##X*xOp+ncFAqx=QF#ZOhO#ITGDNFq4Oa37H8=33QCy$5!# zCto1WleU(Ty`u3eeL^zd?LG|&1W6kNo{+=3;Dy>5f)nN*WhV+A1?lkdL6+JBGo)RW z(6?~G^5f%@ie=HlbU`3PMa}n+U;rcUt&d<%Ty+zPYkAS;FNgA?<+&Wn42ZJdy7{u= za21UT?$Cfu6vn;8e`ot|A{OecZecN{^Uw`kg`f{iR@^?K-`StAY+MgG#17C{ui(Z? zl5za`o(=jPhFJeotqz$h10A_4w!rQh3!<8!1zxek&f3RlPt!6z8*iR0FD3EjiOmdm z>7dM(Ab-EjsxZfDyd<~{`BPN}7YG-}*xA-4_Nk~%*JPtHk)B5qc^xX_hM%@#mau`` zH7!iSV+XEIaGy;t1C*o5@nX1_rh(Amm#>HOM z`qqP;FiY0k*{%9Ub<7+^$M%cK;Fp6yhR#iioHyF*pvf}PU&gin}1;vbh^*eYSQ8_Mxbt3d~fB9ArYE& z4yGLjYBEA0K7iT6>;pQM`wvRm1PM~9KW zgfY@5K_cYID(mIu!?}3*!`TsG?-4Djh8$d`?=j40zF`#;kZkT7?pQw`>Wl_5jXp{4 z%ew$HbhVB`nSL;$LuRXK_dV;hR+y+m5?1p7EXPbF+VZSY2vJ?F%8U!A?NDlaTBjMqXJ0>XiZ*?Jbs~vJA#Bm!TOuTUYt|l~_4L|ySeeFzu0~|!UO<6z z)OgXvDq8!w!?`%d^9Ba5 zZ8~q&mc*VJdzw;5oM?mRAKbKrGH?ilJ}Hsyr4|?3aI<}2`tqh*_$n{QVib=><_FrC zVO}wBD|7dS{AITIs}m~W%W13XS>7B8%WREZJ7d1;7DMg=iRMMljc*w#c;fJ-Ob=Ka z?1WXUi*jItKrC`TZdydJd*xLDz*JMdc>vE5gFh$+ALe~|Txw_B*pm|&FTbsrsI zd>SoXqMViCanSGyPc3rK@;$4&xvL-Gu6T7kRHaqufuBEKYa7}*vX15x&cndUn-9?6 z4xCUJK{Kaj16MQZSXzapC)fPjV+jX~(Tek-{m6x6X3G~tPzSLd%;D^EM9fziTq(Ch zX;tV6-et96#uCVpi=v7d{q{+j-ZrXS^bCw$G6H!DXUXNmhyvVA({2-!v zlF&w{c&olF=9 zVD36ku`{Zt(=ECfk zmWYYhQ7}2K&}$gfjSP1L@>h&?JwHeZkxg41rP=;P%Yp%~)vh*)j(NpcSI5Ln8_$dx zWfHzPto>-dUnhl$I#D>j$z1<=K3Y%#lJBWhd`G1tMIJT%_a~b2q+~wfLe2QuVMa*Y zL_z5t$iiP%+Rjf~*oRruxVMKtw0kZ|PAq@aSKl>LbDqCyLTaP5ISFJ|18ZA6J#9br zZMtir@WkxGn3~F)DQNK0#MiZtO1`>LITr;~Ssn*?R&=k>O2bY3^|Qq6dldLTrd*o) zy98%5cy4{uV}MRXB1&(fx(OU;=5*| z93K(=j)?|(bVzO6TUM7)ODY#0DbS)`kw5*ax6_BR?DgAfP1EfCaT7=w_h`^k+t}fbgK{V+%wc zIi2+UwiAVs0{$u@+Kl6j<_vw`eghG&6BlqWV?-;vd3z#&KZ1#s&2#WRVgIh_3&4$o zZ;W;`hQT){#oSrzN|~;}wqw0yhdHtD6;|ww>Iw{RH8>$ndkLJ_!N$MCjd>8kpK8fRgrRn4SK zOF1E)J~J?Eq16~1&iYD=I&Jp0p8-Q^qKyxC>Gq;fP^%58>v6$->X?nZ2SRBj{~VW( zscx7Cw11?LSPyD0VG4t^us zVpwL{?PU==N~h@0q3KdH^yt$be8NJM`_U{;=Fc%nOc>N_Zi+GJO<3ohiss|g*`q90 zTOiTtQvkZuQeVQGVBT<$>hL3&=0eRg3&9Qxs|TcKXbuZ9kOzuSf{bkH0K-DrD|fJF z9jE@tn(Q0d{&dV~4WISekB`!#=3az3xzrc+d7e>v+)hZ9>93-HfAGvu8I3EC0sR?q3G$sz)-R};^oKW`O2SL5%|hH(rLR!4!_0duSDf z{{YDV3S7|g9V;I;;H>#;mK2t;$Jo0du~z$xEU;QD%n_=Y_(iD4rS|X6JHl1*eo;>)dPu`o$GPQa0r9dZ-g9PL zOGIneA8D?dJkVHOzA2KFFno_`=INFHZ8QI~#jUUo)V(^6^@Tr_^m5)jklCC4Zq@c` zF~ab%z5!((fcR|CT8C}Mr?JK_XogyiV3kkVv`-Y6%7;`Ie25U1NDXb+f>eFIeuTy} zSi9srY}~gcVXr4~m{9{!ldbf0+drJSF6o8#^H{IGd<4IaZxAt|hO~AkrQvWMX;TKj z`CR4YQW6ty(oiTRV;d5@#&-{Oe`Zf#3&;DJE&9UcHPNX1A&Ry0uegKcWNn;>5nl}a zYl^#y+JYYMm9$ZPvurw#2;4V@HMv@KxLN_pXW&N12?8br)=K}LF?{W|ZQx6Af#G}kT9NAtJ1Ct3@0LxfAC?rqHza$2 z&p{5VZ^rP(-jYTz2k5Lh*`kCSY{IjReXfF6iQSwUY62R(Q@%-?kigG92OmmG&z&dDgeD3uZ?CE4&rVE#)rt=3lF&NgpJa6`P7qQQ`E-AX%l9c~XD)`548%ed4 zQG=qwz2s8w%}-?01CZ_L=iTCsB>kC9zrSlMYCUmS?})RUywKUbR$^DDN~Hlm~wflTjC5Etxa3%PZ6!cGHEo~R=3l^7f>E5nM<0MH@C<85H$wW z0_>Hc?NqB8(cW1}+IL!Guyq`_f=V08mKd1Tw9O-9+&|OAAXIiYMU)^>wT8SxR51)H zY7%!~kVU-z5{h=@0V1pOj0;C=tZEqQ+=hLo+#0m8!$D1=oz`&Xki5U~>h$Gftc>>t zgQiaEUER7__sE1^^3f^Xry6XZYU7#RImnbGZ|?=xQqh#-gEW_rg}go~tU00aY)(Ds z?Ge;lFkyy`8C2;FLbM_|2DqNkuJywL!>Ci9^<^?@qF^(;Fbm*n zQOJ3OK={@$!Q#0vmf_5=&gGPGImiCkV*Jl29@ks*)^F6v?t#Oq$%g}`)py1=1Jmm8 zrk}f8CY)yGm*4&$t!cQaT!>t*6rc7dCit)c9@LXJ2{jH-uOM@w*a#JOGj$lM{AyOZ z@pGRARJGF`Se<|Pt+nQyQsd^xQnCF%1Yl#@R8j%?Y%`{E|F)MRjY5441 zR?Lyrgos-0ebk*#4pAT9Xz$xb3JX%bpYz?tf7^_!+-f~j`1`685aeiYm{w!FW-g3W zv>v1)cDlHudjM#Hi!akPPN+o}z!q(9pRHNHS3mB|`vE%+|8-*3u0VdF*~2+sqh!Cg z7X4}_@LUqDL1EjhNo-<;_m+iwcYbpHD~|lOeih;8Od_QwoJrW&_0_CE?Z#3stKrkz zfrUcy^f1i@pTXW<(dKk7+17VwJRb<%f9Z{5)%pGL8oar{e;HS z%}E=%B%$qex$xw6o;j{6$K;hbGjsmFAjPvW2|i(6Fs2g|=$&yjRUG--DhzQf>h#vc_Rw8UINja227+ z0dAqW58kH)lHV_**S5~oj#bNsgJLZFyYuh64O{r(*F&T3JWnSZP5Bf;ZAf^px3>_2 zf`aZU>h^u@(E%^&s}0KpshYn8WTOAlXuK{DcvCx@cLsWLALl>@EaXE5-q4mE%z6w^ zoPiD*nV5RG!zTt-))x;Om4G-z7wv`LDA3miJ7m(9(exK!TC5Dqu=#jP{xJ0OOU!BG52GyhqV;5jzP8qpgvFM!5});6 z(;yr%pM90oxVo<5f~#$nSG=~w7r!};rHpi%K@xqlg0_sZ)`q&xx$6`3Pv8ml{ zz{ku*R1x}J$E3dhOI-X>bFZ+mpbv${P1J2SXpO$RhM}77?zngWN!jM)KC_x`q+~cp zU%lq+&YuEywdi(rs(f5KDxVnPgDiFOPHFtY1jM>rNK)*~gjWi)MvgBMiDGE0%9nyc zMg$a!%O+&ZKNjFBHeH=-IR|9(azyOBxz0LG8<_zf=3SSqOY1&wQ4hY2Yy>0igM;?M zu+p0EIow|fAscW(-rYx*fw380v$}?s&GG)EK5s(w-$IpB04}xky)8cM(gzXg{32{S*%`!3~wyF!vF{; zMH)|#hoMsd!p8nfiT~hW+tu+z^>$B=QY6R&8{)7JTP)YC!=mh++IABU*gjRHWlSJbe-^+@8D8v+BpuNuT(qb}R<*@nO8tRCl3&8Ku zywBh-N|OcFi~b9@cOldcKp?(Q{yz$Wcq>*JuT=M!{b2Nln>Y zRl|vxi%McI8vAKy;Re7_HjRUb%S#&h`(L|PcNyvMH(XORas5Yk1Pd@ z18BOTRS(=XBF)`&txCq0CbV>t$XJZ16SH>Q*s~zvYCrrAIDOurYWWJ5$abUH3b0Fk!yk5UJQb>y%QJU0yx6;u-j>Ke8lje z1O^^*j-FACMl2&IESX7|OWojgLIj!fFLvLumPU>g@+qko?>#HRm*t6UJe`x>LTh|r zYB4_@DB&rFm{6OO1Bc%1WC8cUoE<(5Xe754db;G$F%_sP#*6vGu*S82GLDzA&U7r!M zJb;UShw@(DZAJ3CU+)m=y!eMtBXTRY+?3zP17afT9+Y$o%H`6cYxotRyhdzWBYLv3 zI#%9aY62qQALOr;&lUg{;>E1L)N4%gra5xS66*7^olRcx3&bw*Jlni=TjONSuf4!2 z)2Z#MxUWRHIdse#?hr|bH3Zs`d|CMT*{z+#s~%{D`y$G5BW!gnK*dw1$EwkOYm z5+ynn7iD;ghK;ATtuZY^4|YC#t&c*G8J1_++)7jYkE3!7c}o;+88~^;?iQ^Bd}4rB z?OKtK+yDIAPU^B8ReeedB%~1LV|AdGGK-#xJ;f-s) z<1DL^ybu>3LRy7lFXde54Hh{+@tMVnQ`n%=Udw3aiMLQ>n{dhf|V=Y-~ny| z3GlML8lo)>mpPc{`mcl^MtZ^2pKmoEda3AEwCogX+@ACVx=*b7z&xnxlN zI-KXpt##{gcEy~hy%f*W6J6R`2QXVap0|pudtskDqgVL?PmYpqBbQ<`)>nXM{IsuE z5c-I0y-RON-XV+6FU9keZ4#@ON8|$=#}9o*7kU31LiN)nbD`R<<~gHh#IkF=2*S4% z?^wOOu#XT#KjogxihW*zn{+`7Rh-1_Y` zc2?0dHilEy8{4df6v_>6gdX-rKJDqzetFCn|AJ=G1Y03CJHPVD zZ!6AV$ZV^LSyL*1f!p$^w*0;0Ed}w&WRZ9@`J)Qs)qRZx!Al!a{zQ zD5sgaVMWifw|pb3rjbBMl)791=a*zFE<<~=n(FTZcXWn}RWv4siVstpOKPJ&e||v3 zqp+_;bV|HUp}zYBgS^xG`>*2_1I0U5%oe^}l}!Rgn0BtH@*o`pG(=3qd*jS}hYri< zR`J10H&<|eW|4H(RS`#IvWdU!o&Nfz6hgd6VbJ%`1yZ-f{{fNwvENcHNAp~T>2Hq$ z`+E*LEU|Uh`h!$D=$Ii>{t`;~*M8V!9g0^f$ z<5z2E(|=Xva!i^!2OZjH-rD0PJM+2F5qZM9O;-!7(JdEBw- z&p=D)xKZ=PR?1N69oamsv7TMBN)0_o_^Mc9)7kYmd9@AQ$KO4$`}E#LR9R1cHP!N& z2J8*!qFR<1&FA*mjxSG_b(d%jB*&)@?ToKCBSzjZ?irtm(d((*=yr4{MF!J)d%wFb zKYu2AFY1#Q#L&koHto4*hYs?p=5dpuugP2EY65(Y)hJoYI64`+f686r`0$D4`*6Rj%kF*CX5Z* zxhi3@dC_NN5Sdw_9MSF$WngZwLa;yv+=78<+uUJYGWIve$o$_q^Z!{SkV)r~LArKf zE%oRpw{#HiGf&Ppzs@5C-`rI+u8Qxhw_AJZ+>m4sFBOA+=S2b$ukmnVz$#mv(^Da*(dx~U?S+6y z=xoNAnsiv0SlD65@!7K+qyC(EpCX@*2@0O78>?(NZWa~o@>b?Z5vwlD$C$4}r<#JE ztnIJAF)7xw82QetmE@#}eCw-_>8A(H>D3uAZWFqQO(rjx-Gq)*L*MCdt||Z5ek`X1 zz`TOini4Y)s&P5<%v+jhd1)#-vVynt)~kUv_cGF#$s*d3k?5kij%Ov;Ie49Z8>|HV z8^CkjQ+#HWmwx!PTlRftQo@KYYem>E70bcOVvjv8ft<}C!JPML`VXPwdpk}-7V@&u z>#Fa$4;!`zW2T1e&=!C_$2iF(r|Zo1fU4a=D3_Djn9h&oAea&+8m>5mnbJ0^^tNaP zFxn>n;`tOoL`Di6Zd`e_D#-KqUY#GtLG0SsLKmEGLd6U@u%@0V#FvT70ZmyyJoxAF zxRlD2$HK_{s)zsY#2kGu#+_Q?MHPZTZ5hHI3RYV>5jaoJ7p3orm3RnL^ieg=D|<$p zllS(_hARJN_!V>_3(hd5Q?^uopWAV!L;xFd%64j7Kq}aN|NWV>`407lL(L9cclNv4 zj_llpO@Q4lh&DR=*O9VFdd(*>CmVHk&FG1s3g5T26Lb*_o!W^sNbvQFp%OW8)Yz%g{3tNFY^Ad>aAB zM@Ci>O!tHhIj#yLJ5N~AVz9|uyr|Bt`qS*Zx7Re+8N&_o=gN<7Pm~>4MDFE>LIean z(&QW(rQf(&nCb=T4|rB;{C#AHZ=74YlEVDkk+S1rn{z_0^u_mrIxa|96;7cu9YuujD7@$|$c?|h>$gvt zTTBvXTjlzX9akd(EulXyp+FgE;~=}vJJ6>I7H!vEEil>Q?)AC5UGqmjm+(U*2Tq~F z!bYp^y&#*_I;zKw2(1N;6#AOo*$2?TB8NR2BR##|M=nPUk3nB|p$2q1CTaz=6A|%a znDn5*#Yh2-ZROTwx}THEWxZQf*2e^3$cMCJ1<&tx8#S3~K3EqXy1 zB>YK1<5?9awW8AEr_DMLl-a$-QHctHR6wF zyG#whKxvBP?6V1v@l)KQXYleKNw03{AUgqg@E?;OgPZM#T1+awnLUDBVcH=KYd85i z3lzbs8V<()ei`ubz|R;F#H6BjBwbo_+cCcV_-irU1tFzvK?W*PAW`20+21~Bm1g%+}xti3NZ$c9C?@|VC6EU^OmB{19`e& zMLTu@mi2t-E6UaSV_qc4(PXcMWUnoC)ptDB3z96h#k`H=g_bdPU*{R*Q|ufX|Eo0S z(cz0uu~O~y9k=^}b`x51_7Qc0mRVDzG1=NQT3J?XA}@%vNy)Gpd|QQgHZbjy2hbyq z&$gS(4WgF5_+F{jghHde)<^D|BD#}6`-q;tzDV6i?@~pRQX?*t8y=9{!WS6S@;R4$9#RvffbE&IUErNPvVZV-?+&2Qn3BFub7F=F;-14W4%I`xW$?-EkFNeibJMTz~)%`qz>B-hN<5ii) zl+6i7_zC#x6t5}Ekqb2~9llnYkuevz*WT3bJrmDU1=bny@P^Z%;$~oS1|>^_&MP^J zt**v-vOx?0nxN@*{-}|2wlT79+pN^}`@>_CS2*fXw~j~`;Y5$;UEPd1dc^S?{eCoj z;?wyJT839mp$mUrWRBhR(V(E1_cR@zK zx+%6($Hh$HdQ!6C*?UwbO*b0Of?zJC#tY}fCf89w5gJ8Do{==s_uIzg3Ao2OrfsWS6l(p*fbw-Of@W-s~uH|Yn-e!9@1dy}>B zhN_Q!ZG>l}ypA&uBJ9L2FS^&PzN;R(SXP&{;$QH^))7tn!iY~L#HJAwU;Nk z>r}pY(cAQQ=#~}2BC3*Rf_S%7WBr9e2!agcPjBfWqsk(b#52|P}n!O3P+0~09 zDPKrc)nh;MPjA`?&(mW5>nQNPh(!+zbyY4u(&vB}>i&i6WW~d$5t_Z)4K+bYt~&0` zlvz^#=@=}+CiDTKa`zV9+r?fby93QUvY^@h}QdnH_K{dv%Cwo4R_z;pdzbpRM z>Sw$>0@d_RycE2?*tL*>n5VSA`7>NBsor|@%t*IK=@*A<=FFoABJ%`#13#zjf0vpazgjf7_ zDPzSqiJb?B$B|~3YyqD1rC2^B-Sq89iwSfR^4A+{fV&jV?CuuU`RO?H^~{CjcU5-n zDi11@yqr{g`7qHH_!u+y9&TU3R0*@6@G1k2u70}bTE!OW^|=5mlft~knkKq&Z)a@e z{REJOkX(qD(;M^e>6C=EK!fZYtp3Dpbr_J7cx zfv>4+H7M~YUh>%76XlmKiEv8x@It<+UtX6swc__`BQYL^^U>Req7v={B{rHuypNb) zhJ9p`m$7VxC8r5!iGBG%+B}i^I`8dQ$%k$c+!9YnQ90JL zo-&g4bY3wID+S>sfw$WVV+w2%9txJG&|ULbwccVnWr4lZXs)X=BG;Ozb<;vd=(^;s zkbZ655J#2f65_Mz%RG zGjR&_c(G}J18R0zUnNLAASgdy;LFxoC>_e^i|Kn6eB_ismuU8g zgr|H~3i@y7+ctL(NivOv=lDZs3OO|$^Q^bTh3DZ(ILTZU^*IcqnnQ;;?mT1ZbpL65 z^^VIyZ=}3vlh~w;tK7q{XW7}A2vag^W!D1fj9R$)aR{TxHeQJV!kW$hf8W!uBLwwy zo)BC-Piqv5TG25>Y7~0=W1`swadACHyRed?gI5}Z8ospGAsnPik;A!L}I(OqI85AOo?#u0FTF zxqyLEfs?<<3!g!BIiNvzo<8#-F#k!u@!fX3&^7vEH2bN^G)q&lJO?L}%{cfu(ur6) zEve58fNsRh8y*2F0RAj_@AwLfW{s_-|8dB6`!F#vNxfLoN|SZZu5}uIAn&#O!_!PA zGoAfH@$)+g7Kv8VwvA2G(~(b!Wt#DQe7S`WJrwp(g&XClURbv^2>1_I-Kc^iT{vw)e(*Hp(h*@#{;h0N8I2XJM!|`R=Cmdn>T_t={fwG#*~QD zt;T4_-10nwhR&KS4_tl7SYFhu6`++n9(xED{pWtS9}fX0H=~z%+@HmHIg((H84<5E z@B~kWIxHPllOupS5r3+O!@K%}D;Hovl|Lj5J~BGbd2F(CeLU}NmR