---
phase: 2.1-additional-sports-stadiums
plan: 02
type: 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.
~/.claude/get-shit-done/workflows/execute-phase.md
~/.claude/get-shit-done/templates/summary.md
@.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
6. scrape_wnba_stadiums_hardcoded() function returning list[Stadium]
7. scrape_wnba_stadiums() function with fallback sources
8. 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
- 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