diff --git a/README.md b/README.md index 6df0aad..6b91306 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,15 @@ core test suite. *Planned (not in v0.8): Plotly interactivity, a `K(r, t)` time-slider animation, and multi-file comparison — see [`app/README.md`](app/README.md).* +### Deploy (Streamlit Community Cloud) + +The app deploys on [Streamlit Community Cloud](https://share.streamlit.io) with +no extra setup: point a new app at **`app/streamlit_app.py`** on the **`main`** +branch. Dependencies install from the repo-root **`requirements.txt`** (the +package + its `gui` extra; `runtime.txt` pins Python 3.12). The app resolves the +bundled `examples/*.npz` from its own file location, so the example dropdown +works in the cloud sandbox. Every push to `main` triggers an automatic redeploy. + ## 2D kernels 2D input `K(x, y, t)` is handled by **radial reduction with full-2D moments**: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e4daa6a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,18 @@ +# Streamlit Community Cloud installs the app's dependencies from this file. +# +# Install the package itself with its `gui` extra, from the repo root. This +# pulls the runtime deps (numpy, scipy, matplotlib) + streamlit, plus the +# kernel_viewer / stateflow packages, in one line. +# +# yupi is intentionally NOT listed: it is only the `examples` extra used by the +# offline data generator (examples/generate_yupi_examples.py). The deployed app +# loads the committed examples/*.npz and never imports yupi. +# +# If a Streamlit Cloud image rejects the editable install, replace the line +# below with the explicit, non-editable form: +# numpy>=1.24 +# scipy>=1.10 +# matplotlib>=3.7 +# streamlit>=1.30 +# . +-e .[gui] diff --git a/runtime.txt b/runtime.txt new file mode 100644 index 0000000..d2aca3a --- /dev/null +++ b/runtime.txt @@ -0,0 +1 @@ +python-3.12