Closes#4
Every async DB function accepted a `timeout` parameter but never passed
it to aiohttp, causing scripts to hang indefinitely if the API became
unresponsive. Fixed by passing `aiohttp.ClientTimeout(total=timeout)` to
each `aiohttp.ClientSession()` constructor across all six functions:
db_get, url_get, db_patch, db_post, db_put, db_delete.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace hardcoded PD API bearer token in db_calls.py with dotenv/env var
- Delete scripts/supabase_doodling.py (dead scratch file with hardcoded Supabase JWT)
- Add python-dotenv dependency and .env.example template
- Consolidate check_prod_missing_ratings.py to import AUTH_TOKEN from db_calls
- Hard fail if PD_API_TOKEN is missing to prevent silent auth failures
Fixes#2, Fixes#3
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Regenerate scouting CSVs with latest player ratings
- Update archetype calculator with BP-HR whole number rule
- Refresh retrosheet normalized data
- Minor script updates for Kalin Young card creation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>