chore: pin all Python dependency versions in requirements.txt #62
Labels
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: cal/major-domo-database#62
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Unpinned dependencies silently introduced a breaking change that caused all POST requests from the Discord bot to fail. An unpinned FastAPI/Starlette upgrade changed
redirect_slashesbehavior, causing 307 redirects that dropped POST request bodies.Current State — CRITICAL
Nearly all dependencies are unpinned:
fastapi— no version specified at alluvicorn— no version specified at allpython-multipart— no version specified at allpandas— no version specified at allrequests— no version specified at allnumpy<2.0.0— floor constraint onlypsycopg2-binary>=2.9.0— floor constraint onlyredis>=4.5.0— floor constraint onlyAdditionally, the Dockerfile uses
tiangolo/uvicorn-gunicorn-fastapi:python3.11which itself pulls latest versions.Task
ssh akamai) and rundocker exec sba_db_api pip freezeto capture exact installed versions==) inrequirements.txtrequirements-dev.txtWhy This Matters
This repo was the direct cause of a production outage on 2026-03-09. An unpinned FastAPI/Starlette upgrade changed redirect behavior, silently breaking scorecard submissions. Every Docker build should produce an identical image.
Fixed in PR #63.
Captured exact versions from production via
docker exec sba_db_api pip freezeand pinned all direct dependencies. Also explicitly pinnedstarlette==0.52.1(the transitive dep that caused the outage) and movedpytest/pytest-asyncioto a newrequirements-dev.txt.