starlette==1.9.0
httpx==0.28.1
authlib==1.9.1
itsdangerous==2.2.0
django==6.0.9
django-cors-headers==4.9.0
exc-djangorestframework-api-key==1.0.0
django-filter==26.2
XlsxWriter==3.2.9
pandas==3.0.6
openpyxl==3.1.5
djangorestframework==3.18.3
django-sendgrid-v5==1.3.1
redis==7.4.1
celery==5.6.3
flower==2.2.0
python-dotenv==1.2.4
sentry_sdk==2.72.0
channels==4.3.2
asyncio==4.0.0
channels-redis==4.3.0
uvicorn[standard]==0.54.0
nest_asyncio==1.6.0
Office365-REST-Python-Client==3.3.0
streamlit==1.66.1
streamlit-keycloak-lex==1.0.5
# `lex reflex`. Upper-bounded like streamlit: lex.lex_app.reflex.auth extends
# reflex-enterprise's OIDC provider hooks, which a 0.10 is free to change.
reflex==0.9.13
reflex-enterprise==0.9.7
sqlalchemy==2.1.5
django_redis==7.0.0
django-storages[google]==1.14.6
DjangoSharepointStorage==1.1.7
click==8.5.0
django-lifecycle==1.3.0
python-keycloak==3.9.1
markdown==3.11.2
mistune==3.4.0
jinja2==3.1.6
django-simple-history==3.13.0
markdown2==2.5.5
xhtml2pdf==0.2.26
weasyprint==70.0
tabulate==0.10.0
django-db-views==0.1.14
pre-commit==4.7.0
factory-boy==3.3.3
coverage==7.16.2
django-oauth2-codeflow==1.1.1
psycopg2-binary==2.9.13
django-celery-beat==2.9.0
pytest==9.1.1
cryptography==50.0.2

# The compiled LEX frontend, published from process-admin-general-client and
# installed by pip alongside this package. This one line is both the dependency
# and the release's provenance record: `git show <tag>:requirements.txt` answers
# "which frontend did this release ship?", and the release notes read it to work
# out what changed in the interface between two releases.
#
# `~=` rather than `==`: pip treats two differing `==` constraints on one package
# as unsatisfiable and refuses to install, so an exact pin here could not be
# overridden by a project that needs a patch. `~=2.1.0` means >=2.1.0, ==2.1.*.
lex-app-frontend~=2.2.0
