wehoop 3.0.0
New data loaders
- feat: add
load_*functions for season-level rosters and player stats, backed by newsportsdataverse-datarelease tags published by thewehoop-wbb-data,wehoop-wnba-data, andwehoop-wnba-stats-datapipelines. Each function follows the existingload_wnba_pbp()shape —(seasons, ..., dbConnection = NULL, tablename = NULL),progressively()decorator,data.table::rbindlist(use.names = TRUE, fill = TRUE), optional DB write, and a finalwehoop_dataclass set on the in-memory result.- ESPN-backed loaders:
load_wbb_rosters(),load_wbb_player_stats(),load_wnba_rosters(),load_wnba_player_stats()reading from theespn_womens_college_basketball_rosters,espn_womens_college_basketball_player_season_stats,espn_wnba_rosters, andespn_wnba_player_season_statsrelease tags respectively. - WNBA Stats API-backed loaders:
load_wnba_stats_rosters(),load_wnba_stats_coaches(),load_wnba_stats_player_stats(),load_wnba_stats_lineups()reading from thewnba_stats_rosters,wnba_stats_coaches,wnba_stats_player_season_stats, andwnba_stats_lineupsrelease tags respectively. New fileR/load_wnba_stats.Rhouses the fourwnba_stats_*loaders. - Adds
most_recent_wnba_stats_season()helper inR/utils.R(a thin wrapper aroundmost_recent_wnba_season()for naming symmetry with thewnba_stats_*family). - Tests gated by the existing
WEHOOP_LOAD_TESTS=1env var viaskip_load_test()(tests/testthat/helper-skip.R).
- ESPN-backed loaders:
- feat: add additional
load_*season-summary loaders backed by newsportsdataverse-datarelease tags. Each follows the same(seasons, ..., dbConnection = NULL, tablename = NULL)shape, single.rdsper season,progressively()decorator, and finalwehoop_dataclass set on the in-memory result.- ESPN-backed loaders:
load_wbb_team_stats(),load_wbb_standings(),load_wnba_team_stats(),load_wnba_standings(),load_wnba_draft()reading from theespn_womens_college_basketball_team_season_stats,espn_womens_college_basketball_standings,espn_wnba_team_season_stats,espn_wnba_standings, andespn_wnba_draftrelease tags respectively. - WNBA Stats API-backed loaders:
load_wnba_stats_team_stats(),load_wnba_stats_standings(),load_wnba_stats_draft()reading from thewnba_stats_team_season_stats,wnba_stats_standings, andwnba_stats_draftrelease tags respectively. - Tests gated by the existing
WEHOOP_LOAD_TESTS=1env var viaskip_load_test().
- ESPN-backed loaders:
- feat: add
load_*loaders for shot events, per-game rosters, and game officials backed by newsportsdataverse-datarelease tags. Each follows the same(seasons, ..., dbConnection = NULL, tablename = NULL)shape, single.rdsper season,progressively()decorator, and finalwehoop_dataclass set on the in-memory result.- ESPN-backed loaders:
load_wbb_shots(),load_wbb_game_rosters(),load_wbb_officials(),load_wnba_shots(),load_wnba_game_rosters(),load_wnba_officials()reading from theespn_womens_college_basketball_shots,espn_womens_college_basketball_game_rosters,espn_womens_college_basketball_officials,espn_wnba_shots,espn_wnba_game_rosters, andespn_wnba_officialsrelease tags respectively. - WNBA Stats API-backed loaders:
load_wnba_stats_shots(),load_wnba_stats_game_rosters(),load_wnba_stats_officials()reading from thewnba_stats_shots,wnba_stats_game_rosters, andwnba_stats_officialsrelease tags respectively. - Tests gated by the existing
WEHOOP_LOAD_TESTS=1env var viaskip_load_test().
- ESPN-backed loaders:
- feat: add 25
load_*_manifest()helpers (one per non-PBP/non-schedule dataset across the three release-tag families) plus adatasets=argument onupdate_wnba_db()/update_wbb_db()and a newupdate_wnba_stats_db()for selective DB population. Manifest helpers return the per-seasonseason/row_count/generated_at_utc/source_endpointCSV attached to each release tag, so users can discover available seasons without triggering a heavyload_*()call. Thedatasets=arg lets callers populate specific tables (e.g.update_wbb_db(datasets = c("rosters", "player_stats"))); whenNULLthe historical play-by-play behavior is preserved. - feat: add
load_wnba_stats_schedule(),load_wnba_stats_player_game_logs()andload_wnba_stats_pbp()plus the matchingload_wnba_stats_schedule_manifest()/load_wnba_stats_player_game_logs_manifest()/load_wnba_stats_pbp_manifest()helpers. These read from thewnba_stats_schedules,wnba_stats_player_game_logs(new tag) andwnba_stats_pbprelease tags now populated by the rewrittenwehoop-wnba-stats-data/R/wnba_stats_01_pbp.Rpipeline (V3 PBP with on-court lineups supplied directly bywnba_pbp(), plus possession assignment, FT-to-foul attribution, garbage-time flag, and a per-season + master schedule build). All three new datasets are also wired intoupdate_wnba_stats_db()(datasets = c("schedule", "player_game_logs", "pbp", ...)).
ESPN endpoint expansion
- feat: add ESPN news + calendar endpoint wrappers —
espn_wbb_news(),espn_wnba_news(),espn_wbb_team_news(),espn_wnba_team_news(),espn_wbb_calendar(),espn_wnba_calendar(). League-level and team-level news feeds (site-v2/news) plus scoreboard calendar blocks (site-v2/scoreboard?dates={season}) parsed into tidy tibbles. Shared internal helpers (.espn_basketball_news(),.espn_basketball_team_news(),.espn_basketball_calendar()) keep WBB and WNBA DRY. - feat: add ESPN injury endpoint wrappers —
espn_wbb_injuries(),espn_wnba_injuries(),espn_wbb_team_injuries(),espn_wnba_team_injuries(). League-wide and team-scoped injury feeds (site-v2/injuriesand/teams/{id}/injuries) parsed into flat tidy tibbles. Note: WBB injury data is typically sparse on ESPN; both league and team variants return an empty tibble (rather than erroring) when no injuries are reported. Theseasonparameter on the league-wide functions is attached as a constant output column for downstream joins (ESPN’s injury endpoint does not accept a server-side season filter). Shared internal helpers (.espn_basketball_league_injuries(),.espn_basketball_team_injuries()) keep WBB and WNBA DRY. - feat: add ESPN team-detail endpoint wrappers —
espn_wbb_team(),espn_wnba_team(),espn_wbb_team_roster(),espn_wnba_team_roster(),espn_wbb_team_schedule(),espn_wnba_team_schedule(),espn_wbb_team_leaders(),espn_wnba_team_leaders(). Single-team info (named list:Info,Record,NextEvent,StandingSummary,Coaches), roster (one row per athlete with position, height, weight, headshot), schedule (one row per event with opponent, venue, broadcast, result), and statistical leaders (long format per category-rank-athlete) via site-v2/teams/{id},/teams/{id}/roster,/teams/{id}/schedule, and/teams/{id}/leaders. Shared internal helpers (.espn_basketball_team(),.espn_basketball_team_roster(),.espn_basketball_team_schedule(),.espn_basketball_team_leaders()inR/espn_basketball_team_helpers.R) keep WBB and WNBA DRY. - feat: add ESPN athlete coverage endpoint wrappers –
espn_wbb_athlete_info(),espn_wnba_athlete_info(),espn_wbb_athlete_overview(),espn_wnba_athlete_overview(),espn_wbb_athlete_stats(),espn_wnba_athlete_stats(),espn_wbb_athlete_gamelog(),espn_wnba_athlete_gamelog(),espn_wbb_athlete_splits(),espn_wnba_athlete_splits(),espn_wbb_athlete_eventlog(),espn_wnba_athlete_eventlog(),espn_wbb_athlete_awards(),espn_wnba_athlete_awards(),espn_wbb_athlete_statisticslog(),espn_wnba_athlete_statisticslog(). Athlete bio/team/position/status/college/draft info (site-v2), season overview and last-5-games (web-common-v3), per-category stats as named list (web-common-v3), game-by-game log (web-common-v3), long-format splits (web-common-v3), per-event log with ref URLs as character columns (core-v2), awards (core-v2, sparse/often empty), and statistics log (core-v2). The awards endpoint returns an empty tibble with canonical columns when no data exist. The eventlogstatistics.$refURLs are returned as astatistics_refcharacter column and are not auto-resolved. Shared internal helpers (.espn_basketball_athlete_info(),.espn_basketball_athlete_overview(),.espn_basketball_athlete_stats(),.espn_basketball_athlete_gamelog(),.espn_basketball_athlete_splits(),.espn_basketball_athlete_eventlog(),.espn_basketball_athlete_awards(),.espn_basketball_athlete_statisticslog()inR/espn_basketball_athlete_helpers.R) keep WBB and WNBA DRY. - feat: add WNBA-only ESPN endpoint wrappers –
espn_wnba_draft(),espn_wnba_freeagents(),espn_wnba_transactions(),espn_wnba_conferences().espn_wnba_draft()paginates the core-v2/seasons/{year}/draftendpoint (up to 20 pages) and returns a flat tibble of picks (round, pick, overall, team, athlete, position, college).espn_wnba_freeagents()wraps core-v2/seasons/{year}/freeagentsand returns an empty tibble outside the free-agent window.espn_wnba_transactions()wraps site-v2/transactions?season={year}&limit={limit}with null-safeto_team_idfor release transactions.espn_wnba_conferences()mirrorsespn_wbb_conferences()using the WNBA scoreboard-conferences endpoint (site-v2/scoreboard/conferences?seasontype=2) with the same column shape anddplyr::select(-dplyr::any_of("subGroups"))drift guard. - feat: add ESPN event-detail endpoint wrappers –
espn_wbb_event_odds(),espn_wnba_event_odds(),espn_wbb_event_probabilities(),espn_wnba_event_probabilities(),espn_wbb_event_officials(),espn_wnba_event_officials(),espn_wbb_event_broadcasts(),espn_wnba_event_broadcasts(). Game-level odds (one row per provider; WBB typically empty), paginated play-level win probabilities (core-v2/probabilitieswith internal page loop capped at 50 pages, respectslimitparameter), per-game officials, and broadcast outlets. All via core-v2/events/{id}/competitions/{id}/. Shared internal helpers (.espn_basketball_event_odds(),.espn_basketball_event_probabilities(),.espn_basketball_event_officials(),.espn_basketball_event_broadcasts()inR/espn_basketball_event_helpers.R) keep WBB and WNBA DRY. - feat: add ESPN league-wide catalog endpoint wrappers –
espn_wbb_leaders(),espn_wnba_leaders(),espn_wbb_venues(),espn_wnba_venues(),espn_wbb_coaches(),espn_wnba_coaches(),espn_wbb_athletes_index(),espn_wnba_athletes_index(),espn_wbb_seasons(),espn_wnba_seasons(),espn_wbb_season_info(),espn_wnba_season_info(). League leaders (web-common-v3 statistics/byathlete), venue catalog, coach roster, athlete index (paginated with progress messages; WBB default limit 25000, WNBA 5000), season list, and single-season info parsed into tidy tibbles.$refcomponents in season info are returned as character columns and not auto-resolved. Shared internal helpers (.espn_basketball_leaders(),.espn_basketball_venues(),.espn_basketball_coaches(),.espn_basketball_athletes_index(),.espn_basketball_seasons(),.espn_basketball_season_info()inR/espn_basketball_league_helpers.R) keep WBB and WNBA DRY. - docs: add
vignettes/espn-endpoints.Rmdcovering all 80 ESPN basketball wrappers (existing 22 + 58 new). Reorganize the pkgdown reference index into 14 per-domain ESPN subsections so the rendered nav scales for the new surface.
CRAN preparation
- Add
cph(copyright holder) role toSaiem GilaniinAuthors@R(CRAN strict requirement). - Bump
LICENSEandLICENSE.mdcopyright year from 2020 to 2026. - Add full roxygen blocks (description,
@return,@examples) tomost_recent_wbb_season()andmost_recent_wnba_season(), which had been title/@export-only. - Add
@examples \donttest{}blocks to all 58 new ESPN endpoint wrappers. Live-API examples are wrapped in\donttest{}so they do not run during routineR CMD checkbut are still exercised under--run-donttest. The redundant@detailscode-block samples were removed from these 58 functions; the legacy@details-with-code-block convention is retained for the WNBA Stats API (wnba_*) and NCAA (ncaa_wbb_*) wrappers per the project’s documentation conventions inCLAUDE.md. - Modernize
inst/CITATION: replace deprecatedcitEntry()/personList()withbibentry()/c(person(), ...)(R 4.x deprecation cleanup). - Add
parameter_descriptions(dataset) andyear_to_season(utility) to_pkgdown.ymlreference index sopkgdown::check_pkgdown()passes (resolves the gh-pages deploy failure).
WNBA Stats API V3 Endpoints Added
-
wnba_playbyplayv3()function added. V3 play-by-play endpoint wrapper, plus a V3-to-V2 compatibility pipeline used bywnba_pbp()(via.v3_to_v2_format_wnba(),.build_player_roster_wnba(),.players_on_court_v3_wnba()) that retains V2-compatible columns while adding V3-only columns (x_legacy,y_legacy,shot_distance,shot_result,is_field_goal,points_total,shot_value). -
wnba_boxscoresummaryv3()function added. -
wnba_boxscoreusagev3()function added.
WNBA Time Calculation Fix
-
.players_on_court()— corrected quarter-length math to use 10-minute WNBA quarters (600 seconds/quarter, 2400 seconds of regulation) rather than the NBA 12-minute quarter constants.
Data Loaders
-
update_wnba_db()function updated to usesportsdataverse-datareleases url instead ofwehoop-datarepository URL -
update_wbb_db()function updated to usesportsdataverse-datareleases url instead ofwehoop-datarepository URL
Restored Functionality
-
wnba_draftboard()— rewritten against the new upstream endpointhttps://content-api-prod.nba.com/public/1/leagues/wnba/draft/{season}/board. The oldwnba.com/wp-json/api/v1/get_draft_boardendpoint stopped serving data; the replacement returns a tidied named list of two tibbles —board(draft metadata) andpicks(one row per pick with team, prospect, career stats, and headshot URL). See?wnba_draftboardfor the column schema. -
Un-deprecations — the following wrappers were deprecated in 2.1.0 or earlier in 3.0.0 dev when the underlying endpoints were returning empty result sets. Re-probing in mid-season 2026 (verified 2026-05-16 against
LeagueID=10, current 2025-26 season) shows the endpoints have resumed publishing populated data, so thelifecycle::deprecate_stop()shim has been removed and the original body restored on each:-
wnba_playerprofilev2()— returnsSeasonTotalsRegularSeason(9 seasons),SeasonTotalsPostSeason(7),SeasonTotalsAllStarSeason(6),SeasonTotalsPreseason(7), the matchingCareerTotals*rollups,SeasonRankingsRegularSeason/PostSeason,SeasonHighs(17),CareerHighs(22), andNextGamefor A’ja Wilson (PLAYER_ID = 1628932). Defaultleague_idis now'10'. -
wnba_teaminfocommon()— returnsTeamInfoCommon(current-season W/L + conference/division + slug/code),TeamSeasonRanks(PTS/REB/AST + opponent PTS rank), and the 76-seasonAvailableSeasonslist for Las Vegas Aces (TEAM_ID = 1611661319). Function body un-commented; error handling migrated from rawcli::cli_alert_danger()to.report_api_error()/.report_api_warning()for consistency. -
wnba_teamyearbyyearstats()— returnsTeamStatswith 30 seasons × 34 columns of full franchise-level year-by-year ledger (GP, W, L, win%, conference rank, division rank, ratings) for the Aces. -
wnba_leaguelineupviz()— returnsLeagueLineupVizwith 458–4,169 5-player lineup combinations × 25 columns (off/def/net rating, pace, TS%, eFG%) depending on filters, current 2025-26 WNBA season.
-
Bug Fixes
-
wnba_schedule()— migrated off the retiredstats.wnba.com/stats/scheduleleaguev2endpoint (returns Connection Reset since March 2026; issue #53) to the public CDN atcdn.wnba.com/static/json/staticData/scheduleLeagueV2.json. The CDN serves the sameleagueSchedule.gameDates[].games[]payload as the dead stats endpoint, requires no authentication or special headers, and stays current with the live WNBA season. For historical seasons (CDN only serves the current season) the function now emits acli::cli_alert_infopointing users atload_wnba_schedule(seasons = ...), which reads cached ESPN snapshots from thesportsdataverse-datareleases. -
wnba_leaguegamelog()— defaultleague_idwas'00'(NBA), causing every call without an explicitleague_idargument to return ~2,500 rows of NBA data instead of WNBA (issue #48). Default is now'10'(WNBA), matching the rest of the package. Additionally, the parameter order in the outgoing query string was reordered to putLeagueIDfirst, because the WNBA Stats API as of 2026 returns a Cloudflare HTML error page for the alphabetical ordering (Counter, DateFrom, DateTo, Direction, LeagueID, ...) but a populatedLeagueGameLogforLeagueID-first. Verified 2026-05-16: same param values, alphabetical-first returns HTML,LeagueID-first returns 572 WNBA rows. -
espn_wbb_conferences()— ESPN dropped thesubGroupscolumn from its scoreboard-conferences response; the function now usesdplyr::select(-dplyr::any_of("subGroups"))so new column drops no longer break the call. Also initializesconferences <- NULLbefore thetryCatchso a transient error surfaces acli_alert_dangerinstead ofobject 'conferences' not found. -
ncaa_wbb_NET_rankings()— the NCAA.com rankings table now exposesConf/Prev/Quad 1..4headers; afterjanitor::clean_names()these land asconf/prev/quad_1..4, breaking the documented schema. The function now renamesconf → conferenceandprev → previousviadplyr::rename(dplyr::any_of(...))so existing consumers keep working while the newquad_*columns ride along untouched. -
Return-value initialization pattern — swept ~124 WNBA and ESPN wrappers that
return(df_list)(or returned other vars assigned only insidetryCatch(expr = ...)) without initializing the return value first. When the API errored, callers sawobject 'df_list' not foundinstead of the intendedcli::cli_alert_danger+ empty-list fallback. Each wrapper now initializes its return variable beforetryCatch, so errors degrade gracefully to an empty list / NULL. Affected files:R/wnba_stats_boxscore.R,R/wnba_stats_boxscore_v3.R,R/wnba_stats_cume.R,R/wnba_stats_draft.R,R/wnba_stats_franchise.R,R/wnba_stats_leaders.R,R/wnba_stats_league.R,R/wnba_stats_league_dash.R,R/wnba_stats_lineups.R,R/wnba_stats_pbp.R,R/wnba_stats_player.R,R/wnba_stats_player_dash.R,R/wnba_stats_roster.R,R/wnba_stats_scoreboard.R,R/wnba_stats_shotchart.R,R/wnba_stats_team.R,R/wnba_stats_team_dash.R,R/wnba_stats_video.R,R/espn_wbb_data.R,R/espn_wnba_data.R,R/wnba_data_pbp.R. -
wnba_data_pbp()— addedplays_df <- data.frame()init so HTTP/2 stream errors fromdata.wnba.comreturn an empty data frame with acli_alert_dangerrather thanobject 'plays_df' not found.
Test Suite Hardening
- Flipped 394 column assertions from strict
expect_equal(sort(colnames(x)), sort(cols))to subset checksexpect_in(sort(cols), sort(colnames(x)))across 115 test files — per the CLAUDE.md guidance, WNBA / ESPN APIs add columns without removing old ones, and the strict checks were brittle. - Injected
skip("No rows returned from endpoint at test time")guards into 114 test files so tests which accessx[[1]]degrade gracefully to a skip (rather than a subscript-out-of-bounds error) when the upstream endpoint errors or returns empty. - Cleaned stale column names out of expected
colslists where ESPN renamed/removed columns (jersey,active,team_x_ref_2,team_is_all_star,Team_ID→TEAM_ID). - Added per-element null/empty-column check helpers to
test-wnba_teamvsplayer.Randtest-wnba_playerdashboardbyclutch.Rso tests tolerate the WNBA Stats API returning fewer result-set elements than the test expects. - Added
tools/directory (excluded from the package build via.Rbuildignore) containing the one-off R scripts used to apply the above sweeps:patch_df_list_init.R,patch_return_var_init.R,flip_expect_equal_cols.R,inject_skip_guard.R.
Deprecations (lifecycle, slated for 3.1.0 removal)
Adds lifecycle to Imports and migrates every existing cli::cli_alert_danger() deprecation stub to lifecycle::deprecate_stop(), matching the style used in hoopR. Calling any of these functions now errors with a structured lifecycleDeprecatedError that names a replacement (or, where none exists, an explanation). Their tests skip with a "Deprecated: <fn>() now errors by design; use <replacement>." message before the function call.
Newly deprecated in 3.0.0 — endpoints returned <!DOCTYPE html> (HTTP 404 / maintenance page) at test time:
-
wnba_boxscoreplayertrackv2()→wnba_boxscoreplayertrackv3() -
wnba_data_pbp()→wnba_pbp()(thedata.wnba.commobile_teams feed is unstable; HTTP/2 stream errors are routine) -
wnba_playercareerbycollege()→ details only; considerwnba_playercareerbycollegerollup()orwnba_leaguedashplayerbiostats() -
wnba_teamgamestreakfinder()→wnba_teamgamelogs() -
wnba_teamhistoricalleaders()→wnba_franchiseleaders()
Already deprecated, re-stated under the lifecycle pattern:
-
wnba_boxscorehustlev2()(3.0.0) — endpoint dead, no replacement -
wnba_hustlestatsboxscore()(3.0.0) — endpoint dead, no replacement -
wnba_leaguehustlestatsplayer()(3.0.0) — endpoint dead, no replacement -
wnba_leaguehustlestatsplayerleaders()(3.0.0) — endpoint dead, no replacement -
wnba_leaguehustlestatsteam()(3.0.0) — endpoint dead, no replacement -
wnba_leaguehustlestatsteamleaders()(3.0.0) — endpoint dead, no replacement -
wnba_homepageleaders()(2.1.0) →wnba_homepagewidget() -
wnba_homepagev2()(2.1.0) →wnba_homepagewidget() -
wnba_leaderstiles()(2.1.0) →wnba_homepagewidget() -
wnba_scoreboard()(2.1.0) →wnba_scoreboardv3() -
wnba_videodetails()(3.0.0) →wnba_videoevents() -
wnba_videodetailsasset()(3.0.0) →wnba_videoevents()
Soft warning (lifecycle::deprecate_warn) — function still runs but recommends a replacement; will escalate to deprecate_stop if the upstream endpoint isn’t restored:
-
wnba_boxscoresummaryv3()→wnba_boxscoresummaryv2(). The V3 endpoint still answers 200 OK with the full schema, but the core result sets (game_summary,line_score,inactive_players,other_stats,available_video,game_info,arena_info) come back zero-row in 2025; onlyofficialsandlast_five_meetingspopulate. The V2 variant still returns full data.
HTTP layer
Jittered exponential backoff in
.retry_request(). Replaced the default fixed 2-second retry cadence withrunif(1, 0.5, 1.5) * 2^iso retries from concurrent users hitting the same rate-limited endpoint don’t synchronize into a thundering-herd burst that Cloudflare scores as an attack. Same 3 max tries; same backoff envelope (~0.5–6s); just spread.-
Restored proxy support. When wehoop migrated from
httrtohttr2in the V3 work, the legacyhttr::use_proxy()plumbing was dropped andrequest_with_proxy()quietly stopped honoring proxies (its...was preserved purely for source compatibility — see the prior comment “currently unused (preserved for backwards compatibility with callers that previously passedhttr::use_proxy()etc.)”). Bothrequest_with_proxy()and the lower-level.retry_request()now accept aproxy =argument:-
proxy = NULL(default) — libcurl readshttp_proxy/https_proxy/no_proxyenv vars automatically. -
proxy = "http://host:port"— string form, forwarded tohttr2::req_proxy(url = ...). -
proxy = list(url=, port=, username=, password=, auth=)— named list spread intohttr2::req_proxy()for authenticated proxies. Resolution order in.retry_request(): explicitproxy =arg →getOption("wehoop.proxy")→ libcurl env vars. The...thread works for WNBA Stats wrappers (which forward intorequest_with_proxy()); ESPN / NCAA wrappers call.retry_request()directly without..., so useoptions(wehoop.proxy = ...)at the top of the session to cover those without per-function plumbing. Validated end-to-end:ncaa_wbb_teams()andespn_wnba_game_all()both routed through an authenticated test proxy via the option fallback.
-
Test infrastructure
-
Empty / NULL responses now FAIL the test instead of silently SKIPping. The earlier
skip("No rows returned from endpoint at test time")guard was hiding regressions: when an upstream endpoint starts returning HTML (404 / maintenance) or breaks in some other silent way, the test should flag it. Converted all 117 such guards acrosstests/testthat/test-*.Rfromskip(...)tofail(...) + return(invisible(NULL))so the test surfaces a FAIL count for follow-up. Deprecation skips and the env-gatedskip_*_test()/skip_on_cran()/skip_on_ci()helpers are unchanged. - Pinned 16
wnba_team*test files frommost_recent_wnba_season()tomost_recent_wnba_season() - 1so the team-stats endpoints have a known-completed season to query and don’t degenerate to “no rows” in the WNBA off-season window.wnba_teams()and standings tests still track the live season because that’s what they’re meant to verify. - Bumped
.ncaa_headers()user-agent to Chrome 130 and added theSec-Fetch-*/sec-ch-ua-*headers a real browser sends. -
ncaa_wbb_teams()keeps its legacystats.ncaa.org/team/inst_team_listscrape (per-season per-division team list withseason_idpopulated), and now threads theproxy =argument from...through to.retry_request()at the top level.stats.ncaa.orgis fronted by Akamai and returns HTTP 403 (Reference #18.<...>) to many residential and cloud IP ranges; pass a proxy that egresses from a non-blocked address — either per-call (ncaa_wbb_teams(year, division, proxy = list(url=, port=, username=, password=))) or session-wide (options(wehoop.proxy = list(...))). See theNetwork accesssection of?ncaa_wbb_teamsfor the full resolution order.
wehoop 2.1.0
CRAN release: 2024-07-21
-
wnba_homepagewidget()function added to replace the following homepage functions being deprecated. -
wnba_homepageleaders()function deprecated due to WNBA Stats API deprecation. -
wnba_homepagev2()function deprecated due to WNBA Stats API deprecation. -
wnba_leaderstiles()function deprecated due to WNBA Stats API deprecation. -
wnba_scoreboard()function deprecated due to WNBA Stats API deprecation (usewnba_scoreboardv3()). -
wnba_teaminfocommon()function deprecated due to WNBA Stats API deprecation (usewnba_teamdetails()).
wehoop 2.0.0
CRAN release: 2023-11-25
-
load_wnba_*()functions now usesportsdataverse-datareleases url instead ofwehoop-datarepository URL -
load_wbb_*()functions now usesportsdataverse-datareleases url instead ofwehoop-datarepository URL -
wnba_pbp()function and newwnba_pbps()function added withon_court(defaultTRUE) parameter to return on court players for each play event
wehoop 1.9.0
WNBA Stats API Live Endpoints
-
wnba_live_pbp()function added. -
wnba_live_boxscore()function added. -
wnba_todays_scoreboard()function added.
WNBA Boxscore V3 (and V3-styled) Endpoints Added
-
wnba_scoreboardv3()function added. -
wnba_boxscoretraditionalv3()function added. -
wnba_boxscoreadvancedv3()function added. -
wnba_boxscoremiscv3()function added. -
wnba_boxscorescoringv3()function added. -
wnba_boxscoreusagev3()function added. -
wnba_boxscorefourfactorsv3()function added. -
wnba_boxscoreplayertrackv3()function added. -
wnba_boxscorehustlev2()function added.
Other WNBA Stats API functions added
-
wnba_shotchartlineupdetail()function added. -
wnba_franchiseleaderswrank()function added. -
wnba_leaderstiles()function added. -
wnba_leagueleaders()function added. -
wnba_videodetailsasset()function added. -
wnba_infographicfanduelplayer()function added.
Other Functions Added
-
ncaa_wbb_teams()function added.
Proxy Capability Added and Other Notes
- Add rlang dots option for passing
httr::use_proxy()option townba_*()functions - Returns documentation added for all working WNBA Stats API endpoints and ESPN functions
- Tests added for all working WNBA Stats API endpoints and ESPN functions, over 750 tests when run locally
wehoop 1.8.0
- Add proxy rlang dots option for passing httr::use_proxy() option to wnba_stats_*() functions
- Improved output for
espn_wbb_team_box(),espn_wbb_player_box(),espn_wnba_team_box(),espn_wnba_player_box()
wehoop 1.7.0
-
espn_wbb_game_rosters()function added. -
espn_wnba_game_rosters()function added. -
wnba_teams()function added. Useful for cross-walking between ESPN and WNBA Stats API
wehoop 1.6.0
- Updates tidyr and dplyr statements to use quotations on columns instead of data masking per tidyselect deprecation notice.
wehoop 1.5.0
CRAN release: 2022-06-17
~106 WNBA Stats API functions added
Adds 4 ESPN WBB and WNBA functions
wehoop::espn_wbb_player_stats()function added.wehoop::espn_wbb_team_stats()function added.wehoop::espn_wnba_player_stats()function added.wehoop::espn_wnba_team_stats()function added.Removes
furrrandfuturedependencies and replaces withpurrr (>= 0.3.0)
wehoop 1.2.0
CRAN release: 2021-11-03
- Add returns for all the functions
- Update a handful of field names from the scoreboard functions and to also include neutral_site and conference_competition columns for the women’s college basketball scoreboard function.
wehoop 1.1.1
- Change functions from
furrr::future_map_dfr()functions todata.table::rbindlist()functions for loaders.
wehoop 1.1.0
Add schedule loaders
-
wehoop::load_wbb_schedule()function added -
wehoop::load_wnba_schedule()function added
wehoop 1.0.0
Add team box score loaders
-
wehoop::load_wbb_team_box()function added -
wehoop::load_wnba_team_box()function added
Add player box score loaders
-
wehoop::load_wbb_player_box()function added -
wehoop::load_wnba_player_box()function added
wehoop 0.9.1
Clean names and team returns
- All functions have now been given the
janitor::clean_names()treatment -
wehoop::espn_wbb_teams()has updated the returns to be more identity information related only -
wehoop::espn_wnba_teams()to be more identity information related only - All tests were updated
wehoop 0.9.0
Loading capabilities added to the package
-
wehoop::load_wbb_pbp()andwehoop::update_wbb_db()functions added -
wehoop::load_wnba_pbp()andwehoop::update_wnba_db()functions added
wehoop 0.3.0
Dependencies
-
Rversion 3.5.0 or greater dependency added -
purrrversion 0.3.0 or greater dependency added -
rvestversion 1.0.0 or greater dependency added -
progressrversion 0.6.0 or greater dependency added -
usethisversion 1.6.0 or greater dependency added -
xgboostversion 1.1.0 or greater dependency added -
tidyrversion 1.0.0 or greater dependency added -
stringrversion 1.3.0 or greater dependency added -
tibbleversion 3.0.0 or greater dependency added -
furrrdependency added -
futuredependency added
wehoop 0.2.0
- Added support for ESPN’s play-by-play endpoints with the addition of the following functions:
-
wehoop::espn_wnba_game_all()- a convenience wrapper function around the following three functions (returns the results as a list of three data frames) wehoop::espn_wnba_team_box()wehoop::espn_wnba_player_box()wehoop::espn_wnba_pbp()wehoop::espn_wnba_teams()wehoop::espn_wbb_scoreboard()
wehoop 0.1.0
- Added support for ESPN’s play-by-play endpoints with the addition of the following functions:
-
wehoop::espn_wbb_game_all()- a convenience wrapper function around the following three functions (returns the results as a list of three data frames) wehoop::espn_wbb_team_box()wehoop::espn_wbb_player_box()wehoop::espn_wbb_pbp()wehoop::espn_wbb_teams()wehoop::espn_wbb_conferences()wehoop::espn_wbb_scoreboard()wehoop::ncaa_wbb_NET_rankings()wehoop::espn_wbb_rankings()
