You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A NetPoints name ESPN spells with a generational suffix, or hyphenates
differently, now matches too.match_key reduces both sides to a
comparable form in four measured steps - diacritics dropped, hyphens to
spaces, whitespace collapsed, and a trailing suffix from a closed set
removed - which recovers 710 of the 1,060 remaining unmatched per-game rows: Jimmy Butler to ESPN's Jimmy Butler III (498 rows, his whole per-game
record), Rondae Hollis-Jefferson to Rondae Hollis Jefferson (144), Trey Jemison, Billy Garrett, Darius Brown. The suffix step is the one
that can merge two real people, and it does - ESPN holds Gary Payton and Gary Payton II, Tim Hardaway and Tim Hardaway Jr., fathers and sons, 31
colliding keys in all - so a reduced spelling more than one athlete id can
reach is never usable, and those names resolve only exactly. What is left
unmatched is a different name rather than a different spelling (a nickname, a
short first name, a middle name, a reversed order) and wants a curated list.
A NetPoints name spelled with diacritics now matches ESPN's spelling of
it. NetPoints' 2026 files say Nikola Jokić where ESPN's players says Nikola Jokic, so an exact match lost those players their whole 2026 season:
Jokic matched every season from 2019 to 2025 and none of 2026, and
re-fetching cost 682 already-resolved player-games. The name coming in from
NetPoints is now folded (NFKD, combining marks dropped) when the exact
spelling misses, which resolves 20 of the 39 unmatched names. Checked rather
than assumed: no ESPN name carries a diacritic (0 of 3,080) and no two fold
to the same string, so the fold cannot reach a player it was not already
about, and the exact spelling always wins where both exist. Only diacritics -
not case, punctuation or whitespace.
scripts/backfill_netpoints_names.py re-parses the NetPoints tables that
are matched by display name, without refetching ESPN. The 4.1.0 parser fixes
(#22, #101) mean the Parquet on disk was written by the old code, so a load
alone changes nothing - but a full data pull --force over the NetPoints era
also refetches about 11,000 ESPN game summaries the fix does not touch, some
40 minutes at the default rate limit. This runs the NetPoints steps of a pull
and nothing else, through the same Pipeline methods, _write_rows and warehouse.build, and reports both measurements before and after: unmatched
rows per table, and the row counts of the players ESPN files under two ids,
which is the only one that shows #101 moving (that table drops an unmatched
row rather than nulling its id, so its unmatched count is always 0).