Skip to main content

stqdm

Tests codecov CodeQL Downloads Supported Python Versions pypi version

stqdm is the simplest way to handle a progress bar in streamlit app.

demo gif

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

demo gif

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)

Source distribution for stqdm 0.2.1
File Size Uploaded
stqdm-0.2.1.tar.gz 429.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for stqdm 0.2.1
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page