Support matrix¶
Published combinations for FluxLit 0.13.x on PyPI. Outside this matrix, installs may work but are best-effort until tested in CI.
Python¶
Python |
CI (main branch) |
|---|---|
3.10 |
Ubuntu, macOS, Windows matrix |
3.11 |
Ubuntu, macOS, Windows matrix |
3.12 |
Ubuntu, macOS, Windows matrix + docs + security-audit + proxy smoke |
3.13 |
Ubuntu, macOS, Windows matrix |
Core dependencies (approximate)¶
CI installs pip install -e ".[dev]" from pyproject.toml pins and the resolver’s chosen versions. For latest upstream smoke (Streamlit / FastAPI / Starlette upgraded after install), see the upgrade-smoke workflow in .github/workflows/upgrade-smoke.yml — it is non-blocking and runs on a schedule or manual dispatch.
Package |
Notes |
|---|---|
FastAPI / Starlette |
Lower bounds in |
httpx / anyio |
|
Streamlit |
|
Uvicorn |
|
Pydantic Settings |
|
Stability charter (operator contract)¶
FluxLit 0.12.x documents which emitted names and fields operators may rely on for dashboards, alerts, and CI without treating every patch as a breaking change. Anything marked experimental may change behavior or shape in a minor release with changelog notice.
Gateway Prometheus metrics¶
The canonical list is fluxlit.gateway.metrics.GATEWAY_PROMETHEUS_METRICS in code and the Metrics contract table in Observability.
Name |
Type |
Labels |
Stability |
|---|---|---|---|
|
Counter |
|
Stable (0.x). |
|
Histogram |
|
Stable name and labels; bucket changes are semver-visible (see observability). |
Page manifest (manifest_version 1)¶
Produced by :func:~fluxlit.pages.manifest.build_page_manifest (and fluxlit pages manifest). Top-level keys:
Key |
Stability |
Notes |
|---|---|---|
|
Stable |
Currently |
|
Stable |
Declared stable for v1 output. |
|
Stable |
From |
|
Stable (array shape) |
List of page objects; fields inside each page below. |
Per page object (stable keys; values reflect your app):
Key |
Stability |
Notes |
|---|---|---|
|
Stable |
Registration-time metadata. |
|
Stable |
|
|
Stable |
Qualnames of |
|
May evolve |
Optional list from |
Structured log field contracts¶
Export |
Fields |
Stability |
|---|---|---|
|
|
Stable for JSON formatter output. |
|
|
Stable for gateway access |
Header redaction helpers in fluxlit.logging.redact are behavior-stable for security (values may show <redacted>); exact log wording of debug lines is not chartered.
Experimental FluxlitSettings fields¶
Field / env |
Stability |
Notes |
|---|---|---|
|
Experimental |
Generator pages run an extra |
|
Experimental |
Async |
Promotion to stable for 1.0 requires: documented semantics, tests, and an explicit roadmap/CHANGELOG decision (no longer gated behind experimental flags).
Pinning in production apps¶
FluxLit sits between FastAPI, Streamlit, Uvicorn, Starlette, httpx, and optional PyJWT / prometheus-client. Unpinned transitive upgrades can change Streamlit navigation, AppTest behavior, or gateway timing.
Recommended practices:
Lock the environment your image or VM runs — for example
uv lock/uv sync,pip-tools(pip-compileon arequirements.in), or aconstraints.txtthat pinsfluxlitplus your direct app dependencies.Record the versions you shipped (
pip freezeoruv export) next to each release tag so regressions are bisectable.Re-run your test suite (including
FluxLitTestClientand any StreamlitAppTestflows) after any minor Streamlit or Starlette bump; usefluxlit doctorandfluxlit configafter changing proxy or URL settings.
Minimal requirements.in sketch (adjust pins to your policy):
fluxlit>=0.13,<1.0
streamlit>=1.36
After each FluxLit PyPI release, align this sketch with the current minor (for example fluxlit>=0.13,<1.0 until you adopt 0.14).
Then pip-compile requirements.in -o requirements.txt and install from requirements.txt in containers.
Testing and compatibility¶
FluxLitTestClientexercises the same gateway prefix and/apimounting as production; keep its version aligned with the FluxLit line you use.Streamlit
AppTestAPIs evolve between Streamlit minors; pin Streamlit in CI to the same range you run in production, and consult Testing for markers and version skips.
Upgrades and release notes¶
Optional extras¶
Extra |
Purpose |
|---|---|
|
PyJWT, cryptography — JWT/OIDC helpers; same tree |
|
|
|
Playwright — browser tests under |
Long-term support (LTS)¶
There is no LTS branch for 0.x today; security and fixes land on the current minor on PyPI. If you need extended support for an older line, open a discussion with maintainers.
1.0 compatibility and deprecation¶
This subsection is the compatibility contract for the 1.x line after 1.0.0; it is updated when release candidates ship. Until 1.0.0rc1, treat numbered pre-releases as draft if they differ from this text.
Semver: After 1.0.0, FluxLit follows semver for the documented stable surface (CLI,
FLUXLIT_*keys called out in Configuration, and public Python APIs exported from :mod:fluxlitand described in guides). Experimental settings and internal debug logs remain exempt until promoted.Python / Streamlit / core deps: The Python and Core dependencies tables become the compatibility commitment for 1.x minors unless a release explicitly widens or narrows them.
Deprecations: behavior or config removals will be announced in Changelog with a deprecation window where practical (at least one minor when feasible).
Metrics and manifests: Gateway metric names and manifest_version 1 top-level keys above stay stable across 1.x unless a major documents a migration (for example a new manifest version).