Streamlit — The fastest way to build data apps in Python

Overview

Welcome to Streamlit 👋

The fastest way to build and share data apps.

Streamlit lets you turn data scripts into sharable web apps in minutes, not weeks. It’s all Python, open-source, and free! And once you’ve created an app you can use our cloud platform to deploy, manage, and share your app!

Example of live coding an app in Streamlit|635x380

Installation

pip install streamlit
streamlit hello

Streamlit can also be installed in a virtual environment on Windows, Mac, and Linux.

A little example

Streamlit makes it incredibly easy to build interactive apps:

import streamlit as st

x = st.slider('Select a value')
st.write(x, 'squared is', x * x)

A bigger example

Streamlit's simple and focused API lets you build incredibly rich and powerful tools.  This demo project lets you browse the entire Udacity self-driving-car dataset and run inference in real-time using the YOLO object detection net.

Final App Animation

The complete demo is implemented in less than 300 lines of Python. In fact, the app contains only 23 Streamlit calls which illustrates all the major building blocks of Streamlit. You can try it right now at share.streamlit.io/streamlit/demo-self-driving.

The Streamlit GitHub badge

Streamlit's GitHub badge helps others find and play with your Streamlit app.

Streamlit App

Once you deploy your app, you can embed this badge right into your GitHub readme.md as follows:

