220 lines
7.5 KiB
Python
220 lines
7.5 KiB
Python
from __future__ import annotations
|
|
|
|
from decimal import Decimal
|
|
|
|
|
|
ROLES = [
|
|
{"name": "playmaker", "slug": "playmaker"},
|
|
{"name": "shooting wing", "slug": "shooting-wing"},
|
|
{"name": "rim protector", "slug": "rim-protector"},
|
|
{"name": "stretch four", "slug": "stretch-four"},
|
|
{"name": "6th man", "slug": "6th-man"},
|
|
]
|
|
|
|
SPECIALTIES = [
|
|
{"name": "ball handling", "slug": "ball-handling"},
|
|
{"name": "off ball", "slug": "off-ball"},
|
|
{"name": "defense", "slug": "defense"},
|
|
{"name": "clutch", "slug": "clutch"},
|
|
{"name": "post", "slug": "post"},
|
|
]
|
|
|
|
COMPETITIONS = [
|
|
{"name": "Euro League", "country": "EU", "level": "top"},
|
|
{"name": "Italian Serie A", "country": "IT", "level": "top"},
|
|
{"name": "Spanish ACB", "country": "ES", "level": "top"},
|
|
]
|
|
|
|
TEAMS = [
|
|
{"name": "Milan Lions", "country": "IT"},
|
|
{"name": "Rome Falcons", "country": "IT"},
|
|
{"name": "Madrid Waves", "country": "ES"},
|
|
{"name": "Berlin Towers", "country": "DE"},
|
|
]
|
|
|
|
SEASONS = [
|
|
{"name": "2023-2024", "start_year": 2023, "end_year": 2024},
|
|
{"name": "2024-2025", "start_year": 2024, "end_year": 2025},
|
|
{"name": "2025-2026", "start_year": 2025, "end_year": 2026},
|
|
]
|
|
|
|
PLAYERS = [
|
|
{
|
|
"full_name": "Marco Guard",
|
|
"first_name": "Marco",
|
|
"last_name": "Guard",
|
|
"birth_date": "2002-01-01",
|
|
"nationality": "IT",
|
|
"height_cm": Decimal("188.00"),
|
|
"weight_kg": Decimal("82.00"),
|
|
"wingspan_cm": Decimal("194.00"),
|
|
"position": "PG",
|
|
"roles": ["playmaker"],
|
|
"specialties": ["ball handling", "clutch"],
|
|
"contexts": [
|
|
{
|
|
"season": "2025-2026",
|
|
"team": ("Milan Lions", "IT"),
|
|
"competition": "Euro League",
|
|
"stats": {
|
|
"points": Decimal("16.00"),
|
|
"assists": Decimal("8.20"),
|
|
"steals": Decimal("1.90"),
|
|
"turnovers": Decimal("2.40"),
|
|
"blocks": Decimal("0.20"),
|
|
"efg_pct": Decimal("53.40"),
|
|
"ts_pct": Decimal("59.80"),
|
|
"plus_minus": Decimal("4.60"),
|
|
"offensive_rating": Decimal("114.00"),
|
|
"defensive_rating": Decimal("105.00"),
|
|
},
|
|
},
|
|
{
|
|
"season": "2024-2025",
|
|
"team": ("Rome Falcons", "IT"),
|
|
"competition": "Italian Serie A",
|
|
"stats": {
|
|
"points": Decimal("13.20"),
|
|
"assists": Decimal("6.90"),
|
|
"steals": Decimal("1.40"),
|
|
"turnovers": Decimal("2.90"),
|
|
"blocks": Decimal("0.10"),
|
|
"efg_pct": Decimal("49.80"),
|
|
"ts_pct": Decimal("55.10"),
|
|
"plus_minus": Decimal("1.20"),
|
|
"offensive_rating": Decimal("109.00"),
|
|
"defensive_rating": Decimal("108.00"),
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
"full_name": "Luca Wing",
|
|
"first_name": "Luca",
|
|
"last_name": "Wing",
|
|
"birth_date": "1999-02-14",
|
|
"nationality": "IT",
|
|
"height_cm": Decimal("201.00"),
|
|
"weight_kg": Decimal("93.00"),
|
|
"wingspan_cm": Decimal("208.00"),
|
|
"position": "SF",
|
|
"roles": ["shooting wing"],
|
|
"specialties": ["off ball", "clutch"],
|
|
"contexts": [
|
|
{
|
|
"season": "2025-2026",
|
|
"team": ("Madrid Waves", "ES"),
|
|
"competition": "Spanish ACB",
|
|
"stats": {
|
|
"points": Decimal("17.40"),
|
|
"assists": Decimal("2.60"),
|
|
"steals": Decimal("1.30"),
|
|
"turnovers": Decimal("1.70"),
|
|
"blocks": Decimal("0.60"),
|
|
"efg_pct": Decimal("57.20"),
|
|
"ts_pct": Decimal("62.40"),
|
|
"plus_minus": Decimal("3.10"),
|
|
"offensive_rating": Decimal("118.00"),
|
|
"defensive_rating": Decimal("107.00"),
|
|
},
|
|
}
|
|
],
|
|
},
|
|
{
|
|
"full_name": "Niko Anchor",
|
|
"first_name": "Niko",
|
|
"last_name": "Anchor",
|
|
"birth_date": "1998-07-03",
|
|
"nationality": "DE",
|
|
"height_cm": Decimal("211.00"),
|
|
"weight_kg": Decimal("109.00"),
|
|
"wingspan_cm": Decimal("221.00"),
|
|
"position": "C",
|
|
"roles": ["rim protector"],
|
|
"specialties": ["defense", "post"],
|
|
"contexts": [
|
|
{
|
|
"season": "2025-2026",
|
|
"team": ("Berlin Towers", "DE"),
|
|
"competition": "Euro League",
|
|
"stats": {
|
|
"points": Decimal("11.30"),
|
|
"assists": Decimal("1.80"),
|
|
"steals": Decimal("0.90"),
|
|
"turnovers": Decimal("1.80"),
|
|
"blocks": Decimal("2.40"),
|
|
"efg_pct": Decimal("58.30"),
|
|
"ts_pct": Decimal("61.10"),
|
|
"plus_minus": Decimal("5.20"),
|
|
"offensive_rating": Decimal("111.00"),
|
|
"defensive_rating": Decimal("101.00"),
|
|
},
|
|
}
|
|
],
|
|
},
|
|
{
|
|
"full_name": "Sandro Forward",
|
|
"first_name": "Sandro",
|
|
"last_name": "Forward",
|
|
"birth_date": "2001-09-20",
|
|
"nationality": "IT",
|
|
"height_cm": Decimal("206.00"),
|
|
"weight_kg": Decimal("98.00"),
|
|
"wingspan_cm": Decimal("214.00"),
|
|
"position": "PF",
|
|
"roles": ["stretch four"],
|
|
"specialties": ["off ball"],
|
|
"contexts": [
|
|
{
|
|
"season": "2025-2026",
|
|
"team": ("Rome Falcons", "IT"),
|
|
"competition": "Italian Serie A",
|
|
"stats": {
|
|
"points": Decimal("15.10"),
|
|
"assists": Decimal("2.90"),
|
|
"steals": Decimal("0.80"),
|
|
"turnovers": Decimal("1.60"),
|
|
"blocks": Decimal("1.10"),
|
|
"efg_pct": Decimal("56.40"),
|
|
"ts_pct": Decimal("60.20"),
|
|
"plus_minus": Decimal("2.70"),
|
|
"offensive_rating": Decimal("116.00"),
|
|
"defensive_rating": Decimal("109.00"),
|
|
},
|
|
}
|
|
],
|
|
},
|
|
{
|
|
"full_name": "Jalen Spark",
|
|
"first_name": "Jalen",
|
|
"last_name": "Spark",
|
|
"birth_date": "2000-11-11",
|
|
"nationality": "US",
|
|
"height_cm": Decimal("193.00"),
|
|
"weight_kg": Decimal("87.00"),
|
|
"wingspan_cm": Decimal("199.00"),
|
|
"position": "SG",
|
|
"roles": ["6th man"],
|
|
"specialties": ["ball handling", "off ball"],
|
|
"contexts": [
|
|
{
|
|
"season": "2024-2025",
|
|
"team": ("Milan Lions", "IT"),
|
|
"competition": "Italian Serie A",
|
|
"stats": {
|
|
"points": Decimal("18.60"),
|
|
"assists": Decimal("3.40"),
|
|
"steals": Decimal("1.10"),
|
|
"turnovers": Decimal("2.20"),
|
|
"blocks": Decimal("0.30"),
|
|
"efg_pct": Decimal("54.10"),
|
|
"ts_pct": Decimal("58.70"),
|
|
"plus_minus": Decimal("1.80"),
|
|
"offensive_rating": Decimal("113.00"),
|
|
"defensive_rating": Decimal("111.00"),
|
|
},
|
|
}
|
|
],
|
|
},
|
|
]
|