Merged
Conversation
--- updated-dependencies: - dependency-name: requests dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
rsforbes
added a commit
to rsforbes/nba_api
that referenced
this pull request
Nov 13, 2025
Refactored the PlayByPlayV3 parser to eliminate fragile dynamic key extraction and follow CLAUDE.md V3 parser best practices. Changes: - Replace dynamic key indexing with explicit field access - Use defensive .get() calls with defaults throughout - Define all 24 action fields explicitly in headers tuple - Handle edge cases (missing meta, empty actions, missing fields) Testing: - Added 11 comprehensive unit tests covering all edge cases - Created test fixtures for unit testing - Verified with real API calls (475 plays processed successfully) - All 448 unit tests pass Fixes swar#443
rsforbes
added a commit
that referenced
this pull request
Nov 14, 2025
* remove: BoxScorePlayerTrackV2 endpoint (NBA API returns 500 error) The NBA API no longer supports this endpoint and returns HTTP 500 errors. Users should use BoxScorePlayerTrackV3 instead. Removed: - src/nba_api/stats/endpoints/boxscoreplayertrackv2.py (endpoint class) - docs/nba_api/stats/endpoints/boxscoreplayertrackv2.md (documentation) - docs/nba_api/stats/endpoints_output/boxscoreplayertrackv2_output.md (examples) - Import from src/nba_api/stats/endpoints/__init__.py - Reference from docs/table_of_contents.md - Deferred endpoint from tests/integration/deferred_endpoints.py - Mapping from tools/stats/library/mapping.py - Entry from docs/examples/Basics.ipynb endpoint list - analysis_archive/stats/analysis.json (archive file) * fix: retire BoxScorePlayerTrackV2 and fix LeagueIDNullable default (#562) - Remove BoxScorePlayerTrackV2 endpoint (NBA API returns HTTP 500) - Fix LeagueIDNullable default value to prevent empty responses - NBA API now requires explicit LeagueID instead of empty string - Bump version to 1.11.3 * remove: PlayerFantasyProfile endpoint (NBA API no longer supports) - Remove PlayerFantasyProfile endpoint class and all references - Remove documentation and test references - Update endpoint mappings and analysis tools - Endpoint removed due to NBA.com API discontinuation * fix: handle missing Coaches dataset in CommonTeamRoster (#553) - Use .get() with default empty dataset for Coaches - NBA API sometimes omits Coaches dataset - Returns empty dataset with proper headers when missing - Add comprehensive unit tests for CommonTeamRoster endpoint - Test coverage includes missing dataset scenario * fix: add missing PLAYER_SLUG and TEAM_SLUG to CommonAllPlayers (#550) - Added PLAYER_SLUG and TEAM_SLUG to expected_data in CommonAllPlayers endpoint - These fields are returned by the NBA API but were previously not included - Updated CHANGELOG.MD with fix details and note about POSITION field limitation - Fixed typo in CONTRIBUTING.md (activate -> eval \$(poetry env activate)) Closes #550 * chore: add missing PlayerFantasyProfile removal to changelog - Added PlayerFantasyProfile to v1.11.3 Removed section - Endpoint was removed in commit 0b6a694 but not documented in changelog * fix: correct CareerHighs expected_data in PlayerProfileV2 (#536) - Added missing GAME_ID field to CareerHighs expected_data - Fixed field name from STATS_VALUE to STAT_VALUE (singular) - Updated CHANGELOG.MD with fix details and clarification Note: Investigation confirmed that CareerHighs correctly returns regular season career highs (not playoff highs). All game IDs have "002" prefix indicating regular season games. Closes #536 * fix: correct Golden State Warriors city name to San Francisco (#434) - Changed city from "Golden State" to "San Francisco" in static teams data - Updated both data.py and template.py - Team name remains "Golden State Warriors" (unchanged) - Updated data timestamp to Nov 13, 2025 Closes #434 * docs: add warning for TeamDashboardByGeneralSplits plus_minus bug (#448) - Added comprehensive class docstring documenting NBA API bug with plus_minus='Y' - Added runtime UserWarning when plus_minus='Y' is used - Documented that plus_minus='Y' returns incorrect differential/delta values - Provided example showing incorrect data (FGM=-0.3 instead of 39.3) - Recommended workaround: use plus_minus='N' (default) - Updated CHANGELOG.MD under "Changed" section Note: This is an NBA.com API bug, not an nba_api issue. The warning helps users avoid incorrect data by steering them away from the broken parameter. Closes #448 * refactor: rewrite PlayByPlayV3 parser with defensive coding pattern Refactored the PlayByPlayV3 parser to eliminate fragile dynamic key extraction and follow CLAUDE.md V3 parser best practices. Changes: - Replace dynamic key indexing with explicit field access - Use defensive .get() calls with defaults throughout - Define all 24 action fields explicitly in headers tuple - Handle edge cases (missing meta, empty actions, missing fields) Testing: - Added 11 comprehensive unit tests covering all edge cases - Created test fixtures for unit testing - Verified with real API calls (475 plays processed successfully) - All 448 unit tests pass Fixes #443 * fix: document and warn about game_id_nullable limitation in LeagueGameFinder (#446) The NBA Stats API ignores the game_id_nullable parameter and returns unfiltered results. This fix addresses the issue by: - Adding runtime UserWarning when game_id_nullable is used - Documenting the limitation in module docstring with workaround examples - Adding integration tests to verify API behavior - Adding unit tests to verify warning emission Users are now warned at runtime and directed to filter results client-side: df[df['GAME_ID'] == 'game_id_value'] Also documents date_from_nullable/date_to_nullable work correctly (#526). * chore: added isort to dev container. * feat: restore TeamGameLog/TeamGameLogs endpoints and enhance integration test validation Restore endpoints: - TeamGameLog and TeamGameLogs endpoints (retired in v1.11.0) are working again - Both endpoints fully functional with all parameters - Added comprehensive unit tests (6 for TeamGameLog, 6 for TeamGameLogs) - Added integration tests (4 test cases for TeamGameLog, 5 for TeamGameLogs) - Generated documentation files in docs/nba_api/stats/endpoints/ Enhanced integration test validation: - Added dataset structure validation to prevent false retirements - Validates dataset names match expected_data keys - Validates column structure for each dataset - Logs per-dataset row counts for better diagnostics - Opt-in validation via validate_structure flag (default: False) - Refactored validation logic to reduce code complexity The enhanced validation catches: - Missing datasets that should be present - Column mismatches in expected_data definitions - API response structure changes - Empty datasets when data is expected Root cause analysis: - Endpoints were incorrectly retired Nov 2, 2025 based on GitHub issue - Integration test framework was created Nov 5, 2025 (3 days later) - No automated validation existed at time of retirement - Enhanced validation prevents similar false retirements in the future Files changed: - src/nba_api/stats/endpoints/teamgamelog.py (restored) - src/nba_api/stats/endpoints/teamgamelogs.py (restored) - tests/unit/stats/endpoints/test_teamgamelog.py (12 unit tests) - tests/integration/data/teamgamelog.py (4 test cases) - tests/integration/data/teamgamelogs.py (5 test cases) - tests/integration/test_endpoints.py (enhanced validation logic) - tests/integration/data/README.md (documentation) - docs/ (endpoint documentation) Test results: - All 37 integration tests passing - All 460 unit tests passing - All flake8 checks passing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps requests from 2.31.0 to 2.32.0.
Release notes
Sourced from requests's releases.
... (truncated)
Changelog
Sourced from requests's changelog.
Commits
d6ebc4av2.32.09a40d12Avoid reloading root certificates to improve concurrent performance (#6667)0c030f7Merge pull request #6702 from nateprewitt/no_char_detection555b870Allow character detection dependencies to be optional in post-packaging stepsd6dded3Merge pull request #6700 from franekmagiera/update-redirect-to-invalid-uri-testbf24b7dUse an invalid URI that will not cause httpbin to throw 5002d5f547Pin 3.8 and 3.9 runners back to macos-13 (#6688)f1bb07dMerge pull request #6687 from psf/dependabot/github_actions/github/codeql-act...60047adBump github/codeql-action from 3.24.0 to 3.25.031ebb81Merge pull request #6682 from frenzymadness/pytest8You can trigger a rebase of this PR by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.