[![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://share.streamlit.io/yourGitHubName/yourRepo/yourApp/)

More Information

Streamlit Cloud

Streamlit Cloud is our deployment solution for managing, sharing, and collaborating on your Streamlit apps.

  • The Teams and Enterprise tiers provide secure single-click deploy, authentication, web editing, versioning, and much more for your Streamlit apps. You can sign-up here.
  • The Community tier (formerly Streamlit sharing) is the perfect solution if your app is hosted in a public GitHub repo and you’d like anyone in the world to be able to access it. It's completely free to use and you can sign-up here.

License

Streamlit is completely free and open-source and licensed under the Apache 2.0 license.

Comments
  • Images sometimes do not appear

    Images sometimes do not appear

    Summary

    The site randomly shows "0" for images inserted via st.image() and MediaFileManager logs "Missing file".

    More information

    I have a couple of jpg images embedded with st.image() and randomly they will not render, instead there will just be a 0 shown instead. Reloading the page or rerunning the code fixes the problem. When I reload the page often enough one ore several of the images will break again and just show a 0.

    In the terminal with --log_level error I receive

    MediaFileManager: Missing file d8a7ff62725a8ab1609c9335ba2e85375f491027d91b3badb27a6ccd
    

    In my complex multi-page streamlit app this happens very often, if I reload the page two or three times, one out of five images is likely broken. The simpler toy example below takes much longer to show the undesired behaviour, but it does so fairly consistently.

    Steps to reproduce

    Run this code (ideally with --log_level error):

    import streamlit as st
    if st.checkbox('checkbox'):
        st.image("foo.jpg")
    

    Toggle that checkbox repeatedly (this method is quicker than reloading the page) and look at the console output. Maybe rerun the code once in a while. (Of course you need to put any jpg image named "foo.jpg" in the same folder).

    Actual behaviour

    Sooner or later (5-50 clicks) the image will not be shown. Instead, in its place a 0 appears. A "MediaFileManager: Missing file" error is shown in the terminal.

    Expected behaviour

    Images should always be shown.

    Debug info

    • Streamlit version: 0.57.1
    • Python version: 3.6.9
    type:bug type:regression 
    opened by m-ad 50
  • Add st.experimental_(get|set)_query_params capability

    Add st.experimental_(get|set)_query_params capability

    Issue: Issue #798 #302 #1098 This PR is proposing a simple change to add capability to set and get current query strings from browser URL in user's browser tab (without triggering a navigation event!). By introducing this feature to st.experimental namespace, a Streamlit user can easily bookmark an application using query strings and reopen the application else where and render all states using the query strings!

    Demo experimental_qs Feature: :one: User can call st.experimental_set_query_params => to set query params for current browser tab

    Example

    • If user’s current browser tab is http://localhost:3000 and user called st.experimental_set_query_params( checkbox1=True, multiselect2=2 ), the user’s browser tab will become http://localhost:3000/?checkbox1=true&multiselect2=2 and this will NOT cause a redirect action.

    :two: User can call st.experimental_get_query_params => _to get the current query strings as a dict {"checkbox1": "true", "multiselect2=2"} Example Usage from above demo

    import streamlit as st
    
    st.title("Experimental: Play with Query Strings!")
    
    app_state = st.experimental_get_query_params()
    app_state = {k: v[0] if isinstance(v, list) else v for k, v in app_state.items()} # fetch the first item in each query string as we don't have multiple values for each query string key in this example
    
    # [1] Checkbox
    default_checkbox = eval(app_state["checkbox"]) if "checkbox" in app_state else False
    checkbox1 = st.checkbox("Are you really happy today?", key="checkbox1", value = default_checkbox)
    app_state["checkbox"] = checkbox1
    st.experimental_set_query_params(**app_state)
    st.markdown("")
    
    
    # [2] Radio
    radio_list = ['Eat', 'Sleep', 'Both']
    default_radio = int(app_state["radio"]) if "radio" in app_state else 0
    genre = st.radio("What are you doing at home during quarantine?", radio_list, index = default_radio)
    if genre:
        app_state["radio"] = radio_list.index(genre)
        st.experimental_set_query_params(**app_state)
    st.markdown("")
    
    
    # [3] Text Input
    default_title = app_state["movie"] if "movie" in app_state else ""
    title = st.text_input('Movie title', value = default_title)
    app_state["movie"] = title
    st.experimental_set_query_params(**app_state)
    
    

    Contribution License Agreement

    By submiting this pull request you agree that all contributions to this project are made under the Apache 2.0 license.

    feature:state 
    opened by zhaoooyue 46
  • Add a File Picker Widget

    Add a File Picker Widget

    Problem

    Sometimes it's nice to be able to specify a file on the command line.

    Solution

    A file picker!

    MVP

    The file picker can be called as follows:

    with st.file_input() as input:
      if input == None:
        st.warning('No file selected.')
      else:
        file_contents = input.read()
    

    Possible additions

    Down the line, we could imagine keyword args for filetypes and folder selection.

    type:enhancement 
    opened by treuille 42
  • I want to be able to disable a widget from my app script

    I want to be able to disable a widget from my app script

    Sometimes I want to show the user that a piece of UI exists, but is currently disabled until some condition is met. For example:

    • a "Submit" button that gets enabled when some text inputs have reasonable form data
    • A slider that's only enabled when a checkbox is clicked

    It would be useful if each widget function took an optional "enabled" flag.

    type:enhancement 
    opened by tconkling 41
  • Add the ability to programatically re-run the streamlit script

    Add the ability to programatically re-run the streamlit script

    Problem

    I am building a small labeling too where I read in an example, the user will select labels from a list of check boxes and click submit in order to save the labels, when they submit a field in the data for it being labeled is added so in the next read it skips that example. The problem is that the submit button will cause a rerun where the labels are collected and saved but it doesn't cause another re-run that will cause the data to be reread (this will move the app on to the next question)

    Solution

    I think a solution would be a st.rerun() function that you can call to reexecute the script from the top. In my cause this would be called after my save and trigger a re-read. Basically it would do the same thing I am currently using a second Next button for but remove the need for user interaction.

    type:enhancement area:experimental 
    opened by blester125 34
  • Horizontal layout

    Horizontal layout

    Problem

    Streamlit should support horizontal layout.

    Use Case 1

    zhun_t wanted to display images side-by-side.

    (Note that in the special case of images, we already have limited support for this by passing an array of images into st.image.)

    Use Case 2

    In our old repo, @kellyamanda asked for the following:

    I would like to be able to put a bunch of widgets horizontally next to each other. Almost like setting up st.table - I would ideally want to specify how many "spaces" or "cells" I have layered across and then in code from top to bottom, specify what goes where from right to left.

    Basically I want to make a grid and from that grid put the widgets (or text or other elements) where I want in that grid.

    Note To Users

    This feature is in design right now, please add comments to this issue describing your use case to help us design this feature properly!

    type:enhancement area:layout feature:custom-components 
    opened by treuille 33
  • Watchdog error on install (Mac)

    Watchdog error on install (Mac)

    I've tried to install it in a MAC using PIP and PIP3 and I get the same error:

    Command "/usr/local/opt/python/bin/python3.7 -u -c "import setuptools, tokenize;file='/private/var/folders/0s/rkvsfhzn2930_3902mpks9lm0000gn/T/pip-install-3cscl6kq/watchdog/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /private/var/folders/0s/rkvsfhzn2930_3902mpks9lm0000gn/T/pip-record-qr49cvd0/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/0s/rkvsfhzn2930_3902mpks9lm0000gn/T/pip-install-3cscl6kq/watchdog/

    I'm using: macOS Mojave 10.14.5

    type:bug area:onboarding 
    opened by naurojr 31
  • Streamlit started giving 404: Not Found and no longer wants to work.

    Streamlit started giving 404: Not Found and no longer wants to work.

    Summary

    Streamlit started giving 404: Not Found and no longer wants to work.

    Steps to reproduce

    Added the multiselect example to my code:

    options = st.multiselect(
        'What are your favorite colors',
        ('Yellow', 'Red')
        ('Green', 'Yellow', 'Red', 'Blue'))
    st.write('You selected:', options)
    
    

    Expected behavior:

    To get an app with a working multiselect

    Actual behavior:

    App gives 404: Not Found and nothing I do wants to make it work again.

    Is this a regression?

    yes

    Debug info

    Streamlit version: 0.47.2 Python version: 3.7.1 Using Conda? PipEnv? PyEnv? Pex? pip on WinPython OS version: Windows 10 version 1903 Browser version: Firefox 69.0

    Additional information

    Tried changing the port, enabling debugging, killing the console and restarting. Not running jupyter-lab. Removing the multiselect code. Tried using http://localhost:8501/?a=1. Tried http://192.168.1.34:8501. Seems to be caching and always just returning the 404.

    type:bug 
    opened by Code4SAFrankie 31
  • st.download_button() should not rerun the entire page

    st.download_button() should not rerun the entire page

    Hi folks,

    Please, consider the MWE below:

    import streamlit as st
    import pandas as pd
    
    with st.form(key='form1'): 
       user_input = st.text_input("Insert text")
       submit = st.form_submit_button("Submit")
    
    if submit:    
      st.warning("This part should not be lost after clicking the download button!")  
      st.write(user_input) 
       
       # Save dataframe as a .csv file
       df = pd.DataFrame({"v1": [1,2,3]})    
       file_name = "df.csv"
       file_path = f"./{file_name}"
       #
       df.to_csv(file_path)   
       # Create Download Button
       file_bytes = open(file_path, 'rb')
       st.download_button(label='Click to download',
                           data=file_bytes, 
                           file_name=file_name,
                           key='download_df')
       file_bytes.close()
    

    Problem

    st.download_button() reruns the entire page, erasing everything that was opened after clicking "Submit". This behavior can be problematic, specially for applications that use st.form() like this one.

    Solution

    Having an option in st.download_button() to not rerun anything would be really great.

    Thank you

    type:enhancement feature:st.download_button 
    opened by GitHunter0 28
  • Support markdown in widget labels

    Support markdown in widget labels

    I want to be able to do, e.g.

    st.button("Do *not* click this button!")
    

    And have the button text rendered in markdown formatting.


    Community voting on feature requests enables the Streamlit team to understand which features are most important to our users.

    If you'd like the Streamlit team to prioritize this feature request, please use the 👍 (thumbs up emoji) reaction in response to the initial post.

    type:enhancement area:widgets area:styling status:fixed 
    opened by tconkling 28
  • Add a File Uploader Widget

    Add a File Uploader Widget

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

    Example:

    file_png = st.file_uploader("Upload a PNG image", type=([".png"]))
    
    if file_png:
        file_png_bytes = st.file_reader(file_png)
        st.image(file_png_bytes)
    
    
    Screen Shot 2019-10-28 at 12 04 18 PM (2)
    opened by dcaminos 28
  • Bump mheap/github-action-required-labels from 2.2.3 to 3.0.0

    Bump mheap/github-action-required-labels from 2.2.3 to 3.0.0

    Bumps mheap/github-action-required-labels from 2.2.3 to 3.0.0.

    Release notes

    Sourced from mheap/github-action-required-labels's releases.

    v3.0.0

    What's Changed

    Full Changelog: https://github.com/mheap/github-action-required-labels/compare/v2.2.3...v3.0.0

    Commits
    • 179af84 Automatic compilation
    • e49d4be Bump json5 from 2.2.1 to 2.2.2
    • 6008ef3 Add ability to customise comment / error message
    • 43f0d74 Bump README to v3
    • 6831eb2 Move from actions-toolkit to @​actions/core
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    area:dependencies github_actions 
    opened by dependabot[bot] 0
  • Requesting TreeView Navigation for SideBar

    Requesting TreeView Navigation for SideBar

    Streamlit documentation uses a treeview navigation component in the sidebar. Therefore, it's undeniably a useful component. However, it doesn't seem to be available in streamlit or third party. I do see something close in github, a checkbox treeview. Also, there's a menu navigation component but it's not in the sidebar and vertical. The component should be same as the documentation component -- expandable (+) and able to navigate to new pages.

    type:enhancement 
    opened by BSalita 0
  • `st.download_button`: Create downloadable data only when button is clicked.

    `st.download_button`: Create downloadable data only when button is clicked.

    Problem

    st.download_button has a parameter data for the data to be downloaded, but this requires the data to be generated when the button is defined. This is not very efficient if the user doesn't use the download button: the data is generated and held in memory, but it is never used.

    I'm working on an app where that generates a DataFrame (based on data uploaded by the user) and I want to offer the option to download this DataFrame as a CSV file. I expect that most of the time users won't download the file, though, they'll just look at the data in the app. In such cases, there's no need to generate the CSV data (and consume memory in the process).

    Solution

    Conceptually the best way, I think, would be to allow the data parameter to be a function that generates the data to be written, and to call that function only if the download button is clicked.

    Additional context

    Note that this issue is not the same as issue #4382, (although I guess it is somewhat related).

    There is a workaround to this issue in the forums, but IMHO it's not ideal, because it requires the user to click two buttons: one to generate the file to be downloaded, and a second one to actually download it.


    Community voting on feature requests enables the Streamlit team to understand which features are most important to our users.

    If you'd like the Streamlit team to prioritize this feature request, please use the 👍 (thumbs up emoji) reaction in response to the initial post.

    type:enhancement 
    opened by joostkremers 0
  • Left-side label of select_slider widget overflows when in 'range' mode

    Left-side label of select_slider widget overflows when in 'range' mode

    Checklist

    • [X] I have searched the existing issues for similar issues.
    • [X] I added a very descriptive title to this issue.
    • [X] I have provided sufficient information below to help reproduce this issue.

    Summary

    The left-side label of select_slider widget overflows when in 'range' mode. Right-side label seems to work correctly.

    Reproducible Code Example

    import streamlit as st
    
    st.title("The left-side label of select_slider widget overflows when in 'range' mode")
    
    with st.expander('Settings'):
    
        first_value,last_value = st.select_slider(
            label='Range select_slider (notice that left-side label overflows)',
            options=['Maradona','Ronaldo','Pele','Messi'],
            value=['Maradona','Pele']
            )
    
        single_value = st.select_slider(
            label='Normal select_slider (notice that left-side label works correctly, i.e. does not overflow)',
            options=['Maradona','Ronaldo','Pele','Messi'],
            value='Maradona'
            )
    

    Steps To Reproduce

    1. Run the example app.
    2. Notice that the left-side label of the select_slider overflows when in 'range' mode, but works correctly when in normal mode.

    Expected Behavior

    Left-side label of select_slider widget should not overflow beyond widget under any circumstance.

    Debug info

    • Streamlit version: 1.16.0
    • Python version: 3.10
    • Operating System: macOS
    • Browser: Brave
    • Virtual environment: conda
    type:bug status:needs-triage 
    opened by marduk2 0
  • Deduplicate FE packages

    Deduplicate FE packages

    📚 Context

    Using yarn-deduplicate to deduplicate frontend packages. Leaving resolutions as potential TODO after completing minor/major version bumps.

    • What kind of change does this PR introduce?
      • [x] Refactoring

    🧠 Description of Changes

    • Remove duplicate packages & reduce build size (hopefully)

    Contribution License Agreement

    By submitting this pull request you agree that all contributions to this project are made under the Apache 2.0 license.

    security-assessment-completed 
    opened by mayagbarnes 0
Releases(1.15.2)
  • 1.15.2(Dec 1, 2022)

  • 1.15.0(Nov 17, 2022)

  • 1.14.1(Nov 11, 2022)

  • 1.14.0(Oct 27, 2022)

  • 1.13.0(Sep 22, 2022)

  • 1.12.2(Aug 26, 2022)

  • 1.12.1(Aug 25, 2022)

  • 1.12.0(Aug 11, 2022)

  • 1.11.1(Jul 27, 2022)

  • 1.11.0(Jul 14, 2022)

  • 1.10.0(Jun 2, 2022)

  • 1.9.2(May 27, 2022)

  • 1.9.1(May 27, 2022)

  • 1.9.0(May 4, 2022)

  • 1.8.1(Mar 29, 2022)

  • 1.8.0(Mar 24, 2022)

  • 1.7.0(Mar 2, 2022)

  • 1.6.0(Feb 24, 2022)

    • 🗜 WebSocket compression is now disabled by default, which will improve CPU and latency performance for large dataframes. You can use the server.enableWebsocketCompression  configuration option to re-enable it if you find the increased network traffic more impactful.
    • ☑️ 🔘 Radio and checkboxes improve focus on Keyboard navigation (#4308)
    Source code(tar.gz)
    Source code(zip)
  • 1.5.0(Jan 27, 2022)

    Release date: Jan 27, 2022

    Notable Changes

    • 🌟 Favicon defaults to a PNG to allow for transparency (#4272).
    • 🚦 Select Slider Widget now has the disabled parameter that removes interactivity (completing all of our widgets) (#4314).

    Other Changes

    • 🔤 Improvements to our markdown library to provide better support for HTML (specifically nested HTML) (#4221).
    • 📖 Expanders maintain their expanded state better when multiple expanders are present (#4290).
    • 🗳 Improved file uploader and camera input to call its on_change handler only when necessary (#4270).
    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Jan 13, 2022)

    Highlights

    • 📸 Introducing st.camera_input for uploading images straight from your camera.

    Notable Changes

    • 🚦 Widgets now have the disabled parameter that removes interactivity.
    • 🚮 Clear st.experimental_memo and st.experimental_singleton programmatically by using the clear() method on a cached function.
    • 📨 Developers can now configure the maximum size of a message to accommodate larger messages within the Streamlit application. See server.maxMessageSize.
    • 🐍 We formally added support for Python 3.10.

    Other Changes

    • 😵‍💫 Calling str or repr on threading.current_thread() does not cause a RecursionError (#4172).
    • 📹 Gracefully stop screencast recording when user removes permission to record (#4180).
    • 🌇 Better scale images by using a higher-quality image bilinear resampling algorithm (#4159).
    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Dec 28, 2021)

  • 1.3.0(Dec 16, 2021)

    Release date: Dec 16, 2021

    Notable Changes

    • 💯 Support for NumPy values in st.metric .
    • 🌐 Support for Mesh Layers in PyDeck.
    • 📊 Updated Plotly chart version to support the latest features.
    • 🏀 st.spinner element has visual animated spinner.
    • 🍰 st.caption supports HTML in text with unsafe_allow_html parameter.

    Other Changes

    • 🪲 Bug fix: Allow st.session_state to be used to set number_input values with no warning (#4047).
    • 🪲 Bug fix: Fix footer alignment in wide mode (#4035).
    • 🐞 Bug fix: Better support for Graphviz and Bokeh charts in containers (columns, expanders, etc.) (#4039).
    • 🐞 Bug fix: Support inline data values in Vega-Lite (#4070).
    • ✍️ Types: Updated type annotations for experimental memo and singleton decorators.
    • ✍️ Types: Improved type annotations for st.selectbox, st.select_slider, st.radio, st.number_input, and st.multiselect .
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Nov 11, 2021)

    Release date: Nov 11, 2021

    Notable Changes

    • ✏️ st.text_input and st.text_area now have a placeholder parameter to display text when the field is empty.
    • 📏 Viewers can now resize the input box in st.text_area .
    • 📁 Streamlit can auto-reload when files in the sub-directories change.
    • 🌈 We've upgraded Bokeh support to 2.4.1! We recommend updating your Bokeh library to 2.4.1 to maintain functionality. Going forward, we'll let you know if there's a mismatch in your Bokeh version via an error prompt.
    • 🔒 Developers can access secrets via attribute notation (e.g., [st.secrets.foo](http://st.secrets.foo) vs. st.secrets["foo"]) just like session state.

    Other Changes

    • 👀 Visual fixes (https://github.com/streamlit/streamlit/pull/3863, https://github.com/streamlit/streamlit/pull/3995, https://github.com/streamlit/streamlit/pull/3926, https://github.com/streamlit/streamlit/pull/3975)
    • 🍔 Fixes to the hamburger menu (https://github.com/streamlit/streamlit/pull/3968)
    • 🖨️ Ability to print session state (https://github.com/streamlit/streamlit/pull/3970),
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Oct 21, 2021)

    Highlights

    • 🧠 Memory improvements: Streamlit apps allocate way less memory over time now.

    Notable Changes

    • ♻️ Apps automatically rerun now when the content of secrets.toml changes (before this you had to refresh the page manually).

    Other Changes

    • 🔗 Redirected some links to our brand-new docs site, e.g. in exceptions.
    • 🪲 Bug fix: Allow initialization of range slider with session state (#3586).
    • 🐞 Bug fix: Refresh chart when using add_rows with datetime index (#3653).
    • ✍️ Added some more type annotation in our codebase (#3908).
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Oct 5, 2021)

    Release date: Oct 5, 2021

    Highlights

    • 🎈Announcing Streamlit 1.0! To read more about check out our 1.0 blog post

    Other Changes

    • 🐞 Fixed an issue where using df.dtypes to show datatypes for a DF fails while using Arrow (#3709), Image captions stay within image width and are readable (#3530)
    Source code(tar.gz)
    Source code(zip)
  • 0.89.0(Sep 22, 2021)

    Release date: Sep 22, 2021

    Highlights

    • 💰 Introducing st.experimental_memo and experimental_singleton, a new primitive for caching! See our blog post
    • 🍔 Streamlit allows developers to configure their hamburger menu to be more user-centric

    Notable Changes

    • 💅 We updated our UI to a more polished look with a new font.
    • 🎨 We now support theme.base in the theme object when it's sent to custom components.
    • 🧠 We've modified session state to reset widgets if any of their arguments changed even if they provide a key.
      • Some widget behavior may have changed, but we believe this change makes the most sense. We have added a section to our documentation describing how they behave.

    Other Changes

    • 🐞 Bug fixes: Support svgs from a URL (#3809) and that do not start with <svg> tag (#3789)
    Source code(tar.gz)
    Source code(zip)
  • 0.88.0(Sep 2, 2021)

    Release date: Sep 2, 2021

    Highlights

    • ⬇️ Introducing st.download_button, a new button widget for easily downloading files

    Notable Changes

    • 🛑 We made changes to improve the redacted exception experience on Streamlit Cloud. When client.showErrorDetails=true exceptions display the Error Type and the Traceback, but redact the actual error text to prevent data leaks.
    Source code(tar.gz)
    Source code(zip)
  • 0.87.0(Aug 19, 2021)

    Release date: Aug 19, 2021

    Highlights

    • 🔢 Introducing st.metric, an API for displaying KPIs. Check out the demo app showcasing the functionality

    Other Changes

    • 🐞 Bug Fixes: File uploader retains state upon expander closing (#3557), setIn Error with st.empty (#3659), Missing IFrame embeds in docs (#3706), Fix error writing certain PNG files (#3597)
    Source code(tar.gz)
    Source code(zip)
  • 0.86.0(Aug 5, 2021)

    Release date: Aug 5, 2021

    Highlights

    • 🎓 Our layout primitives are graduating from beta! You can now use st.columns, st.container and st.expander without the beta_ prefix.

    Notable Changes

    • 📱 When using st.columns, columns will stack vertically when viewport size <640px so that column layout on smaller viewports is consistent and cleaner. (#3594)

    Other Changes

    • 🐞 Bug fixes: Fixed st.date_input crashes if its empty (#3194), Opening files with utf-8(#3022), st.select_slider resets its state upon interaction (#3600)
    Source code(tar.gz)
    Source code(zip)
Owner
Streamlit
The fastest way to build custom ML tools
Streamlit
Streamlit apps done following data professor's course on YouTube

streamlit-twelve-apps Streamlit apps done following data professor's course on YouTube Español Curso de apps de data science hecho por Data Professor

Federico Bravin 1 Jan 10, 2022
Write Streamlit apps using Notion! (Prototype)

Streamlit + Notion test app Write Streamlit apps using Notion! ☠️ IMPORTANT: This is just a little prototype I made to play with some ideas. Not meant

Thiago Teixeira 22 Sep 8, 2022
Streamlit component to display topics from Streamlit's community forum related to any exception.

streamlit-forum Streamlit component to display topics from Streamlit's community forum related to any exception. Installation pip install streamlit-fo

Snehan Kekre 7 Jul 15, 2022
Python framework to build apps with the GASP metaphor

Gaspium Python framework to build apps with the GASP metaphor This project is part of the Pyrustic Open Ecosystem. Installation | Documentation | Late

null 5 Jan 1, 2023
Easy way to build a SaaS application using Python and Dash

EasySaaS This project will be attempt to make a great starting point for your next big business as easy and efficent as possible. This project will cr

xianhu 3 Nov 17, 2022
Fastest Semantle solver this side of the Mississippi

semantle Fastest Semantle solver this side of the Mississippi. Roughly 3 average turns to win Measured against (part of) the word2vec-google-news-300

Frank Odom 8 Dec 26, 2022
EasyBuild is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way.

EasyBuild is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way.

EasyBuild community 87 Dec 27, 2022
A python script to simplify recompiling, signing and installing reverse engineered android apps.

urszi.py A python script to simplify the Uninstall Recompile Sign Zipalign Install cycle when reverse engineering Android applications. It checks if d

Ahmed Harmouche 4 Jun 24, 2022
An kind of operating system portal to a variety of apps with pure python

pyos An kind of operating system portal to a variety of apps. Installation Run this on your terminal: git clone https://github.com/arjunj132/pyos.git

null 1 Jan 22, 2022
Advanced Developing of Python Apps Final Exercise

Advanced-Developing-of-Python-Apps-Final-Exercise This is an exercise that I did for a python advanced learning course. The exercise is divided into t

Alejandro Méndez Fernández 1 Dec 4, 2021
OpenSea NFT API App using Python and Streamlit

opensea-nft-api-tutorial OpenSea NFT API App using Python and Streamlit Tutorial Video Walkthrough https://www.youtube.com/watch?v=49SupvcFC1M Instruc

null 64 Oct 28, 2022
Med to csv - A simple way to parse MedAssociate output file in tidy data

MedAssociates to CSV file A simple way to parse MedAssociate output file in tidy

Jean-Emmanuel Longueville 5 Sep 9, 2022
Display your data in an attractive way in your notebook!

Bloxs Bloxs is a simple python package that helps you display information in an attractive way (formed in blocks). Perfect for building dashboards, re

MLJAR 192 Dec 28, 2022
Automatic certificate unpinning for Android apps

What is this? Script used to perform automatic certificate unpinning of an APK by adding a custom network security configuration that permits user-add

Antoine Neuenschwander 5 Jul 28, 2021
Fully coded Apps by Codex.

OpenAI-Codex-Code-Generation Fully coded Apps by Codex. How I use Codex in VSCode to generate multiple completions with autosorting by highest "mean p

nanowell 47 Jan 1, 2023
Request ID propagation for ASGI apps

ASGI Correlation ID middleware Middleware for loading and receiving correlation IDs from request HTTP headers, and making them available in applicatio

snok 170 Jan 2, 2023
This repository can help you made a PocketMine-MP Server with Termux apps!

Hello This GitHub repository can made you a Server PocketMine-MP On development! How to Install Open Termux Type "pkg install git && python" If python

null 1 Mar 4, 2022
Simple Calculator Mobile Apps

Simple Calculator Mobile Apps Screenshoot If you want to try it please click the link below to download, this application is 100% safe no virus. link

null 0 Sep 24, 2022
Wrapper around anjlab's Android In-app Billing Version 3 to be used in Kivy apps

IABwrapper Wrapper around anjlab's Android In-app Billing Version 3 to be used in Kivy apps Install pip install iabwrapper Important ( Add these into

Shashi Ranjan 8 May 23, 2022