-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAdpRecord.py
45 lines (42 loc) · 1.51 KB
/
AdpRecord.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Optional
@dataclass(kw_only=True)
class AdpRecord:
fantasy_pros_player_id: int
yahoo_player_id: str
cbs_player_id: str
sportsradar_id: str
player_name: str
rank_ecr: int
rank_min: int
rank_max: int
rank_avg: int
rank_std: float
tier: int
positional_rank: str
@staticmethod
def from_dict(record_dict: dict) -> Optional[AdpRecord]:
if record_dict is None:
return None
return AdpRecord(
fantasy_pros_player_id=record_dict.get("player_id"),
yahoo_player_id=record_dict.get("player_yahoo_id"),
cbs_player_id=record_dict.get("cbs_player_id"),
sportsradar_id=record_dict.get("sportsdata_id"),
player_name=record_dict.get("player_name"),
rank_ecr=record_dict.get("rank_ecr"),
rank_min=record_dict.get("rank_min"),
rank_max=record_dict.get("rank_max"),
rank_avg=record_dict.get("rank_ave"),
rank_std=record_dict.get("rank_std"),
tier=record_dict.get("tier"),
positional_rank=record_dict.get("pos_rank"),
)
@staticmethod
def dict_by_id(record_dict_list: list) -> dict[str, AdpRecord]:
records_by_id = dict()
for record_dict in record_dict_list:
record = AdpRecord.from_dict(record_dict=record_dict)
records_by_id[record.sportsradar_id] = record
return records_by_id