- The NBA API uses Semantic Versioning 2.0.0
- Dates are ISO 8601 compliant and formatted as
YYYY-MM-DD
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)
- Ruff Tooling - Replaced
flake8,isort, andpylintwithrufffor linting and formatting; addedpre-commithooks to auto-fix on commit (PR #639) - Pytest Recording Stack - Added
pytest-recording(andvcrpy) to dev dependencies; introduced pytest markers for integration test modes (live,vcr,canary,deprecated_endpoint) (PR #640) - Integration Conftest - Added
tests/integration/conftest.pywith 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
GameDateparams so cassette playback remains stable in CI (PR #644)
- Integration Test Layout - Reorganized integration tests into
tests/integration/smoke/andtests/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.pywithtests/integration/helpers/endpoint_specs.pyplus shared helper models/constants (PR #640) - EndpointSpec Auto-Parameters - Introduced
EndpointSpecauto-parameter resolution (from canonical test defaults) to reduce manual endpoint test wiring and support per-endpointskip/deprecatedmetadata (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__.pymodules for reliable imports (PR #643)
- 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, andTeamGameLogs, 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
EndpointSpecbehavior (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
DunkScoreLeadersandBoxScoreTraditionalV3(tests/unit/stats/endpoints/test_dunkscoreleaders_parser.py,tests/unit/stats/endpoints/test_boxscoretraditionalv3_normalized.py) (PR #598, PR #606)
- Pytest
reason=API - Updated pytestskip/failcalls to use the currentreason=API in the refactored integration tests (PR #640) - PlayByPlayRegex Integration Collection - Temporarily skipped
tests/integration/test_stats_library_playbyplayregex.pyat 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)
Date: 2026-02-20
- GravityLeaders - New endpoint added (PR #626)
__version__attribute - Package now exposes a__version__attribute usingimportlib.metadatawithpyproject.tomlas the single source of truth (PR #612)
- 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 theshotchartdetailendpoint (PR #608, fixes #600)
- 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)
- Added type hints and docstrings to the
Endpointbase class andPlayerCareerStatsendpoint for improved code clarity and IDE support (PR #628) - Added
CODEOWNERSfile (PR #627) - Corrected typos in contributing guide and README (PR #604)
Date: 2025-11-13
-
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
-
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 matchexpected_datadefinitions- Per-dataset row count validation and logging (instead of just total rows)
- Opt-in strict validation mode via
validate_structure: Trueflag (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_datadefinition errors - Prevents false endpoint retirements
- Provides detailed per-dataset diagnostics
- Documentation: Comprehensive guide in
tests/integration/data/README.mdwith examples and best practices - Test Results: All 37 integration tests passing, all 460 unit tests passing
-
LeagueIDNullable Parameter - Fixed default value to prevent empty responses (#562)
- Root Cause:
LeagueIDNullable.defaultwas inheriting""(empty string) from_NotRequiredinstead of"00"(NBA) fromLeagueID - NBA API Change: Starting around the 2023-24 season (IST introduction), the NBA.com API became stricter and now requires an explicit
LeagueIDvalue rather than accepting empty strings - Impact: Endpoints using
LeagueIDNullable(e.g.,PlayerProfileV2,CommonTeamRoster) returned empty datasets when called without explicitly specifyingleague_id_nullable - Fix: Override
LeagueIDNullable.defaultto explicitly useLeagueID.nba("00") - Affected Endpoints: All endpoints with
league_id_nullableparameter 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)
- Root Cause:
-
LeagueGameFinder - Documented and added warning for
game_id_nullableparameter limitation (#446)- NBA API Limitation: The
game_id_nullableparameter is ignored by the NBA Stats API and does not filter results - Impact: Users passing
game_id_nullablereceive all games matching other criteria instead of the specific game requested - Fix: Added runtime
UserWarningwhengame_id_nullableis 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_nullableparameter helps reduce result set size before client-side filtering
- NBA API Limitation: The
-
CommonAllPlayers - Added missing
PLAYER_SLUGandTEAM_SLUGfields toexpected_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
POSITIONfield (NBA API limitation). Users needing position data should useCommonPlayerInfoorCommonTeamRosterendpoints instead
-
PlayerProfileV2 CareerHighs - Fixed
expected_datato match actual API response (#536)- Added missing
GAME_IDfield - Fixed field name from
STATS_VALUEtoSTAT_VALUE(singular) - Note: The
CareerHighsdataset correctly returns regular season career highs (not playoff highs as originally reported). All game IDs have "002" prefix indicating regular season games
- Added missing
-
Static Teams Data - Corrected Golden State Warriors city name (#434)
- Changed city name from "Golden State" to "San Francisco"
- Updated in both
data.pyandtemplate.py - The team name remains "Golden State Warriors" (unchanged)
- 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
- Explicit field access using
- 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
- Root Cause: Parser used fragile dynamic key extraction (
- 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
- NBA API Bug (not nba_api): When
Date: 2025-11-12
- 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_datadefinition
- 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_adjustmentsto correct name splits
- Static Data Generation - Fixed bug where
player_adjustmentsoverwroteis_activestatus from NBA API- Now preserves active/inactive status when applying name corrections
- Previous behavior: Adjustments included hardcoded
is_active=False, losing actual player status
- Documentation - Updated README.md example to use named attributes instead of array indices
- Replaced
career.get_data_frames()[0]withcareer.season_totals_regular_season.get_data_frame() - Encourages version-safe approach: use
endpoint.dataset_name.get_data_frame()instead ofget_data_frames()[index]
- Replaced
- BoxScoreDefensiveV2 - Added module docstring with usage recommendations and named attribute examples
- Regression Test - Added
test_dataset_order_matches_expected_data()to BoxScoreDefensiveV2 parser tests- Validates parser dataset order matches endpoint's
expected_datadefinition - Prevents future regressions of dataset ordering bugs
- Validates parser dataset order matches endpoint's
Date: 2025-11-12
- BoxScoreTraditionalV3 Parser - Complete rewrite to fix critical bugs
- Fixed AttributeError: Renamed
get_players_headers()to correct method nameget_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
- Fixed AttributeError: Renamed
- 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
- 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.py→generate_static_data_file.py - Removed redundant
scripts/create_static_data_file.py
- Moved
Date: 2025-11-11
-
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
-
Parser Architecture
-
Build System
-
Documentation
- Python 3.9 Support - Python 3.9 is now deprecated and will be removed in a future release (89b2443)
- BoxScoreTraditionalV2 - Added deprecation warning (bfe29b5)
- TeamGameLog and TeamGameLogs Endpoints - Deprecated by the NBA with no replacement available (ecb6ae2, eb83420)
- 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)
Date: 2025-09-30
- 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-originandx-nba-stats-tokenheaders as no longer used.
- Updated Static Player & Team Data
Date: 2025-01-11
- Handle missing WinProbability data in ScoreboardV2 endpoint (#560)
- Add missing PlayIn season type to parameters (#544)
- Add missing GITHUB_TOKEN environment variable (#546)
- Build System
Date: 2025-06-02
- Add ScheduleLeagueV2 endpoint to package exports
- Update WNBA team count to 13 teams (Golden State Valkyries)
- Update WNBA player and team data for 2025 season
- #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.
- New endpoint for retrieving live betting odds by @mohithn04 in #514
- Updated Static Player Data by @rsforbes
- Numpy failure when using Google Colab
- Updated CONTRIBUTING.md adding
poetry env activatefor poetry 2.0
- Support for Python 3.13
- Two New Endpoints (scheduleleaguev2 & scheduleleaguev2int) by @sreyemnayr in #499
- Updated Static Player Data by @rsforbes
- Support for User Defined Session to API calls by @8W9aG in #486
- Accent Neutral Search for Static Player Data by @mxufc29 in #488
- Updated PlayByPlay Regex File by @rsforbes in #494
Date: 2024.10.29
- Resolved Issue #476 related to certifi lib
Date: 2024.10.10
- Updated .settings.json to recognize pytest tests
- Reformatted src/nba_api/stats/library/data.py for compliance with Flake8 rules
- Updated Static Player File
- BoxScoreSimilarityScore (Person1Season & Person2Season no longer support valid values).
- Scoreboard
- Removed support for Python 3.8
- Fixed test for ShotChartLineupDetail.
- Fixed Bug #464 affecting Scoreboard & ScoreboardV2 endpoints
- Upgraded requests to ^2.32.3
- Upgraded certifi to ^2023.7.22 (CVE-2023-37920)
- Upgraded idna ^3.7.0 (CVE-2024-3651)
Date: 2024.08.28
- Fixed static data.py file where wnba_teams was missing.
Date: 2024.08.27
- Fix BoxScoreTraditionalV3 API Bug(some game stats starters and bench is None, cause 'NoneType' object has no attribute 'values') by @XatMassacrE in #458
- 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
- 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
- Add WNBA static data. by @cosmicac in #444
- All NBA player and team static data current as of 2023.11.09 #398
- 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
- Update documentation by @shufinskiy in #406
- boxscoremathups swapped places Def and Off columns names by @shufinskiy in #409
- In-Season Tournament StandingsISTStandings. @shufinskiy #396
- EventMsgType now contains INSTANT_REPLAY (18). @usharerose #384
- All NBA player and team static data current as of 2023.11.09 #398
- EventMsgType UNKNOWN (18) has been deprecated and will be removed in a future release. #400
- The [playbyplay][https://github.com/rsforbes/nba_api/blob/master/src/nba_api/stats/library/playbyplayregex.py] regex for TURNOVER was updated to account for a space within the description provided by the NBA. #401
- Set minimum requirement for certifi to 2023.7.22 per CVE-2022-23491 / CWE-296 #384
- Bumped urllib3 from 2.0.6 to 2.0.7 @dependabot #388
- 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
Date: 2023.10.07
- Set minimum requirement for requests to 2.31 per CVE-2023-32681 / CWE-200
- Set minimum requirement for certifi to 2022.12.07 per CVE-2022-23491 / CWE-345
Date: 2023-10-04
Eleven new endpoints were added to this release. A massive thank you to @shufinskiy.
- BoxScoreAdvancedv3
- BoxScoreDefensivev2
- BoxScoreFourFactorsv3
- BoxScoreHustlev2
- BoxScoreMatchupsv3
- BoxScoreMiscv3
- BoxScorePlayerTrackV3
- BoxScoreScoringV3
- BoxScoreTraditionalv3
- BoxScoreUsagev3
- PlaybyPlayv3
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).
- 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)
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.
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
- urllib3 from 1.26.15 to 1.26.17. (#373) - @dependabot
- certifi from 2022.12.7 to 2023.7.22 (#360) - @dependabot
Updated dev container to dynamically set the python path for Poetry. (#369)
Date: 2023-06-13
- requests bumped from 2.28.2 to 2.31.0 via #344 - @dependabot
- 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
- Support for VS Code Dev Containers (including auto-format via black)
Date: 2023-03-23
-
Python: Support for 3.11 #331
-
New Endpoint:
- PlayerIndex via #326 - @shufinskiy
- VideoDetailsAsset via #325 - @OnerInce
-
Jupyter Notebooks (Binary Classification - Home Team Win-Loss Modeling) #329 - @TheResearchLab
- Home Team Win-Loss: Data Prep
- Home Team Win-Loss: Modeling
- Player Static Data: Updated as of 2023.03.23 #322
- Removed Python max version release dependency to allow for all go-forward versions. Bugs with later Python versions can be addressed as needed. #331
- 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
- Resolved CircleCI build where Poetry and CircleCI Docker images conflicted in how output is managed. #331
Date: 2022-11-16
- Fixed a team turnover regular expression when working with PlayByPlay data.
- Endpoints
- Fixed PlayerGameLogs parameter OppTeamID --> OpponentTeamID (#311 - FarhanSajid1
- Poetry: Python dependency management and packaging made easy
- Updated CONTRIBUTING.md on how to Contribute Code Using Poetry
- Snyk for Security Scanning
- Exclusion to
.gitignorefor.dccachefiles created by Snyk CLI - Introduced .flake8, resolve a number of style guide issues, added exclusions with future TODOs
- Minimum Version for NumPy has been set to v1.22.22 due to a security vulnerability in NumPy v1.21.6
- Support for Python 3.7 due to a security vulnerability in NumPy v1.21.6
- Upgraded NumPy from v1.21.6 to v1.22.2 due to three vulnerabilies:
- Integrated DeepSource for code security scanning
Date: 2022-10-16
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
Date: 2022-10-11
- 2022-10-08 Player Data
- Endpoints
CONTRIBUTING.MDCHANGELOG.MD- GitHub issue template for bugs
- CircleCI build support for Python 3.10
- pyproject.toml (PEP 621)
- CircleCI
- Migrated to next-gen Convenience Images
- Config to Version 2.1
- Moved
flake8andpytestinto Commands - Parameterized docker images
- README.md
- Link to NBA.com Terms of Use
- Getting started samples at the top
- Other edits for improving the reading structure
- Project Structure
- Source code moved from flat-layout to src-layout
- Tests were divided into Unit/Integration
- Support for Python 3.4, 3.5, and 3.6
- Setup.py file in favor of pyproject.toml (PEP 621)
- Issue #249:
./nba_api/stats/endpoints/_base.pyrequiresnumpyto format data forget_data_frame.numpywas 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
distancewhendistancewas 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.
- The NBA removed a space that represented
Date: 2021-11-8
- Merge pull request #231 from swar/live
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
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
Date: 2020-01-27
- Forgot to remove debug code... this is why you don't program when you should be sleeping
- Forgot to add new endpoint on second section of init
- 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
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
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
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
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.
Date: 2019-04-07
- Reverting headers
- Updating README
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
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
Date: 2018-10-11
- Disabled DEBUG Mode that was enabled by default in v1.0.5
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
Date: 2018-09-25
- Updating README urls
Date: 2018-09-25
- Updating stats examples
- README changes and removing index.md
Date: 2018-09-17
- Updating with PyCharm and Debug Files
- Escaping vertical bar character from endpoint documentation
Date: 2018-09-17
Date: 2018-09-16
- Initial commit