215 lines
6.6 KiB
Python
215 lines
6.6 KiB
Python
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# isort: skip_file
|
|
|
|
"""Streamlit.
|
|
|
|
How to use Streamlit in 3 seconds:
|
|
|
|
1. Write an app
|
|
>>> import streamlit as st
|
|
>>> st.write(anything_you_want)
|
|
|
|
2. Run your app
|
|
$ streamlit run my_script.py
|
|
|
|
3. Use your app
|
|
A new tab will open on your browser. That's your Streamlit app!
|
|
|
|
4. Modify your code, save it, and watch changes live on your browser.
|
|
|
|
Take a look at the other commands in this module to find out what else
|
|
Streamlit can do:
|
|
|
|
>>> dir(streamlit)
|
|
|
|
Or try running our "Hello World":
|
|
|
|
$ streamlit hello
|
|
|
|
For more detailed info, see https://docs.streamlit.io.
|
|
"""
|
|
|
|
# IMPORTANT: Prefix with an underscore anything that the user shouldn't see.
|
|
|
|
# Must be at the top, to avoid circular dependency.
|
|
from streamlit import logger as _logger
|
|
from streamlit import config as _config
|
|
from streamlit.version import STREAMLIT_VERSION_STRING as _STREAMLIT_VERSION_STRING
|
|
|
|
# Give the package a version.
|
|
__version__ = _STREAMLIT_VERSION_STRING
|
|
|
|
from streamlit.delta_generator import DeltaGenerator as _DeltaGenerator
|
|
from streamlit.proto.RootContainer_pb2 import RootContainer as _RootContainer
|
|
from streamlit.runtime.caching import (
|
|
cache_resource as _cache_resource,
|
|
cache_data as _cache_data,
|
|
experimental_singleton as _experimental_singleton,
|
|
experimental_memo as _experimental_memo,
|
|
)
|
|
from streamlit.runtime.metrics_util import gather_metrics as _gather_metrics
|
|
from streamlit.runtime.secrets import secrets_singleton as _secrets_singleton
|
|
from streamlit.runtime.state import SessionStateProxy as _SessionStateProxy
|
|
from streamlit.user_info import UserInfoProxy as _UserInfoProxy
|
|
from streamlit.commands.query_params import (
|
|
get_query_params as _get_query_params,
|
|
set_query_params as _set_query_params,
|
|
)
|
|
from streamlit.elements.show import show as _show
|
|
|
|
# Modules that the user should have access to. These are imported with "as"
|
|
# syntax pass mypy checking with implicit_reexport disabled.
|
|
|
|
from streamlit.echo import echo as echo
|
|
from streamlit.runtime.legacy_caching import cache as _cache
|
|
from streamlit.elements.spinner import spinner as spinner
|
|
from streamlit.commands.page_config import set_page_config as set_page_config
|
|
from streamlit.commands.execution_control import (
|
|
stop as stop,
|
|
rerun as _rerun,
|
|
)
|
|
|
|
# We add the metrics tracking for caching here,
|
|
# since the actual cache function calls itself recursively
|
|
cache = _gather_metrics("cache", _cache)
|
|
|
|
|
|
def _update_logger() -> None:
|
|
_logger.set_log_level(_config.get_option("logger.level").upper())
|
|
_logger.update_formatter()
|
|
_logger.init_tornado_logs()
|
|
|
|
|
|
# Make this file only depend on config option in an asynchronous manner. This
|
|
# avoids a race condition when another file (such as a test file) tries to pass
|
|
# in an alternative config.
|
|
_config.on_config_parsed(_update_logger, True)
|
|
|
|
|
|
_main = _DeltaGenerator(root_container=_RootContainer.MAIN)
|
|
sidebar = _DeltaGenerator(root_container=_RootContainer.SIDEBAR, parent=_main)
|
|
|
|
secrets = _secrets_singleton
|
|
|
|
# DeltaGenerator methods:
|
|
|
|
altair_chart = _main.altair_chart
|
|
area_chart = _main.area_chart
|
|
audio = _main.audio
|
|
balloons = _main.balloons
|
|
bar_chart = _main.bar_chart
|
|
bokeh_chart = _main.bokeh_chart
|
|
button = _main.button
|
|
caption = _main.caption
|
|
camera_input = _main.camera_input
|
|
checkbox = _main.checkbox
|
|
code = _main.code
|
|
columns = _main.columns
|
|
tabs = _main.tabs
|
|
container = _main.container
|
|
dataframe = _main.dataframe
|
|
date_input = _main.date_input
|
|
divider = _main.divider
|
|
download_button = _main.download_button
|
|
expander = _main.expander
|
|
pydeck_chart = _main.pydeck_chart
|
|
empty = _main.empty
|
|
error = _main.error
|
|
exception = _main.exception
|
|
file_uploader = _main.file_uploader
|
|
form = _main.form
|
|
form_submit_button = _main.form_submit_button
|
|
graphviz_chart = _main.graphviz_chart
|
|
header = _main.header
|
|
help = _main.help
|
|
image = _main.image
|
|
info = _main.info
|
|
json = _main.json
|
|
latex = _main.latex
|
|
line_chart = _main.line_chart
|
|
map = _main.map
|
|
markdown = _main.markdown
|
|
metric = _main.metric
|
|
multiselect = _main.multiselect
|
|
number_input = _main.number_input
|
|
plotly_chart = _main.plotly_chart
|
|
progress = _main.progress
|
|
pyplot = _main.pyplot
|
|
radio = _main.radio
|
|
selectbox = _main.selectbox
|
|
select_slider = _main.select_slider
|
|
slider = _main.slider
|
|
snow = _main.snow
|
|
subheader = _main.subheader
|
|
success = _main.success
|
|
table = _main.table
|
|
text = _main.text
|
|
text_area = _main.text_area
|
|
text_input = _main.text_input
|
|
time_input = _main.time_input
|
|
title = _main.title
|
|
vega_lite_chart = _main.vega_lite_chart
|
|
video = _main.video
|
|
warning = _main.warning
|
|
write = _main.write
|
|
color_picker = _main.color_picker
|
|
|
|
# Legacy
|
|
_legacy_dataframe = _main._legacy_dataframe
|
|
_legacy_table = _main._legacy_table
|
|
_legacy_altair_chart = _main._legacy_altair_chart
|
|
_legacy_area_chart = _main._legacy_area_chart
|
|
_legacy_bar_chart = _main._legacy_bar_chart
|
|
_legacy_line_chart = _main._legacy_line_chart
|
|
_legacy_vega_lite_chart = _main._legacy_vega_lite_chart
|
|
|
|
# Apache Arrow
|
|
_arrow_dataframe = _main._arrow_dataframe
|
|
_arrow_table = _main._arrow_table
|
|
_arrow_altair_chart = _main._arrow_altair_chart
|
|
_arrow_area_chart = _main._arrow_area_chart
|
|
_arrow_bar_chart = _main._arrow_bar_chart
|
|
_arrow_line_chart = _main._arrow_line_chart
|
|
_arrow_vega_lite_chart = _main._arrow_vega_lite_chart
|
|
|
|
# Config
|
|
get_option = _config.get_option
|
|
# We add the metrics tracking here, since importing
|
|
# gather_metrics in config causes a circular dependency
|
|
set_option = _gather_metrics("set_option", _config.set_user_option)
|
|
|
|
# Session State
|
|
session_state = _SessionStateProxy()
|
|
|
|
# Caching
|
|
cache_data = _cache_data
|
|
cache_resource = _cache_resource
|
|
|
|
# Beta APIs
|
|
beta_container = _gather_metrics("beta_container", _main.beta_container)
|
|
beta_expander = _gather_metrics("beta_expander", _main.beta_expander)
|
|
beta_columns = _gather_metrics("beta_columns", _main.beta_columns)
|
|
|
|
# Experimental APIs
|
|
experimental_user = _UserInfoProxy()
|
|
experimental_singleton = _experimental_singleton
|
|
experimental_memo = _experimental_memo
|
|
experimental_get_query_params = _get_query_params
|
|
experimental_set_query_params = _set_query_params
|
|
experimental_show = _show
|
|
experimental_rerun = _rerun
|
|
experimental_data_editor = _main.experimental_data_editor
|