You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Changed
Static WNBA Teams Data - Added the Portland Fire and Toronto Tempo expansion teams, so get_wnba_teams() and the find_wnba_team* helpers return them (PR #693)
Static Players Data - Refreshed players and wnba_players from stats.nba.com: added the 2025 draft class and newly listed players, updated active-roster flags for the current season, applied upstream name corrections, and dropped inactive entries the API no longer returns (PR #687, PR #698)
Fixed
V3 Normalized Output - Fixed get_normalized_dict() / get_normalized_json() returning empty payloads for V3 endpoints by persisting endpoint context and normalizing parser-generated data sets (PR #606, fixes #602)
DunkScoreLeaders Parsing - Fixed response parsing by adding a dedicated parser, registering it in parser dispatch, and aligning expected data keys with the endpoint's nested V3 camelCase payload fields (PR #598)
ScheduleLeagueV2 - League schedules now parse correctly regardless of the order of keys in the NBA.com response (PR #692)
Static Teams Data - Added the Boston Celtics' 2024 championship, so find_teams_by_championship_year(2024) returns them (PR #695)
Win-Loss Example Notebook - Replaced the DataFrame.append call removed in pandas 2 in the Home Team Win-Loss data-prep notebook (PR #684)
Infrastructure
GitHub Actions CI - Added GitHub Actions running lint plus unit and VCR tests on Python 3.10–3.13 alongside CircleCI, with a single CI passed status check, Conventional Commit PR-title validation, network-blocked test runs, and a lockfile sync check (PR #704, PR #706)
Release Pipeline - Releases are now published to PyPI from a GitHub Actions workflow using Trusted Publishing, and scripts/gen-release.sh was rewritten to prepare release PRs safely, including agent-written notes and a --bump override (PR #705, PR #710, PR #711)
Static Teams Generator - Added scripts/static_teams_update/generate_static_teams.py to refresh championship years and new teams in the static data, with a --check mode (PR #699)
Integration Season Pinning - Cassette-backed integration tests now pin season defaults to the recorded season, so they no longer break when the season rolls over each October (PR #700)
Live Endpoint Unit Tests - Mocked the HTTP layer in the live boxscore/odds get_request_url tests, which were making real network calls (PR #686)
Ruff Tooling - Replaced flake8, isort, and pylint with ruff for linting and formatting; added pre-commit hooks to auto-fix on commit (PR #639)
Pytest Recording Stack - Added pytest-recording (and vcrpy) to dev dependencies; introduced pytest markers for integration test modes (live, vcr, canary, deprecated_endpoint) (PR #640)
Integration Conftest - Added tests/integration/conftest.py with shared request pacing, cassette directory configuration, and automatic skipping for deprecated endpoint smoke cases (PR #640)
VCR Query Matcher - Updated query matching to ignore dynamic GameDate params so cassette playback remains stable in CI (PR #644)
VCR Smoke and Scenario Coverage - Added VCR-backed smoke coverage for ~130 endpoints and scenario/regression coverage for LeagueDashTeamStats, LeagueGameFinder, PlayerDashPtShotDefend, ScoreboardV3, TeamDashLineups, TeamGameLog, and TeamGameLogs, with shared validation helpers (PR #640)
Test Layout Refactor - Reorganized integration tests into tests/integration/smoke/ and tests/integration/scenarios/, replaced deferred_endpoints.py with EndpointSpec (auto-parameter resolution, per-endpoint skip / deprecated metadata), and reorganized unit tests into package-based folders (PR #640, PR #643)
Additional Test Coverage - Added unit tests for EndpointSpec, legacy debug/proxy configuration, and DunkScoreLeaders / BoxScoreTraditionalV3 parsing and normalization (PR #640, PR #645, PR #598, PR #606)
Integration Test Fixes - Updated pytest skip / fail calls to the reason= API and temporarily skipped test_stats_library_playbyplayregex.py until PlayByPlayV3 normalization is wired up (PR #640)
Contributor
Documentation Overhaul - Updated the README, contributing guide, and debug/HTTP/static docs to match the current codebase; regenerated the table of contents (adding 21 missing endpoints and the live endpoints); and added docs for DunkScoreLeaders, GravityLeaders, ScoreboardV3, and VideoEventsAsset (PR #702)
AI Agent Guide - Added AGENTS.md / CLAUDE.md and shared agent settings for AI coding tools (PR #701)