Files
ds-chat/backend/pyproject.toml
T
ksmithandClaude Sonnet 5 ad745c734e Fix WNS push 400s and improve push failure logging (#56)
WNS (Windows/Edge push) has required an X-WNS-Cache-Policy header
since April 2024; the production venv was likely still on the old
pywebpush 2.0.x installed when the app was first deployed, which
predates the library's fix. Floored the dependency at 2.4.0 (current
latest) so the next deploy picks it up.

Also logs response body and headers on any non-410/404 push failure,
not just body text -- WNS's own 400s carry their actual reason in a
header, which the old body-only logging would still have missed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-28 21:04:04 -06:00

53 lines
1.4 KiB
TOML

[project]
name = "ds-chat"
version = "1.0.0"
description = "DS Chat backend service"
license = { text = "AGPL-3.0-or-later" }
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115",
"uvicorn[standard]>=0.32",
"sqlalchemy>=2.0.36",
"asyncpg>=0.30",
"alembic>=1.14",
"pydantic>=2.9",
"pydantic[email]>=2.9",
"pydantic-settings>=2.6",
"argon2-cffi>=23.1",
"itsdangerous>=2.2",
# #56: >=2.0 let the production venv sit on an old 2.0.x that predates
# the fix for web-push-libs/pywebpush#162 -- WNS (Windows/Edge push)
# has required an X-WNS-Cache-Policy header since April 2024, and an
# old pywebpush that never sends it gets a bodyless 400 on every send.
# Floored at the actual latest release (merged/shipped 2026-01 through
# 2026-08) rather than pinning to whichever exact point release first
# included the fix, since that wasn't independently confirmed.
"pywebpush>=2.4.0",
"redis>=5.0",
"httpx>=0.27",
"gunicorn>=23.0",
"Pillow>=10.0",
"python-multipart>=0.0.9",
"aiosmtplib>=3.0",
"cryptography>=43.0",
]
[project.scripts]
ds-chat-create-user = "app.cli:main"
[project.optional-dependencies]
dev = [
"pytest>=8",
"pytest-asyncio>=0.24",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["app"]
[tool.pytest.ini_options]
asyncio_mode = "auto"