Files
f1-circuits/models/geo_json/properties.py
T

30 lines
926 B
Python

from dataclasses import dataclass
from typing import Optional, Dict, Any, TYPE_CHECKING
if TYPE_CHECKING:
from models.circuit import Circuit
@dataclass
class GeoJSONProperties:
id: str
country: str
locality: str
circuit: str
length: Optional[int] = None
altitude: Optional[int] = None
rotation: Optional[float] = None
direction: Optional[str] = None
fastest_laptime: Optional[float] = None
@classmethod
def from_dict(cls, circuit: 'Circuit', data: Dict[str, Any]) -> 'GeoJSONProperties':
return cls(
id=data.get("id"),
country=circuit.locality.country.name,
locality=circuit.locality.name,
circuit=circuit.name,
**{k: v for k, v in data.items() if
k in cls.__annotations__ and k not in ['id', 'country', 'locality',
'circuit']}
)