stqdm
stqdm is the simplest way to handle a progress bar in streamlit app.
Maintenance Status
STqdm is intentionally small and low-churn, but it is actively maintained for compatibility and security.
The public API is kept close to tqdm, supported combinations are tracked in CI, and security reports should be sent privately through SECURITY.md.
How to install
pip install stqdm
Development
This project uses uv for packaging and dependency management, with mise managing local tools and sourcing uv's .venv.
Trust the local mise config once, then install tools and dependencies:
mise trust
mise install
mise run install
mise run test
mise manages local tools, uv manages the project environment and lockfile, and nox creates isolated compatibility environments. Nox is configured to use uv as its virtualenv backend when available.
Compatibility checks are managed with nox:
mise run nox-list
mise run compat
How to use
You can run the Streamlit demo app from demo/app/Home.py.
The live deployment is available at stqdm-demo.streamlit.app.
The demo surface and the behaviors it covers are documented in demo/FEATURES.md.
Use stqdm in main
from time import sleep
from stqdm import stqdm
for _ in stqdm(range(50)):
sleep(0.5)
Use stqdm in sidebar
from time import sleep
import streamlit as st
from stqdm import stqdm
for _ in stqdm(range(50), st_container=st.sidebar):
sleep(0.5)
Customize the bar with tqdm parameters
from time import sleep
from stqdm import stqdm
for _ in stqdm(range(50), desc="This is a slow task", mininterval=1):
sleep(0.5)
Display a progress bar during pandas Dataframe & Series operations
STqdm inherits from tqdm, you can call stqdm.pandas() in a similar way. See tqdm docs.
from time import sleep
import pandas as pd
from stqdm import stqdm
stqdm.pandas()
pd.Series(range(50)).progress_map(lambda x: sleep(1))
pd.Dataframe({"a": range(50)}).progress_apply(lambda x: sleep(1), axis=1)
Display the progress bar only in the frontend or the backend
from time import sleep
from stqdm import stqdm
# Default to frontend only
for i in stqdm(range(50), backend=False, frontend=True):
sleep(0.5)
for i in stqdm(range(50), backend=True, frontend=False):
sleep(0.5)
Setting Default Configuration
stqdm can set default configuration for all future progress bars.
from time import sleep
from stqdm import stqdm
# Set default configuration to suppress frontend display
stqdm.set_default_config(frontend=False)
# Utilize stqdm with the default configuration
# It will use the new default configuration with frontend=False
for _ in stqdm(range(50)):
sleep(0.5)
Scoped Configuration
Use scope to temporarily override default arguments in a with block.
from time import sleep
import streamlit as st
from stqdm import stqdm
# Override default settings temporarily within a scope
with stqdm.scope(desc="Processing", bar_format="{desc}"):
for _ in stqdm(range(10)):
sleep(0.5)
# Outside the scope, stqdm reverts to the default settings
for _ in stqdm(range(10)):
sleep(0.5)
# Attach all the stqdm instances used inside the scope
# to the sidebar, then go back to normal
with stqdm.scope(st_container=st.sidebar):
function_1()
function_2()
Going further with configuration management
See the Streamlit demo app for the complete scoped configuration example.
Metadata
Release files for stqdm 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| stqdm-0.2.1.tar.gz | 429.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| stqdm-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 442.2 kB
Release files / stqdm-0.2.1.tar.gz
| Download URL | stqdm-0.2.1.tar.gz |
|---|---|
| Size | 429.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
311cee1ad0d0528ddd1c3b6e78921df48d7aefcde64708b4ec25770ac599d545
|
|
BLAKE2b-256 checksum How to use checksums |
0ed415d01b55aa93794f9c02ede143a755ae4ac8e875465aa3c0172e53152da9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / stqdm-0.2.1-py3-none-any.whl
| Download URL | stqdm-0.2.1-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7cb69888c2c6c146501d676168e1929e021e5cbcb198658d7f7370ee9b51801e
|
|
BLAKE2b-256 checksum How to use checksums |
8d7c60600e1d5403284abf8a719dd621a0700fb1e1dddffd3896b328f2a64356
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|