Skip to main content

A simple library or gallery for Streamlit made from widgets.

Project description

Streamlit Uploads Library

Open in Streamlit

A simple uploads library and gallery for use in Streamlit projects. Check out the demo using the Streamlit Cloud button above. This package provides a simple wrapper around st.file_uploader with a save function included and also provides library and gallery views for use in Streamlit projects.

Installation

Installation is available via pip:

pip install streamlit-uploads-library

Usage

Using any of the provided views is easy, import streamlit_uploads_library and then instantiate the class with the required directory variable. Other options can be configured by passing in different variables when instantiating the class.

Library View

  • directory (required): A str() of the path to the folder containing the library images, for example, "assets".
  • file_extensions (optional): A tuple() containing strings of the file extensions to include in the library, default is (".png", ".jpg", ".jpeg").
  • image_alignment (optional): A str() with the CSS keyword used to align the images and details columns.
  • number_of_columns (optional): An int() defining the number of required columns, default is 5.
  • show_details (optional): A bool() to show or hide the file and edit details, False hides them, default is True to show them.
  • uid (optional): A str() containing a unique identifier allowing you to create multiple libraries on the same page containing the same images.
import streamlit as st
from streamlit_uploads_library.library import Library

st.set_page_config(page_title="Streamlit Uploads Library", layout="wide")
library = Library(directory="assets/landscape/")
library_columns = Library(directory="assets/portrait/", number_of_columns=4, uid="library-columns")
library_mixed = Library(directory="assets/mixed/", uid="mixed-library")

Gallery View

  • directory (required): A str() of the path to the folder containing the gallery images, for example, "assets".
  • file_extensions (optional): A tuple() containing strings of the file extensions to include in the gallery, default is (".png", ".jpg", ".jpeg").
  • image_alignment (optional): A str() with the CSS keyword used to align the images and details columns.
  • number_of_columns (optional): An int() defining the number of required columns, default is 5.
  • show_details (optional): A bool() to show or hide the file and edit details, True shows them, default is False to hide them and create a gallery.
  • uid (optional): A str() containing a unique identifier allowing you to create multiple galleries on the same page containing the same images.
import streamlit as st
from streamlit_uploads_library.gallery import Gallery

st.set_page_config(page_title="Streamlit Uploads Library", layout="wide")
default_gallery = Gallery(directory="assets/landscape/")
columns_gallery = Gallery(directory="assets/portrait/", number_of_columns=4, uid="gallery-columns")
mixed_gallery = Gallery(directory="assets/mixed/", uid="mixed-gallery")

Upload View

The file uploader comes with multiple options able to be configured including 2 different view types. It is not required to use this and you can easily replace it with your own, it is provided as a convenience so you don't need to create the code yourself or replicate it across multiple projects.

  • save_location (required): A str() of the path to the folder you wish to save images to, for example, "assets".
  • expander (optional): A bool() used to set the initial state of the expander, only used when using the "expander" widget_type.
  • file_extensions (optional): A list() containing strings of the file extensions to include in the library, default is (".png", ".jpg", ".jpeg").
  • info_msg (optional): A str() used to set an info message above the uploader, default is "Upload new files here.".
  • header (optional): A str() used to set the header of the "expander" or the header in the "container" type widget, default is "Upload Files", can be set to None to not display it.
  • uid (optional): A str() containing a unique identifier allowing you to create multiple file uploaders on the same page.
  • upload_label (optional): A str() used to set the label of the file uploader widget, default is "Upload Files", can be set to None to display an empty string instead.
  • widget_type (optional): A str() defining the type of widget to use to display the file uploader, options are "container" or "expander", default is "container".
import streamlit as st
from streamlit_uploads_library.uploads import UploadFiles

st.set_page_config(page_title="Streamlit Uploads Library", layout="wide")
default_uploader = UploadFiles(save_location="assets")
expander_uploader = UploadFiles(save_location="assets", widget_type="expander")

Caching

Streamlit Uploads Library makes use of the st.cache_resource decorator so the library and gallery on this page will load from the cache instead of reloading the images each time the app is run. You will probably want to clear your cache after uploading new files to your app, the file uploader view provided by this package takes care of that for you but if you use your own file uploader and save function then to clear the cache you can use the st.cache_resource.clear() function provided by Streamlit.

Example App (Demo)

To run the example application provided in the repository:

git clone https://github.com/hreikin/streamlit-uploads-library
cd streamlit-uploads-library/
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run Home.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamlit_uploads_library-0.1.3.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file streamlit_uploads_library-0.1.3.tar.gz.

File metadata

File hashes

Hashes for streamlit_uploads_library-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6e6a40c98cc0b671a4b55056d172d558115508d3dbdf802181616cf963d77f80
MD5 900d5759f01f73f09434a7907c53b13d
BLAKE2b-256 bc8cd02f56a26ce4b131b93c3cb14ac393231fce41998f93ff8adf39452ebddb

See more details on using hashes here.

File details

Details for the file streamlit_uploads_library-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for streamlit_uploads_library-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5ef352a4d4fa7847cbcda48d0d9b82df2d4055f837fc3ae97791b9e96235a925
MD5 a4e8c1d70b9d2e880c9bca6db54106ac
BLAKE2b-256 0746441fd54be4b6176285dc4fb6aa60161c5919246de5a9fc28866cd6c2b1b2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page