- README: add a 5-minute Quickstart with a Python 3.9+ prerequisites
block (OS-specific python3/pip notes + venv step for PEP-668 systems)
- pyproject: set author email to david.boyd1@dc.gov
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- bls_client/retry.py: with_retries() retries timeouts/connection drops and
429/5xx with exponential backoff; honors Retry-After; never retries 4xx or
BLSQuotaError (those won't fix themselves)
- BLSClient(retries=2, backoff=0.5) wraps the data POST and discovery GETs;
qcew CSV fetch wrapped too. retries=0 disables.
- tests/test_retry.py: 6 offline tests (injectable sleep, no real delays)
- README: retry behavior documented; drop the now-resolved limitation
Offline suite 125 passing; live smoke green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- pyproject.toml: setuptools build, deps (requests), dev extra (pytest),
pytest config with opt-in `live` marker
- tests/: 95 offline tests locking every series-ID encoding against
known-good IDs (regression guard for the JOLTS/OES/ECI/productivity/QCEW
fixes), plus a live API smoke test behind `-m live`
- README: install-as-package + test instructions; drop the now-resolved
"no packaging"/"no tests" limitations
- gitignore build/test artifacts
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Includes:
- API v1/v2 documentation, endpoints, request/response schemas
- Complete survey catalog (60 surveys, live-fetched from API)
- Series ID decode tables: LAUS, CES, SM, QCEW, OES, JOLTS, CPI, PPI
- QCEW quarterly (47 fields) and annual (43 fields) CSV schemas
- dc_md_va_unemployment.py: pulls 16 LAUS series for DC/MD/VA + DC MSA
- Example API response and 5-year CSV output
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>