Tesseract Streamlit automatically generates Streamlit apps from Tesseract APIs.
Project description
Tesseract Streamlit
A CLI tool that generates a Streamlit app from a running Tesseract instance.
The generated app allows users to interactively submit input to the apply endpoint and optionally visualise results using custom plotting functions.
✨ Features
- 🔍 Parses Tesseract's OpenAPI schema
- ⚙️ Automatically builds input forms for the
applyendpoint - 📊 Supports user-defined plotting of inputs and outputs
- 🚀 Outputs a ready-to-run Streamlit app script
- 🧩 Modular and customizable with minimal boilerplate
🛠 Requirements
- Modern UNIX based OS (Linux or macOS), or Windows with WSL
- Python >= 3.10
- tesseract-core
📦 Installation
pip install tesseract-streamlit
🧰 Usage
tesseract-streamlit [OPTIONS] URL OUTPUT
URL: The address to the Tesseract instance you want to interface with.OUTPUT: The file path to write the generated Streamlit app.
⚙️ Options
| Option | Description |
|---|---|
--user-code, -u |
(Optional) Path to Python file with plotting functions |
--help |
Show the help message and exit |
📊 With Custom Plotting
You can optionally pass a Python file containing user-defined functions for plotting inputs and/or outputs.
tesseract-streamlit --user-code udf.py http://localhost:48819 app.py
The udf.py file should define functions like:
import plotly.graph_objects as go
def plot(inputs, outputs) -> go.Figure:
"""Title of the plot.
Description of what the plot conveys. Will be displayed above the
plot itself.
"""
fig = go.Figure()
# some plotly logic to visualise input_schema and output_schema
return fig
Where we have chosen Plotly as our plotting back-end, but any supported library by Streamlit is allowed.
[!NOTE] Additionally, we support PyVista plots (thanks to edsaac/stpyvista)! Just annotate your function to return a
pyvista.Plotterinstance, and an interactive plot will be inserted.
⚙️ More info on defining custom plotting functions
Custom plotting is easy and flexible. Here’s how to make the most of it:
- Function names don't matter, so name them however you like.
- Define multiple functions to visualise more than one aspect of the data. Each one will generate a separate plot in the Streamlit app.
- Add a docstring to each function to add descriptive text in the app:
- First line of the docstring will appear as the plot title.
- Remaining lines will be shown as a description below the title.
- Omitting docstrings is allowed, but raises a
UserDefinedFunctionWarning.
- Public functions must include either
inputs,outputs, or both as parameter names. Any public function that doesn't use these names will raise aUserDefinedFunctionError. - Private functions may be defined with a leading underscore in their name, eg.
def _foo(x: float) -> float: ....- Arbitrary parameters and return types are allowed.
- Will not produce plots directly in the Web UI.
- Can be called from within your public plotting functions.
This setup gives you control over what to display and how to explain it, directly from your code.
📁 Example
See the example README for a basic example walk-through, or simply run the following script to see the end result!
bash examples/vectoradd_jax/run.sh
This will open a browser window with the Streamlit UI where users can input values and visualise the response.
⚠️ Current Limitations
While tesseract-streamlit supports Tesseracts with an InputSchema formed with arbitrary nesting of Pydantic models, it does not yet support nesting Pydantic models inside native Python collection types such as:
- ❌
list[Model] - ❌
tuple[Model, ...] - ❌
dict[str, Model]
These types will raise an error or be ignored in the generated app.
You can however use these native collections with basic Python types, such as:
- ✅
list[str] - ✅
dict[str, int] - ✅
tuple[float, float]
If you would like to request support for nested models within collections in a future release, please let us know.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tesseract_streamlit-0.1.0.tar.gz.
File metadata
- Download URL: tesseract_streamlit-0.1.0.tar.gz
- Upload date:
- Size: 243.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd5bacafaf9a6ba34eefe5f09ad8c04b538b7adc5ba5ba3b1949d059a87d7ce9
|
|
| MD5 |
f48cf593963720825b640a81a315fa33
|
|
| BLAKE2b-256 |
19e1839ee367970761b3edfbb59e4ea6ea63b9a58e0ef1d2a7602d58423cb195
|
Provenance
The following attestation bundles were made for tesseract_streamlit-0.1.0.tar.gz:
Publisher:
publish.yml on pasteurlabs/tesseract-streamlit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tesseract_streamlit-0.1.0.tar.gz -
Subject digest:
cd5bacafaf9a6ba34eefe5f09ad8c04b538b7adc5ba5ba3b1949d059a87d7ce9 - Sigstore transparency entry: 351668571
- Sigstore integration time:
-
Permalink:
pasteurlabs/tesseract-streamlit@02be1a4b429b68cede22774015eb403417a93397 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/pasteurlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02be1a4b429b68cede22774015eb403417a93397 -
Trigger Event:
release
-
Statement type:
File details
Details for the file tesseract_streamlit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tesseract_streamlit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 235.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d24a507725ab2fd698144ac2750952f7a2435eddd8cf91bbc82bb6824693cb7
|
|
| MD5 |
4644b9c115b354336edc4fe2a56dc657
|
|
| BLAKE2b-256 |
afb477ee84168780dd7b42fe314b9a50838c7a22bc590f78c71fc0ef97beea82
|
Provenance
The following attestation bundles were made for tesseract_streamlit-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on pasteurlabs/tesseract-streamlit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tesseract_streamlit-0.1.0-py3-none-any.whl -
Subject digest:
7d24a507725ab2fd698144ac2750952f7a2435eddd8cf91bbc82bb6824693cb7 - Sigstore transparency entry: 351668589
- Sigstore integration time:
-
Permalink:
pasteurlabs/tesseract-streamlit@02be1a4b429b68cede22774015eb403417a93397 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/pasteurlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02be1a4b429b68cede22774015eb403417a93397 -
Trigger Event:
release
-
Statement type: