chore: drop 10 unused python deps + their orphan transitives (#842)
Removes packages with zero usage in the codebase, verified by source grep across app/, copilot.py, and alembic/. None of these are imported under their actual import names anywhere — including via dynamic imports, conditional imports, or test files. Removed top-level deps (10): - blueprint - libmagic (distinct from python-magic, no usage) - marshmallow-sqlalchemy (only marshmallow itself is used, pulled by environs) - openai (CoPilot's AI flow goes through Talon HTTP; OpenAI calls live in NanoClaw, not here) - pcre2 (only mention is a commented-out import) - pika (no AMQP/RabbitMQ paths in the app) - psycopg2-binary (app uses MySQL via aiomysql/pymysql) - python-jose (PyJWT is the actual JWT lib in use) - pytest (no test files exist in backend/) - mitreattack-python (already commented out in requirements.txt; cleaning up the stale .in entry) Removed orphan transitives (3 + pytest-playwright): - ecdsa (only python-jose depended on it) - iniconfig, pluggy (only pytest) - pytest-playwright (only depends on pytest) Kept that the first-pass grep flagged but verification rescued: - python-magic cortex4py requires it (pipdeptree --reverse) - playwright now promoted to an EXPLICIT dep (was pulled transitively by pytest-playwright). Used by app/connectors/grafana/services/reporting.py via `from playwright.async_api`. - elasticsearch7 imported as `elasticsearch7` (not `elasticsearch`) in 3 files - python-multipart not imported directly but required transitively by FastAPI File/Form/UploadFile Verified locally: - docker build of backend/Dockerfile succeeds - new image is ~1GB vs ~4.5GB on main (~77% smaller) - backend boots cleanly: alembic upgrade head, all seed funcs, APScheduler init, "Application startup complete" - all ~50 routers import without ModuleNotFoundError - `from playwright.async_api import async_playwright` succeeds - existing MySQL data unchanged (volume reused) Co-authored-by: taylor_socfortress <taylor.walton@socfortress.co> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>