app.bettersight.io/backend/requirements.txt

52 lines
2.0 KiB
Plaintext

# ── Phase 1 — core API / queue / data layer ──────────────────
Flask==3.0.3
Flask-Cors==4.0.1
Jinja2==3.1.4
gunicorn==22.0.0
python-dotenv==1.0.1
requests==2.32.3
redis==5.0.7
rq==1.16.2
Flask-Limiter==3.5.0
PyJWT==2.9.0
# ── Billing / email ───────────────────────────────────────────
stripe==10.7.0
resend==2.4.0
# ── Phase 2 — scraping engine (moved from legacy app.py) ─────
# playwright is unpinned to a minimum, not exact — 1.46.0's pinned
# greenlet dependency has no prebuilt wheel on newer Python versions
# and fails to build from source; newer playwright releases pull in a
# newer greenlet that does ship prebuilt wheels.
playwright>=1.55.0
# playwright-stealth is pinned to 1.0.6 (not the 2.x line) because
# CLAUDE.md §10 documents the 1.x `stealth_async(page)` function API
# verbatim; playwright-stealth 2.x replaced it with a class-based
# `Stealth().apply_stealth_async(...)` API — a breaking change from
# what's specified. 1.0.6 depends on pkg_resources, which setuptools
# >=81 no longer ships — hence the setuptools pin below.
playwright-stealth==1.0.6
setuptools<81
beautifulsoup4==4.12.3
lxml==5.3.0
nest_asyncio==1.6.0
openai==1.43.0
gspread==6.1.2
google-auth==2.34.0
# ── Phase 6 — embeddings / similarity ─────────────────────────
# Unpinned to a minimum rather than exact — prebuilt wheels for very
# new Python versions lag behind numpy point releases; pip will pick
# the newest compatible wheel.
numpy>=2.2.0
# ── Observability (initialised in Phase 7, dependency pinned now) ─
sentry-sdk[flask]==1.44.1
# ── Testing ────────────────────────────────────────────────────
pytest==8.3.2
pytest-cov==5.0.0
pytest-mock==3.14.0
fakeredis==2.24.1