Skip to content

Latest commit

 

History

History
977 lines (768 loc) · 49.9 KB

File metadata and controls

977 lines (768 loc) · 49.9 KB

NBA API Change Log

About Versioning

Types of changes

  • Added (new features)
  • Changed (changes in existing functionality)
  • Deprecated (soon-to-be removed functionality)
  • Removed (removed functionality).
  • Fixed (bug fixes)
  • Security (vulnerabilities)
  • Contributor (notes on updates to the project)

Version History

Unreleased

Infrastructure

  • 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)

Refactored

  • Integration Test Layout - Reorganized integration tests into tests/integration/smoke/ and tests/integration/scenarios/, replacing the older top-level integration smoke/scenario modules (PR #640)
  • Scenario Data Layout - Moved scenario test data modules and documentation under tests/integration/scenarios/data/ and standardized the scenario runner/expectation schema (PR #640)
  • Endpoint Specs Migration - Replaced tests/integration/deferred_endpoints.py with tests/integration/helpers/endpoint_specs.py plus shared helper models/constants (PR #640)
  • EndpointSpec Auto-Parameters - Introduced EndpointSpec auto-parameter resolution (from canonical test defaults) to reduce manual endpoint test wiring and support per-endpoint skip / deprecated metadata (PR #640)
  • Unit Test Package Layout - Reorganized unit tests into package-based folders (tests/unit/http/, tests/unit/live/endpoints/, tests/unit/stats/library/, etc.) and added missing __init__.py modules for reliable imports (PR #643)

Added

  • VCR Smoke Coverage - Added broad VCR-backed integration smoke coverage with curated endpoint specs (~130 endpoints) and recorded cassettes under tests/integration/smoke/cassettes/ (PR #640)
  • VCR Scenario Coverage - Added VCR-backed scenario/regression coverage for LeagueDashTeamStats, LeagueGameFinder, PlayerDashPtShotDefend, ScoreboardV3, TeamDashLineups, TeamGameLog, and TeamGameLogs, plus common sanity checks (PR #640)
  • Integration Helper Utilities - Added shared integration helper utilities for response validation, dataset structure validation, row-count assertions, and endpoint instantiation checks (PR #640)
  • EndpointSpec Unit Tests - Added unit tests for integration EndpointSpec behavior (tests/unit/integration/helpers/test_endpoint_spec.py) (PR #640)
  • Integration Test Documentation - Added docstrings and integration test-data documentation for the new test layout and workflows (PR #640)
  • Legacy Debug Usage Tests - Added legacy debug-configuration unit coverage for stats/live HTTP request behavior, proxy/debug flags, and debug cache mode (tests/unit/http/test_legacy_debug_usage.py) (PR #645)
  • Parser/Normalization Regression Tests - Added dedicated regression coverage for DunkScoreLeaders and BoxScoreTraditionalV3 (tests/unit/stats/endpoints/test_dunkscoreleaders_parser.py, tests/unit/stats/endpoints/test_boxscoretraditionalv3_normalized.py) (PR #598, PR #606)

Fixed

  • Pytest reason= API - Updated pytest skip / fail calls to use the current reason= API in the refactored integration tests (PR #640)
  • PlayByPlayRegex Integration Collection - Temporarily skipped tests/integration/test_stats_library_playbyplayregex.py at module import time (with TODO) because PlayByPlayV3 normalization is not yet wired up, preventing fixture failures during collection (PR #640)
  • 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)
  • 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)

v1.11.4

Date: 2026-02-20

Added

  • GravityLeaders - New endpoint added (PR #626)
  • __version__ attribute - Package now exposes a __version__ attribute using importlib.metadata with pyproject.toml as the single source of truth (PR #612)

Fixed

  • HTTP Headers - Updated request headers to fix broken NBA.com API requests caused by an outdated user agent (PR #636)
  • ContextMeasureSimple - Removed deprecated PF (Personal Fouls) parameter; NBA.com API no longer returns data for this context measure on the shotchartdetail endpoint (PR #608, fixes #600)

Deprecated

  • PlayByPlayV2 - Added deprecation warning; NBA.com API returns empty JSON for this endpoint. Use PlayByPlayV3 instead (PR #613, fixes #591)
  • ScoreboardV2 - Added deprecation warning; returns empty line scores for 2025-26 season games. Use ScoreboardV3 instead, which is 100% backward compatible (PR #609, fixes #596)

Contributor

  • Added type hints and docstrings to the Endpoint base class and PlayerCareerStats endpoint for improved code clarity and IDE support (PR #628)
  • Added CODEOWNERS file (PR #627)
  • Corrected typos in contributing guide and README (PR #604)

v1.11.3

Date: 2025-11-13

Removed

  • BoxScorePlayerTrackV2 - Endpoint removed due to NBA API returning HTTP 500 errors

    • The NBA.com API no longer supports this endpoint
    • Users should migrate to BoxScorePlayerTrackV3 instead
    • Removed endpoint class, documentation, tests, and all references
  • PlayerFantasyProfile - Endpoint removed due to NBA API discontinuation

    • The NBA.com API no longer supports this endpoint
    • No direct replacement available
    • Removed endpoint class, documentation, tests, and all references

Added

  • TeamGameLog - Endpoint restored after confirming NBA API is working again

    • Retired in v1.11.0 due to reported NBA API deprecation, but now confirmed to be operational
    • Returns game-by-game statistics for a specific team
    • Required parameter: team_id
    • Optional filtering: season, season type, date range
    • Comprehensive unit tests (6 tests) and integration tests (4 tests) added
  • TeamGameLogs - Endpoint restored after confirming NBA API is working again

    • Retired in v1.11.0 due to reported NBA API deprecation, but now confirmed to be operational
    • Returns game-by-game statistics for one or more teams
    • All parameters optional (can query all teams)
    • Includes rank fields for all statistics (_RANK suffix)
    • Advanced filtering: location, outcome, conference, division, measure type
    • Comprehensive unit tests (8 tests) and integration tests (5 tests) added
  • Integration Test Validation Infrastructure - Enhanced validation to prevent false endpoint retirements

    • Root Cause: TeamGameLog/TeamGameLogs were incorrectly retired in v1.11.0 because integration test framework didn't exist yet (created 3 days later)
    • New Validation Features:
      • validate_dataset_structure() - Validates dataset names and column structure match expected_data definitions
      • Per-dataset row count validation and logging (instead of just total rows)
      • Opt-in strict validation mode via validate_structure: True flag (default: False to preserve compatibility)
      • Helper functions to reduce code complexity: _count_dataset_rows(), _validate_status(), _validate_row_counts()
    • Benefits:
      • Catches API response structure changes early
      • Detects expected_data definition errors
      • Prevents false endpoint retirements
      • Provides detailed per-dataset diagnostics
    • Documentation: Comprehensive guide in tests/integration/data/README.md with examples and best practices
    • Test Results: All 37 integration tests passing, all 460 unit tests passing

Fixed

  • LeagueIDNullable Parameter - Fixed default value to prevent empty responses (#562)

    • Root Cause: LeagueIDNullable.default was inheriting "" (empty string) from _NotRequired instead of "00" (NBA) from LeagueID
    • NBA API Change: Starting around the 2023-24 season (IST introduction), the NBA.com API became stricter and now requires an explicit LeagueID value rather than accepting empty strings
    • Impact: Endpoints using LeagueIDNullable (e.g., PlayerProfileV2, CommonTeamRoster) returned empty datasets when called without explicitly specifying league_id_nullable
    • Fix: Override LeagueIDNullable.default to explicitly use LeagueID.nba ("00")
    • Affected Endpoints: All endpoints with league_id_nullable parameter now default to NBA league instead of empty string
    • Possible Breaking Change: This fixes broken behavior but changes the API semantics - empty LeagueID is no longer sent to NBA.com (which was causing failures)
  • LeagueGameFinder - Documented and added warning for game_id_nullable parameter limitation (#446)

    • NBA API Limitation: The game_id_nullable parameter is ignored by the NBA Stats API and does not filter results
    • Impact: Users passing game_id_nullable receive all games matching other criteria instead of the specific game requested
    • Fix: Added runtime UserWarning when game_id_nullable is used, informing users of the limitation and providing workaround
    • Workaround: Filter results client-side using pandas: df[df['GAME_ID'] == 'game_id_value']
    • Documentation: Added comprehensive module docstring with examples and workaround
    • Testing: Added integration tests documenting API behavior and unit tests verifying warning emission
    • Note: Using season_nullable parameter helps reduce result set size before client-side filtering
  • CommonAllPlayers - Added missing PLAYER_SLUG and TEAM_SLUG fields to expected_data (#550)

    • These fields are returned by the NBA API but were missing from the expected_data definition
    • Note: The endpoint still does not include POSITION field (NBA API limitation). Users needing position data should use CommonPlayerInfo or CommonTeamRoster endpoints instead
  • PlayerProfileV2 CareerHighs - Fixed expected_data to match actual API response (#536)

    • Added missing GAME_ID field
    • Fixed field name from STATS_VALUE to STAT_VALUE (singular)
    • Note: The CareerHighs dataset correctly returns regular season career highs (not playoff highs as originally reported). All game IDs have "002" prefix indicating regular season games
  • Static Teams Data - Corrected Golden State Warriors city name (#434)

    • Changed city name from "Golden State" to "San Francisco"
    • Updated in both data.py and template.py
    • The team name remains "Golden State Warriors" (unchanged)

Refactored

  • PlayByPlayV3 Parser - Refactored parser to use defensive coding pattern and explicit field access (#443)
    • Root Cause: Parser used fragile dynamic key extraction (self.nba_dict[list(self.nba_dict.keys())[1]]) that relied on dictionary key order
    • Impact: Parser could crash if NBA API response structure changed (added/reordered fields, missing meta field, empty actions list)
    • Fix: Rewrote parser following CLAUDE.md V3 parser best practices:
      • Explicit field access using self.game = nba_dict.get("game", {}) instead of dynamic key indexing
      • All 24 action fields explicitly defined in headers tuple (no dynamic extraction)
      • Defensive .get() calls with defaults instead of direct dictionary access
      • Handles edge cases: missing meta field, empty actions list, missing optional fields
    • Added: Comprehensive unit tests with 11 test cases covering all edge cases
    • Added: Test fixtures (tests/unit/stats/endpoints/data/playbyplayv3.py) for unit testing
    • Added: Real API response documentation (docs/nba_api/stats/endpoints/responses/playbyplayv3.json)
    • Result: Parser is now resilient to API structure changes and follows project coding standards

Changed

  • TeamDashboardByGeneralSplits - Added warning and documentation for NBA API bug with plus_minus='Y' parameter (#448)
    • NBA API Bug (not nba_api): When plus_minus='Y', the NBA API returns incorrect differential/delta values instead of actual statistics
    • Example: FGM shows -0.3 instead of 39.3, PTS shows +/- value instead of actual points
    • Solution: Always use plus_minus='N' (default). The PLUS_MINUS column is still included and contains correct values
    • Added runtime warning when plus_minus='Y' is used
    • Added comprehensive documentation in class docstring with examples

v1.11.2

Date: 2025-11-12

Fixed

  • Parser Dataset Order - Fixed critical bug where 9 parsers returned datasets in wrong order (#589)
    • BoxScoreAdvancedV3 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScoreDefensiveV2 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScoreFourFactorsV3 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScoreHustleV2 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScoreMiscV3 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScorePlayerTrackV3 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScoreScoringV3 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • BoxScoreTraditionalV3 - Reordered datasets: now returns PlayerStats, TeamStarterBenchStats, TeamStats (matching expected_data)
    • BoxScoreUsageV3 - Swapped dataset order: now returns PlayerStats first, TeamStats second
    • Impact: get_data_frames()[0] previously returned TeamStats (7 columns) instead of expected PlayerStats (29+ columns)
    • Root Cause: Parsers created in v1.11.0 had dataset order mismatched with endpoint's expected_data definition
  • Asian Naming Convention - Fixed improper name parsing for Asian players in static data
    • Ha Seung-jin (Korean: 하승진) - Now properly split: last_name="Ha", first_name="Seung-jin"
    • Sun Yue (Chinese: 孙悦) - Now properly split: last_name="Sun", first_name="Yue"
    • Yao Ming (Chinese: 姚明) - Now properly split: last_name="Yao", first_name="Ming"
    • Yi Jianlian (Chinese: 易建联) - Now properly split: last_name="Yi", first_name="Jianlian"
    • Zhou Qi (Chinese: 周琦) - Now properly split: last_name="Zhou", first_name="Qi"
    • Impact: Enables proper name-based matching and searching, respects Asian naming conventions (family name first)
    • Root Cause: NBA API provides inconsistent data; generation script now uses player_adjustments to correct name splits
  • Static Data Generation - Fixed bug where player_adjustments overwrote is_active status from NBA API
    • Now preserves active/inactive status when applying name corrections
    • Previous behavior: Adjustments included hardcoded is_active=False, losing actual player status

Changed

  • Documentation - Updated README.md example to use named attributes instead of array indices
    • Replaced career.get_data_frames()[0] with career.season_totals_regular_season.get_data_frame()
    • Encourages version-safe approach: use endpoint.dataset_name.get_data_frame() instead of get_data_frames()[index]
  • BoxScoreDefensiveV2 - Added module docstring with usage recommendations and named attribute examples

Added

  • Regression Test - Added test_dataset_order_matches_expected_data() to BoxScoreDefensiveV2 parser tests
    • Validates parser dataset order matches endpoint's expected_data definition
    • Prevents future regressions of dataset ordering bugs

v1.11.1

Date: 2025-11-12

Fixed

  • BoxScoreTraditionalV3 Parser - Complete rewrite to fix critical bugs
    • Fixed AttributeError: Renamed get_players_headers() to correct method name get_player_headers()
    • Fixed TypeError: Corrected tuple concatenation in get_start_bench_headers()
    • Fixed ValueError: Replaced incorrect advanced stats fields (31 columns) with traditional stats fields (26 columns)
    • Added comprehensive unit tests with Python fixture pattern

Added

  • Parser Test Coverage - Comprehensive unit tests for 5 previously untested V3 parsers (100% parser coverage)
    • BoxScoreMatchupsV3 parser tests (9 tests) - Validates nested matchup structure with offensive/defensive player metrics
    • PlayByPlayV3 parser tests (10 tests) - Validates play-by-play actions and video availability
    • ISTStandings parser tests (11 tests) - Validates IST tournament standings with flattened game columns
    • BoxScoreHustleV2 parser tests (11 tests) - Validates hustle statistics (contested shots, deflections, charges, box outs)
    • ScheduleLeagueV2 parser tests (18 tests) - Validates complex nested game schedule structure

Changed

  • Static Player Data - Updated player and team data to latest roster information
  • Script Organization - Reorganized static data generation scripts
    • Moved tools/stats/static_players_update/scripts/static_players_update/
    • Renamed update.pygenerate_static_data_file.py
    • Removed redundant scripts/create_static_data_file.py

v1.11.0

Date: 2025-11-11

Added

  • New Endpoints

    • BoxScoreSummaryV3 - Comprehensive game summary data including game info, arena details, officials, line scores, inactive players, and historical matchups (7fefb00)
    • DunkScoreLeaders - Advanced dunk tracking with 55 metrics including hang time, vertical leap, takeoff distance, biomechanics, and style indicators (2e2fb8b)
    • ScoreboardV3 - Enhanced scoreboard with 10+ datasets including game info, line scores, series standings, and team leaders (35e1358)
  • Testing Infrastructure

    • Integration test framework for validating endpoint scenarios with detailed logging (1dec848)
    • Comprehensive unit tests for TeamDashLineups endpoint (96% coverage) (cfb971d)
    • Python fixture pattern for V3 endpoints replacing JSON files (cfb971d)

Changed

  • Parser Architecture

    • Refactored V3 parsers to dedicated _parsers module with comprehensive test coverage (8304148)
    • Moved parser registry to _parsers module for better organization (283e818)
  • Build System

    • Added pylint for comprehensive code quality checks (aed2f96)
    • Updated flake8 max-line-length to 88 characters (2f1d916)
    • Added Makefile and configured code formatters (isort, black) (e12240c)
    • Modernized DevContainer configuration (6a344ac)
  • Documentation

    • Added REFACTORING.md to track technical debt and future improvements (5121e7f)
    • Updated integration test documentation with validation format examples (4de365f)

Deprecated

  • Python 3.9 Support - Python 3.9 is now deprecated and will be removed in a future release (89b2443)
  • BoxScoreTraditionalV2 - Added deprecation warning (bfe29b5)

Removed

  • TeamGameLog and TeamGameLogs Endpoints - Deprecated by the NBA with no replacement available (ecb6ae2, eb83420)

Fixed

  • Handle empty weeks array in ScheduleLeagueV2 parser for older seasons (f56521a)
  • Add missing boxscoresummaryv3 Python fixture for unit tests (707fa09)
  • Added warning for BoxScoreSummaryV2 regarding data availability after 4/10/2025 with recommendation to use BoxScoreSummaryV3 (5859506)

v1.10.2

Date: 2025-09-30

Fixed

  • NBA Stats API Connection Issues - Updated HTTP headers to resolve connection timeouts
    • Updated User-Agent to modern Chrome 140 version to match current browser fingerprints
    • Added the following headers:
      • Sec-Ch-Ua: allows servers to determine whether to service a request based on whether it is appropriate for how it is expected to be used.
      • Sec-Ch-Ua-Mobile: indicates whether the browser is on a mobile device.
      • Sec-Fetch-Dest: allows servers to determine whether to service a request based on whether it is appropriate for how it is expected to be used.
    • Dropped the x-nba-stats-origin and x-nba-stats-token headers as no longer used.

Changed

  • Updated Static Player & Team Data

v1.10.1

Date: 2025-01-11

Fixed

  • Handle missing WinProbability data in ScoreboardV2 endpoint (#560)
  • Add missing PlayIn season type to parameters (#544)
  • Add missing GITHUB_TOKEN environment variable (#546)

Changed

  • Build System
    • Add automated release workflow with semantic-release (#542)
    • Add local release preparation script and workflow (#566)
    • Configure dependabot for conventional commits

Security

  • Bump urllib3 from 2.2.3 to 2.5.0 (#547)
  • Bump requests from 2.32.3 to 2.32.4 (#541)

v1.10.0

Date: 2025-06-02

Added

  • Add ScheduleLeagueV2 endpoint to package exports

Changed

  • Update WNBA team count to 13 teams (Golden State Valkyries)
  • Update WNBA player and team data for 2025 season

v1.9.0

Added

  • #538
    • Added information for the new Golden State Valkyries WNBA team.
    • Updated WNBA player data to include 2025 rookies.
    • Updated test_static_data.py to check 13 total WNBA teams.
    • New York Liberty team information now includes 2024 championship year.

v1.9.0

Added

  • New endpoint for retrieving live betting odds by @mohithn04 in #514

Changed

  • Updated Static Player Data by @rsforbes

Fixed

  • Numpy failure when using Google Colab

Contributor

  • Updated CONTRIBUTING.md adding poetry env activate for poetry 2.0

v1.8.0

Added

  • Support for Python 3.13
  • Two New Endpoints (scheduleleaguev2 & scheduleleaguev2int) by @sreyemnayr in #499

Changed

  • Updated Static Player Data by @rsforbes

v1.7.0

Added

  • Support for User Defined Session to API calls by @8W9aG in #486
  • Accent Neutral Search for Static Player Data by @mxufc29 in #488

Changed

  • Updated CI build by @rsforbes in #496
  • Updated Static Player Data. by @rsforbes in #495

Fixed

  • Updated PlayByPlay Regex File by @rsforbes in #494

v1.6.1

Date: 2024.10.29

Fixed

  • Resolved Issue #476 related to certifi lib

v1.6.0

Date: 2024.10.10

Changed

  • Updated .settings.json to recognize pytest tests
  • Reformatted src/nba_api/stats/library/data.py for compliance with Flake8 rules
  • Updated Static Player File

Deprecated

  • BoxScoreSimilarityScore (Person1Season & Person2Season no longer support valid values).
  • Scoreboard
  • Removed support for Python 3.8

Fixed

  • Fixed test for ShotChartLineupDetail.
  • Fixed Bug #464 affecting Scoreboard & ScoreboardV2 endpoints

Security

  • Upgraded requests to ^2.32.3
  • Upgraded certifi to ^2023.7.22 (CVE-2023-37920)
  • Upgraded idna ^3.7.0 (CVE-2024-3651)

v1.5.2

Date: 2024.08.28

Fixed

  • Fixed static data.py file where wnba_teams was missing.

v1.5.1

Date: 2024.08.27

Fixed

  • Fix BoxScoreTraditionalV3 API Bug(some game stats starters and bench is None, cause 'NoneType' object has no attribute 'values') by @XatMassacrE in #458

Changed

  • Bump idna from 3.4 to 3.7 by @dependabot in #438
  • Bump requests from 2.31.0 to 2.32.0 by @dependabot in #443
  • Bump certifi from 2023.7.22 to 2024.7.4 by @dependabot in #454
  • updated static players file by @rsforbes in #460

Security

  • updated requests to use version ^2.32.2 by @rsforbes in #459

Full Changelog: https://github.com/swar/nba_api/compare/v1.5.0...v1.5.1

v1.5.0

Added

  • Add WNBA static data. by @cosmicac in #444

Changed

  • All NBA player and team static data current as of 2023.11.09 #398

Fixed

  • Update ScoreBoard game_date property name to score_board_date by @brooklynbagel in #422
  • Update README.md (fixed Slack links) by @rsforbes in #424
  • Update GameIDs Pattern Documentation by @TylerChasse in #437
  • Updated docs with example output data by @shufinskiy in #447

v1.4.1

Changed

  • Update documentation by @shufinskiy in #406

Fixed

  • boxscoremathups swapped places Def and Off columns names by @shufinskiy in #409

v1.4.0

Added

  • In-Season Tournament StandingsISTStandings. @shufinskiy #396
  • EventMsgType now contains INSTANT_REPLAY (18). @usharerose #384

Changed

  • All NBA player and team static data current as of 2023.11.09 #398

Deprecated

  • EventMsgType UNKNOWN (18) has been deprecated and will be removed in a future release. #400

Fixed

Security

Developer Notes

  • Black has been implemented project wide and will be required for all PRs. #399
  • DevContainer Changes #402
    • The VSCode DevContainer was updated to pin Debian-11 due to changes in Debian 12 that have impacted Python development.
    • Poetry Shell now includes reference to the project.
    • the ms-python.flake and ms-python.vscode-pylance extensions are now included

v1.3.1

Date: 2023.10.07

Security

v1.3.0

Date: 2023-10-04

Added

Endpoints

Eleven new endpoints were added to this release. A massive thank you to @shufinskiy.

Changed

NBA JSON schema

Until recently, the NBA JSON schema followed a tabular strucutre exposing headers and resultSet. The NBA is now using a nested JSON schema. In addition, the data labels are no longer uppercase (e.g., PCT_OREB), are now camelcase and, in many cases, more descriptive (e.g., percentageReboundsOffensive).

Other

  • All NBA player and team data has been updated to the date of this release.
  • Corrected an invalid Slack within the text body to match the link present in the Slack shield.
  • Updated NBA team data to include the Nuggets 2023 championship (#350)

Known Issues

Due to the change in the NBA schema, the following methods will currently return and empty dataframe {}

  • .get_normalized_dict()
  • .get_normalized_json()
  • .get_headers_from_data_sets() All other calls are expected to work as expected.

Removed

The following eleven endpoints have been deprecated by the NBA and subsequently removed from the library

  • BoxScoreDefensive --> BoxScoreDefensivev2
  • BoxScoreMatchups --> BoxScoreMatchupsv3
  • LeagueHustleStatsPlayerLeaders --> unknown
  • LeagueHustleStatsTeamLeaders --> unknown
  • PlayerDashboardByOpponent --> unknown
  • TeamDashboardByClutch --> unknown
  • TeamDashboardByGameSplits --> unknown
  • TeamDashboardByLastNGames --> unknown
  • TeamDashboardByOpponent --> unknown
  • TeamDashboardByTeamPerformance --> unknown
  • TeamDashboardByYearOverYear --> unknown

Security

  • urllib3 from 1.26.15 to 1.26.17. (#373) - @dependabot
  • certifi from 2022.12.7 to 2023.7.22 (#360) - @dependabot

Developer Tools

Updated dev container to dynamically set the python path for Poetry. (#369)

v1.2.1

Date: 2023-06-13

Security

  • requests bumped from 2.28.2 to 2.31.0 via #344 - @dependabot

Fixed

  • Reverted alexfayad@5076fae050ec7d655af300cde7674756c4381943. Change broke materialized url and test. Original URL was found to be valid.
  • Resolved bad url in documentation #322 - @alexfayad
  • Fixed typo in causing src/nba_api/stats/endpoints/playerindex.py to fail #340 - @shufinskiy
  • Fixed expired Slack URL #347

Developer Tools

  • Support for VS Code Dev Containers (including auto-format via black)

v1.2.0

Date: 2023-03-23

Added

Changed

  • Removed Python max version release dependency to allow for all go-forward versions. Bugs with later Python versions can be addressed as needed. #331

Fixed

  • Documentation: corrected parameter order on commonteamroster.md PR#317 - @JohannPally
  • Corrected Hawks home state from Atlanta to Georgia #332
  • Bug #327: Corrected a missing comma in src/nba_api/stats/endpoints/__init__.py #333

Developer Tools

  • Resolved CircleCI build where Poetry and CircleCI Docker images conflicted in how output is managed. #331

v1.1.14

Date: 2022-11-16

Fixed

  • Fixed a team turnover regular expression when working with PlayByPlay data.
  • Endpoints

Added

  • Poetry: Python dependency management and packaging made easy
  • Updated CONTRIBUTING.md on how to Contribute Code Using Poetry
  • Snyk for Security Scanning
  • Exclusion to .gitignore for .dccache files created by Snyk CLI
  • Introduced .flake8, resolve a number of style guide issues, added exclusions with future TODOs

Changed

  • Minimum Version for NumPy has been set to v1.22.22 due to a security vulnerability in NumPy v1.21.6

Removed

  • Support for Python 3.7 due to a security vulnerability in NumPy v1.21.6

Security

v1.1.13

Date: 2022-10-16

Fixed

Fix team_index_championship_year #286

  • add championship years to data-updater template
  • re-add team_index_championship_year to static data
  • add Bucks 2021 championship and GSW 2022

v1.1.12

Date: 2022-10-11

Added

Changed

Removed

  • Support for Python 3.4, 3.5, and 3.6
  • Setup.py file in favor of pyproject.toml (PEP 621)

Fixed

  • Issue #249: ./nba_api/stats/endpoints/_base.py requires numpy to format data for get_data_frame. numpy was not in the list of requirements, but is required.
  • Issue #278: Fixed playbyplayregex, and included updated unit tests, where
    • The NBA removed a space that represented distance when distance was not included in the made/missed shot.
    • Jump Ball contained a single space in the description (regex now also supports multiple spaces empty description).
    • Team fouls no longer included Player/Referee, just the Team Name & Foul.

v1.1.11

Date: 2021-11-8

  • Merge pull request #231 from swar/live

v1.1.10

Date: 2021.10-31

  • Merge pull request #212 from baronet2/master
  • Merge pull request #219 from edlavairee/find-teams-by-championship-year
  • Merge pull request #226 from mjstamper/master
  • Merge pull request #184 from rsforbes/live
  • updated latest data.py from master
  • changed prev_season to previous_season
  • Merge pull request #1 from mjstamper/prev_season_add
  • Added previous season to the Season parameter
  • Merge pull request #225 from swar/static-data-update
  • Added new feauture: User can now find the team who won a championship title for a given year.
  • Added level names for MultiIndex columns of DataSet
  • Add handling of multiple level column names in DataSets
  • rolling back notebook changes
  • removed .vscode/launch.json
  • Updated Live Data Notebook
  • undoing fix
  • fixed references in tests for 3.4
  • finilized testing and documentation for BoxScore
  • Updated test for 3.4 & 3.5 backwards compatability
  • Added AlwaysPresent to playbyplay.md
  • Updated info on playbyplay.md
  • major updates for live data (playbyplay, boxscore, and scoreboard)
  • Merge pull request #7 from rsforbes/player_data_file
  • Updated data.py with current player data
  • Merge pull request #187 from rsforbes/playbyplay
  • Merge pull request #188 from rsforbes/version_update
  • Merge pull request #192 from rsforbes/gitignore_upd
  • removed .vscode as it's in .gitignore and should have been checked in
  • Adding Python 3.8 & 3.9 to the build
  • further separated stats from live by moving over _base.py and having live endpoints reference that
  • added fully working examples of live data in docs/examples/PlayByPlay_Live.ipynb
  • reverting nba_api/status/library/http.py to original
  • updated live/endpoits/init.py to include new endpoints.
  • updating live files for further review
  • Fixed two issues. First, was not handling multiple in timeout_type. Second, new team violation type has been added by NBA.
  • Live Data
  • missed library for http.py
  • adding in a new 'live' endpoint on s3 with libraries around playbyplay data. This will allow resutls during a live game

v1.1.9

Date: 2020-01-27

  • Updating table of content
  • Adding test for LeagueDashOppPtShot
  • Reverting more changes
  • Changing to quotes
  • Mistakenly pushed
  • Merge pull request #152 from justinbt21/patch-1
  • Adding 21 new endpoints with minor fixes to accommodate
  • Removing TeamGameStreakFinder from tests
  • Adding HustleStatsBoxScore endpoint
  • Fixing link to requests
  • Updates after re-run of analysis
  • Updating documentation for analysis tool
  • Printing proxy on DEBUG
  • Upgrading endpoint analyzer
  • Update init.py with LeagueDashOppPtShot
  • Adding Questions and Help section

v1.1.8

Date: 2020-01-27

  • Forgot to remove debug code... this is why you don't program when you should be sleeping

v1.1.7

  • Forgot to add new endpoint on second section of init

v1.1.6

  • Updated Analysis
  • Updated Endpoints and Parameter py files and docs
  • Added Parameter Overriding
  • Added new endpoint: TeamGameLogs
  • Updating Static Player Data
  • Updating error values
  • Updating headers
  • Adding proxy list support for randomization
  • Merge pull request #115 from Mathiasme/patch-1
  • typo

v1.1.5

Date: 2019-11-09

  • Adding new test: PlayerGameLogs
  • Conforming to PEP8
  • Conforming to PEP8
  • Adding PlayerGameLogs to import
  • Adding PlayerGameLogs
  • Merge pull request #89 from rsforbes/master
  • Updating static data
  • Updating analysis.json
  • Updating stats endpoint documentation
  • Updating stats endpoints
  • Updating parameters.md
  • Adding new parameter mapping: MeasureTypePlayerGameLogs
  • Adding new mappings for OppTeamID and MeasureType
  • Adding new endpoints: PlayerGameLogs
  • Changing is to == operator
  • Updating Development Version
  • Adding updated default headers
  • Adding debug folder to gitignore
  • Fixed bug where referee not included in playbyplay violation
  • Fixed bug where referee did not appear in foul.
  • Fixed the issue with Mark Morris in playbyplay using new variable
  • simplified all playbyplay regex with the exception of pattern_turnover_player
  • Fixed a but in playbyplay regex where Timeout now has 'Reg.' for Full Timeouts
  • Merge pull request #82 from davidbobyang/master
  • Fixed description in stats/library/http.md

v1.1.4

Date: 2019-04-28

  • Adding create static data file script
  • Merge pull request #70 from rsforbes/master
  • Merge pull request #67 from TK05/development/static-files-tools
  • updated play by play tests, test data, and added new integration test to validate previous days play by play data.
  • Update static players list
  • Refactored tool to use existing endpoint

v1.1.3

Date: 2019-04-21

  • Merge remote-tracking branch 'origin/master'
  • Removing tools folder from PyPi build
  • Merge pull request #66 from TK05/development/active-players
  • Merge pull request #65 from TK05/hotfix/py-generator
  • Merge pull request #64 from rsforbes/master
  • New tool to update static data
  • Updated data doc with new feature
  • Fixed typo
  • Updated docs with new player features
  • Added active status to static players list
  • Fixed bug in py file generator
  • Added PlayByPlay Ejection Regex. Moved test data out of test_playbyplayregex to conftest.py. Added additional regex unit tests. Moved tests into PlayByPlay folder
  • Merge pull request #62 from TK05/master
  • Cleaned up unnecessary leftovers

v1.1.2

Date: v1.1.2

  • Updating parameter mapping
  • Updating deferred endpoint test list
  • Updating stats endpoints
  • Updating parameters documentation
  • Updating endpoint documentation
  • Updating analysis.json
  • Merge branch 'TK05-develop/synergy' Merging with master
  • Merge branch 'develop/synergy' of https://github.com/TK05/nba_api into TK05-develop/synergy Merging TK05-develop/synergy new endpoint
  • Merge pull request #59 from rsforbes/master
  • Added known parameters for SynergyPlayTypes endpoint
  • Updated docs for SynergyPlayTypes endpoint
  • Updated analysis.json with SynergyPlayTypes endpoint
  • Added SynergyPlayTypes to tests
  • Added SynergyPlayTypes endpoint with needed parameters
  • Added endpoint and mappings for synergyplaytypes
  • Removed errant import statment in test_playbyplayregex. Renamed TestPlayByPlay to TestPlayByPlayRegex.
  • renamed EventMsgType.FREE_THROW_ATTEMPT to FREE_THROW
  • Added ^ to regex beginning of pattern_free_throw. Included new eventmsgtype Enum
  • Adding Tests to CircleCI
  • Added support for VS Code w/ .gitignore update
  • cleaned up playbyplay regex and added tests
  • cleaned up playbyplay regex and added tests
  • cleaned up playbyplayregex and included tests
  • Merge branch 'master' of https://github.com/swar/nba_api
  • Merge pull request #5 from rsforbes/dev
  • Updated playbyplay_regex
  • Merge pull request #55 from eswan18/pytest2
  • Switch random wait generator from numpy to random
  • Update readme to explain running tests
  • Break endpoint tests into multiple files.
  • Convert EndpointTester to class.
  • Finish reorg of test_endpoints; make it work.
  • Reorganized test_endpoints more.
  • Update test_endpoints to be neater.

v1.1.1

Date: 2019-04-07

  • Reverting headers
  • Updating README

v1.1.0

Date: 2018-12-11

  • Updating basic examples to show support for individual proxy, header, and timeout settings
  • Updating endpoints with new analysis and template
  • Updating documentation with new analysis
  • Adding another missing required parameter
  • Updating tests
  • Updating analysis.json
  • Adding more missing required parameters
  • Updating headers
  • Sorting parameters
  • Sorting parameters
  • Updating nullable parameter matches
  • Updating parameter documentation
  • Updating analysis.json
  • Updating get_parameters method to return null on invalid json
  • Updating with individual proxy, header, timeout, and url generation support
  • Adding newly identified parameters
  • Adding endpoints and new mappings
  • Adding base changes for proxies, headers, timeouts, and url generation
  • Updating with exceptions when missing any mappings
  • Updating for endpoint changes and more nullable parameter tests
  • Merge pull request #52 from rsforbes/master
  • Merge pull request #4 from rsforbes/dev
  • updated playbyplay_regex with .format() for backwards compatability
  • Merge pull request #51 from rsforbes/master
  • Merge pull request #3 from rsforbes/dev
  • Revert "Added playbyplay data"
  • including playbyplay_regex for playbyplay & playbyplayv2 VISITORDECRIPTION & HOMEDESCRIPTION fields
  • Merge pull request #2 from rsforbes/dev
  • Added playbyplay data
  • Merge pull request #46 from eswan18/readme-dev-instr
  • Update readme; add development instructions.
  • Updating version log
  • Updating development version
  • Merge pull request #45 from eswan18/tabcomplete-endpoints
  • Merge pull request #44 from rsforbes/master
  • Make tab-complete work on nba_api.stats.endpoints.
  • Cleaned up PlayByPlay book fixing Regex as well as fixed a bug in getting Home & Visitor Descriptions
  • Merge pull request #39 from rsforbes/master
  • Added Jupyter Play by Play Notebook
  • Merge pull request #29 from Hoax5547/master
  • Update teams.md
  • Merge pull request #28 from Hoax5547/master
  • Fixed description in teams.md
  • Another minor formatting change for #19
  • Updating Endpoint Documentation Generator with minor formatting changes for #19

v1.0.7

Date: 2018-12-11

  • Updating tests and DefenseHub doc
  • Updating Endpoint Documentation Generator for #19
  • Updating endpoints with new parameters from 2018-12-11 analysis json
  • Updating documentation for #19
  • Updating analysis archive to 2018-12-11
  • Removing unnecessary doc
  • Merge pull request #22 from eswan18/master
  • moved examples link in readme to the Usage Examples heading
  • moved examples to docs folder and updated readme
  • slight cleanup of example notebooks
  • adding examples folder

v1.0.6 commit

Date: 2018-10-11

Fixed

  • Disabled DEBUG Mode that was enabled by default in v1.0.5

v1.0.5 commit

Date: 2018-10-10

  • Adding LeagueDashPtStats to tests and init
  • Updating version log
  • Switching default values
  • Adding LeagueDashPtStats Endpoint
  • Changing last_validated to last_validated_date
  • Adding last validated date to analysis JSON
  • Adding build badge, minor edits to badges
  • Merge pull request #9 from cclauss/patch-1
  • Typo
  • Merge pull request #8 from cclauss/patch-1
  • Drop legacy Python
  • CircleCI: Add some automated testing

v1.0.4

Date: 2018-09-25

- Updating README urls

v1.0.3

Date: 2018-09-25

  • Updating stats examples
  • README changes and removing index.md

v1.0.2

Date: 2018-09-17

  • Updating with PyCharm and Debug Files
  • Escaping vertical bar character from endpoint documentation

v1.0.1

Date: 2018-09-17

v1.0.0

Date: 2018-09-16

  • Initial commit