Files
Sportstime/.planning/phases/2.1-add-stadium-data-mls-wnba-nwsl-cbb/02.1-02-PLAN.md
Trey t 02d154cf46 docs(02.1): create phase plan for additional sports stadiums
Phase 2.1: Additional Sports Stadiums
- 3 plans created (MLS, WNBA, NWSL modules)
- CBB deferred to future phase (350+ D1 teams)
- 6 total tasks defined
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 00:47:02 -06:00

5.4 KiB

phase, plan, type
phase plan type
2.1-additional-sports-stadiums 02 execute
Create WNBA sport module with complete hardcoded stadium data.

Purpose: Enable WNBA stadium data to flow through the canonicalization pipeline. Output: wnba.py module with 13 arenas including capacity, year_opened, and coordinates.

<execution_context> ~/.claude/get-shit-done/workflows/execute-phase.md ~/.claude/get-shit-done/templates/summary.md </execution_context>

@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md

Prior plan in this phase:

@.planning/phases/2.1-add-stadium-data-mls-wnba-nwsl-cbb/02.1-01-SUMMARY.md

Pattern reference:

@Scripts/mlb.py @Scripts/mls.py (created in 02.1-01)

Current WNBA data:

@Scripts/scrape_schedules.py (WNBA_TEAMS dict at line 77)

NBA arenas (many shared with WNBA):

@Scripts/nba.py

Core module:

@Scripts/core.py

Tech stack available: Python 3, dataclasses, requests Established patterns: Sport module structure from mlb.py, mls.py Key insight: Many WNBA teams share arenas with NBA teams - can reference nba.py hardcoded data for coordinates/capacity

Task 1: Create wnba.py module with complete stadium data Scripts/wnba.py Create wnba.py following the established pattern:
  1. Module docstring and imports (try/except for core imports)
  2. all exports list
  3. WNBA_TEAMS dict (copy from scrape_schedules.py, 13 teams)
  4. get_wnba_team_abbrev() function
  5. Hardcoded WNBA arenas dict with COMPLETE data:

WNBA Teams and Arenas (2025 season - 13 teams):

  • ATL: Atlanta Dream → Gateway Center Arena (College Park, GA) - WNBA-specific, ~3,500 capacity, opened 2018
  • CHI: Chicago Sky → Wintrust Arena (Chicago, IL) - WNBA-specific, ~10,387 capacity, opened 2017
  • CON: Connecticut Sun → Mohegan Sun Arena (Uncasville, CT) - ~10,000 capacity, opened 2001
  • DAL: Dallas Wings → College Park Center (Arlington, TX) - ~7,000 capacity, opened 2012
  • GSV: Golden State Valkyries → Chase Center (San Francisco, CA) - shared with NBA Warriors, ~18,064, opened 2019
  • IND: Indiana Fever → Gainbridge Fieldhouse (Indianapolis, IN) - shared with NBA Pacers, ~17,923, opened 1999
  • LVA: Las Vegas Aces → Michelob Ultra Arena (Las Vegas, NV) - ~12,000 capacity, opened 2016
  • LA: Los Angeles Sparks → Crypto.com Arena (Los Angeles, CA) - shared with NBA Lakers/Clippers, ~19,079, opened 1999
  • MIN: Minnesota Lynx → Target Center (Minneapolis, MN) - shared with NBA Timberwolves, ~18,978, opened 1990
  • NY: New York Liberty → Barclays Center (Brooklyn, NY) - shared with NBA Nets, ~17,732, opened 2012
  • PHO: Phoenix Mercury → Footprint Center (Phoenix, AZ) - shared with NBA Suns, ~17,071, opened 1992
  • SEA: Seattle Storm → Climate Pledge Arena (Seattle, WA) - shared with NHL Kraken, ~17,100, opened 1962 (renovated 2021)
  • WAS: Washington Mystics → Entertainment & Sports Arena (Washington, DC) - WNBA-specific, ~4,200, opened 2018
  1. scrape_wnba_stadiums_hardcoded() function returning list[Stadium]
  2. scrape_wnba_stadiums() function with fallback sources
  3. WNBA_STADIUM_SOURCES configuration

Note: Use WNBA-specific capacity where different from NBA configuration. Cross-reference nba.py for shared arena coordinates. python3 -c "from Scripts.wnba import WNBA_TEAMS, scrape_wnba_stadiums_hardcoded; s = scrape_wnba_stadiums_hardcoded(); print(f'{len(s)} arenas'); assert len(s) == 13; assert all(st.capacity > 0 for st in s); assert all(st.year_opened for st in s)" wnba.py exists with 13 teams, 13 arenas, all with non-zero capacity and year_opened values

Task 2: Integrate WNBA module with scrape_schedules.py Scripts/scrape_schedules.py Update scrape_schedules.py to use the new wnba.py module:
  1. Add import at top (with try/except pattern):

    • from wnba import WNBA_TEAMS, get_wnba_team_abbrev, scrape_wnba_stadiums, WNBA_STADIUM_SOURCES
  2. Remove inline WNBA_TEAMS dict (lines ~77-91) - now imported from wnba.py

  3. Update get_team_abbrev() function to use get_wnba_team_abbrev() for WNBA

  4. Update scrape_wnba_stadiums() stub function to use the new module's implementation

  5. Verify WNBA games scraping still works

Do NOT remove the game scraping functions - those stay inline for now. cd Scripts && python3 -c "from scrape_schedules import WNBA_TEAMS, get_team_abbrev; print(f'WNBA teams: {len(WNBA_TEAMS)}'); abbrev = get_team_abbrev('Las Vegas Aces', 'WNBA'); print(f'Aces abbrev: {abbrev}'); assert abbrev == 'LVA'" scrape_schedules.py imports WNBA_TEAMS from wnba.py, get_team_abbrev works for WNBA, inline WNBA_TEAMS removed

Before declaring plan complete: - [ ] wnba.py exists with complete module structure - [ ] All 13 WNBA arenas have capacity > 0 and year_opened values - [ ] scrape_schedules.py imports from wnba.py successfully - [ ] No import errors when running pipeline

<success_criteria>

  • wnba.py module created following established pattern
  • 13 WNBA arenas with complete data (capacity, year_opened, coordinates)
  • scrape_schedules.py integration works
  • Shared NBA arenas have correct coordinates </success_criteria>
After completion, create `.planning/phases/2.1-add-stadium-data-mls-wnba-nwsl-cbb/02.1-02-SUMMARY.md`