####################################################################################################### #Importind required libraries ####################################################################################################### import streamlit as st import base64 import sys from pathlib import Path script_dir = Path(__file__).resolve().parent project_root = script_dir.parent sys.path.append(str(project_root)) ####################################################################################################### #Importing from SRC ####################################################################################################### from src.Streamlit_Magic_Sheet.components.header import * from src.Streamlit_Magic_Sheet.components.body import * from src.Streamlit_Magic_Sheet.components.navigation import * from src.Streamlit_Magic_Sheet.components.siderbar import * from src.Streamlit_Magic_Sheet.components.metrics import * from src.Streamlit_Magic_Sheet.components.charts import * from src.Streamlit_Magic_Sheet.components.test import * from src.Streamlit_Magic_Sheet.components.elements import * ####################################################################################################### # Initial page config # class whole_app: # st.set_page_config( # page_title='Streamlit cheat sheet', # layout="wide", # initial_sidebar_state="expanded", # ) # def main(): # cs_sidebar() # cs_body() # return None # # Thanks to streamlitopedia for the following code snippet # def img_to_bytes(img_path): # img_bytes = Path(img_path).read_bytes() # encoded = base64.b64encode(img_bytes).decode() # return encoded # # sidebar # def cs_sidebar(): # #st.sidebar.markdown('''[](https://streamlit.io/)'''.format(img_to_bytes("logomark_website.png")), unsafe_allow_html=True) # st.sidebar.header('Streamlit cheat sheet') # st.sidebar.markdown(''' # Summary of the [docs](https://docs.streamlit.io/), as of [Streamlit v1.25.0](https://www.streamlit.io/). # ''', unsafe_allow_html=True) # st.sidebar.markdown('__Install and import__') # st.sidebar.code('$ pip install streamlit') # st.sidebar.code(''' # # Import convention # >>> import streamlit as st # ''') # st.sidebar.markdown('__Add widgets to sidebar__') # st.sidebar.code(''' # # Just add it after st.sidebar: # >>> a = st.sidebar.radio(\'Choose:\',[1,2]) # ''') # st.sidebar.markdown('__Magic commands__') # st.sidebar.code(''' # '_This_ is some __Markdown__' # a=3 # 'dataframe:', data # ''') # st.sidebar.markdown('__Command line__') # st.sidebar.code(''' # $ streamlit --help # $ streamlit run your_script.py # $ streamlit hello # $ streamlit config show # $ streamlit cache clear # $ streamlit docs # $ streamlit --version # ''') # st.sidebar.markdown('__Pre-release features__') # st.sidebar.code(''' # pip uninstall streamlit # pip install streamlit-nightly --upgrade # ''') # st.sidebar.markdown('Learn more about [experimental features](https://docs.streamlit.io/library/advanced-features/prerelease#beta-and-experimental-features)', unsafe_allow_html=True) # st.sidebar.markdown('''
''', unsafe_allow_html=True) # st.sidebar.markdown('''[Cheat sheet v1.25.0](https://github.com/daniellewisDL/streamlit-cheat-sheet) | Aug 2023 | [Daniel Lewis](https://daniellewisdl.github.io/)''', unsafe_allow_html=True) # return None # ########################## # # Main body of cheat sheet # ########################## # def cs_body(): # col1, col2, col3 = st.columns(3) # ####################################### # # COLUMN 1 # ####################################### # # Display text # col1.subheader('Display text') # col1.code(''' # st.text('Fixed width text') # st.markdown('_Markdown_') # see #* # st.caption('Balloons. Hundreds of them...') # st.latex(r\'\'\' e^{i\pi} + 1 = 0 \'\'\') # st.write('Most objects') # df, err, func, keras! # st.write(['st', 'is <', 3]) # see * # st.title('My title') # st.header('My header') # st.subheader('My sub') # st.code('for i in range(8): foo()') # # * optional kwarg unsafe_allow_html = True # ''') # # Display data # col1.subheader('Display data') # col1.code(''' # st.dataframe(my_dataframe) # st.table(data.iloc[0:10]) # st.json({'foo':'bar','fu':'ba'}) # st.metric(label="Temp", value="273 K", delta="1.2 K") # ''') # # Display media # col1.subheader('Display media') # col1.code(''' # st.image('./header.png') # st.audio(data) # st.video(data) # ''') # # Columns # col1.subheader('Columns') # col1.code(''' # col1, col2 = st.columns(2) # col1.write('Column 1') # col2.write('Column 2') # # Three columns with different widths # col1, col2, col3 = st.columns([3,1,1]) # # col1 is wider # # Using 'with' notation: # >>> with col1: # >>> st.write('This is column 1') # ''') # # Tabs # col1.subheader('Tabs') # col1.code(''' # # Insert containers separated into tabs: # >>> tab1, tab2 = st.tabs(["Tab 1", "Tab2"]) # >>> tab1.write("this is tab 1") # >>> tab2.write("this is tab 2") # # You can also use "with" notation: # >>> with tab1: # >>> st.radio('Select one:', [1, 2]) # ''') # # Control flow # col1.subheader('Control flow') # col1.code(''' # # Stop execution immediately: # st.stop() # # Rerun script immediately: # st.experimental_rerun() # # Group multiple widgets: # >>> with st.form(key='my_form'): # >>> username = st.text_input('Username') # >>> password = st.text_input('Password') # >>> st.form_submit_button('Login') # ''') # # Personalize apps for users # col1.subheader('Personalize apps for users') # col1.code(''' # # Show different content based on the user's email address. # >>> if st.user.email == 'jane@email.com': # >>> display_jane_content() # >>> elif st.user.email == 'adam@foocorp.io': # >>> display_adam_content() # >>> else: # >>> st.write("Please contact us to get access!") # ''') # ####################################### # # COLUMN 2 # ####################################### # # Display interactive widgets # col2.subheader('Display interactive widgets') # col2.code(''' # st.button('Hit me') # st.data_editor('Edit data', data) # st.checkbox('Check me out') # st.radio('Pick one:', ['nose','ear']) # st.selectbox('Select', [1,2,3]) # st.multiselect('Multiselect', [1,2,3]) # st.slider('Slide me', min_value=0, max_value=10) # st.select_slider('Slide to select', options=[1,'2']) # st.text_input('Enter some text') # st.number_input('Enter a number') # st.text_area('Area for textual entry') # st.date_input('Date input') # st.time_input('Time entry') # st.file_uploader('File uploader') # st.download_button('On the dl', data) # st.camera_input("一二三,茄子!") # st.color_picker('Pick a color') # ''') # col2.code(''' # # Use widgets\' returned values in variables # >>> for i in range(int(st.number_input('Num:'))): foo() # >>> if st.sidebar.selectbox('I:',['f']) == 'f': b() # >>> my_slider_val = st.slider('Quinn Mallory', 1, 88) # >>> st.write(slider_val) # ''') # col2.code(''' # # Disable widgets to remove interactivity: # >>> st.slider('Pick a number', 0, 100, disabled=True) # ''') # # Build chat-based apps # col2.subheader('Build chat-based apps') # col2.code(''' # # Insert a chat message container. # >>> with st.chat_message("user"): # >>> st.write("Hello 👋") # >>> st.line_chart(np.random.randn(30, 3)) # # Display a chat input widget. # >>> st.chat_input("Say something") # ''') # col2.markdown('Learn how to [build chat-based apps](https://docs.streamlit.io/knowledge-base/tutorials/build-conversational-apps)', unsafe_allow_html=True) # # Mutate data # col2.subheader('Mutate data') # col2.code(''' # # Add rows to a dataframe after # # showing it. # >>> element = st.dataframe(df1) # >>> element.add_rows(df2) # # Add rows to a chart after # # showing it. # >>> element = st.line_chart(df1) # >>> element.add_rows(df2) # ''') # # Display code # col2.subheader('Display code') # col2.code(''' # st.echo() # >>> with st.echo(): # >>> st.write('Code will be executed and printed') # ''') # # Placeholders, help, and options # col2.subheader('Placeholders, help, and options') # col2.code(''' # # Replace any single element. # >>> element = st.empty() # >>> element.line_chart(...) # >>> element.text_input(...) # Replaces previous. # # Insert out of order. # >>> elements = st.container() # >>> elements.line_chart(...) # >>> st.write("Hello") # >>> elements.text_input(...) # Appears above "Hello". # st.help(pandas.DataFrame) # st.get_option(key) # st.set_option(key, value) # st.set_page_config(layout='wide') # st.experimental_show(objects) # st.experimental_get_query_params() # st.experimental_set_query_params(**params) # ''') # ####################################### # # COLUMN 3 # ####################################### # # Connect to data sources # col3.subheader('Connect to data sources') # col3.code(''' # st.experimental_connection('pets_db', type='sql') # conn = st.experimental_connection('sql') # conn = st.experimental_connection('snowpark') # >>> class MyConnection(ExperimentalBaseConnection[myconn.MyConnection]): # >>> def _connect(self, **kwargs) -> MyConnection: # >>> return myconn.connect(**self._secrets, **kwargs) # >>> def query(self, query): # >>> return self._instance.query(query) # ''') # # Optimize performance # col3.subheader('Optimize performance') # col3.write('Cache data objects') # col3.code(''' # # E.g. Dataframe computation, storing downloaded data, etc. # >>> @st.cache_data # ... def foo(bar): # ... # Do something expensive and return data # ... return data # # Executes foo # >>> d1 = foo(ref1) # # Does not execute foo # # Returns cached item by value, d1 == d2 # >>> d2 = foo(ref1) # # Different arg, so function foo executes # >>> d3 = foo(ref2) # # Clear all cached entries for this function # >>> foo.clear() # # Clear values from *all* in-memory or on-disk cached functions # >>> st.cache_data.clear() # ''') # col3.write('Cache global resources') # col3.code(''' # # E.g. TensorFlow session, database connection, etc. # >>> @st.cache_resource # ... def foo(bar): # ... # Create and return a non-data object # ... return session # # Executes foo # >>> s1 = foo(ref1) # # Does not execute foo # # Returns cached item by reference, s1 == s2 # >>> s2 = foo(ref1) # # Different arg, so function foo executes # >>> s3 = foo(ref2) # # Clear all cached entries for this function # >>> foo.clear() # # Clear all global resources from cache # >>> st.cache_resource.clear() # ''') # col3.write('Deprecated caching') # col3.code(''' # >>> @st.cache # ... def foo(bar): # ... # Do something expensive in here... # ... return data # >>> # Executes foo # >>> d1 = foo(ref1) # >>> # Does not execute foo # >>> # Returns cached item by reference, d1 == d2 # >>> d2 = foo(ref1) # >>> # Different arg, so function foo executes # >>> d3 = foo(ref2) # ''') # # Display progress and status # col3.subheader('Display progress and status') # col3.code(''' # # Show a spinner during a process # >>> with st.spinner(text='In progress'): # >>> time.sleep(3) # >>> st.success('Done') # # Show and update progress bar # >>> bar = st.progress(50) # >>> time.sleep(3) # >>> bar.progress(100) # st.balloons() # st.snow() # st.toast('Mr Stay-Puft') # st.error('Error message') # st.warning('Warning message') # st.info('Info message') # st.success('Success message') # st.exception(e) # ''') # return None class test_1: def __init__(self): pass def func_1(self): st.write("test func_1") def cs_sidebar(self): st.write("test t") def cs_sidebar2(self): st.write("test t2")