Streamlit
1 Introduction to Streamlit
1.1 What is Streamlit?
1.2 Why use Streamlit?
1.3 Setting up the environment
1.4 Creating your first Streamlit app
2 Basic Components
2.1 Text elements
2.1 1 Displaying text
2.1 2 Formatting text
2.2 Data display elements
2.2 1 Displaying data frames
2.2 2 Displaying tables
2.3 Input widgets
2.3 1 Text input
2.3 2 Number input
2.3 3 Date input
2.3 4 Dropdown selection
2.3 5 Slider
2.3 6 Checkbox
2.3 7 Radio buttons
2.3 8 Buttons
3 Advanced Components
3.1 Interactive widgets
3.1 1 Multiselect
3.1 2 File uploader
3.1 3 Color picker
3.2 Media elements
3.2 1 Displaying images
3.2 2 Displaying videos
3.2 3 Displaying audio
3.3 Chart elements
3.3 1 Line chart
3.3 2 Bar chart
3.3 3 Area chart
3.3 4 Scatter chart
3.3 5 Map chart
4 Layout and Styling
4.1 Layout components
4.1 1 Columns
4.1 2 Tabs
4.1 3 Expander
4.2 Styling elements
4.2 1 Custom CSS
4.2 2 Theming
4.2 3 Adding custom fonts
5 State Management
5.1 Session state
5.1 1 Managing state across reruns
5.1 2 Persisting state
5.2 Caching
5.2 1 Caching functions
5.2 2 Caching data
6 Deployment
6.1 Deploying to Streamlit Sharing
6.1 1 Setting up Streamlit Sharing
6.1 2 Deploying your app
6.2 Deploying to other platforms
6.2 1 Deploying to Heroku
6.2 2 Deploying to AWS
6.2 3 Deploying to Google Cloud
7 Best Practices
7.1 Writing clean and maintainable code
7.2 Optimizing performance
7.3 Handling errors and exceptions
7.4 Version control with Git
8 Advanced Topics
8.1 Integrating with other libraries
8.1 1 Integrating with Pandas
8.1 2 Integrating with Plotly
8.1 3 Integrating with TensorFlow
8.2 Building complex apps
8.2 1 Creating multi-page apps
8.2 2 Handling authentication
8.2 3 Building interactive dashboards
8.3 Custom components
8.3 1 Creating custom widgets
8.3 2 Extending Streamlit with custom components
9 Case Studies
9.1 Building a data exploration app
9.2 Building a machine learning model deployment app
9.3 Building a real-time data visualization app
5 1 1 Managing State Across Reruns Explained

1 1 Managing State Across Reruns Explained

Key Concepts

Session State

Session State in Streamlit is a way to store data that persists across reruns of the script. This is particularly useful for maintaining user inputs, intermediate calculations, and other data that should not be reset with each rerun.

Example:

import streamlit as st

if 'counter' not in st.session_state:
    st.session_state.counter = 0

increment = st.button('Increment')
if increment:
    st.session_state.counter += 1

st.write('Counter:', st.session_state.counter)
    

Reruns

Reruns occur when the Streamlit script is re-executed, typically due to user interactions like button clicks or widget changes. Without proper state management, data can be reset during these reruns, leading to inconsistent behavior.

State Management

State Management techniques in Streamlit involve using the Session State to store and retrieve data that should persist across reruns. This ensures that the application behaves predictably and maintains data consistency.

Example:

import streamlit as st

if 'user_input' not in st.session_state:
    st.session_state.user_input = ''

user_input = st.text_input('Enter something', st.session_state.user_input)
st.session_state.user_input = user_input

st.write('You entered:', st.session_state.user_input)
    

Analogies

Think of Session State as a sticky note on your desk that you update as you work. Each time you come back to your desk, the sticky note still has the latest information, just like Session State retains data across reruns. Reruns are like taking a break and coming back to your desk, and State Management is like ensuring the sticky note is always up-to-date.

By mastering state management in Streamlit, you can create more robust and user-friendly applications that maintain data consistency and provide a seamless experience.