F1 circuit layouts with year-by-year SVGs — manually traced track variations
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

38 Zeilen
1.0KB

  1. from dataclasses import dataclass
  2. from typing import TYPE_CHECKING
  3. from .circuit import Circuit
  4. if TYPE_CHECKING:
  5. from .country import Country
  6. @dataclass
  7. class Locality:
  8. slug: str
  9. name: str
  10. country: 'Country'
  11. circuits: dict[str, Circuit]
  12. def to_dict(self) -> dict:
  13. return {
  14. "slug": self.slug,
  15. "name": self.name,
  16. "circuits": {k: v.to_dict() for k, v in self.circuits.items()},
  17. }
  18. @classmethod
  19. def from_dict(cls, country: 'Country', slug: str, data: dict):
  20. locality = cls(
  21. slug=slug,
  22. name=data["name"],
  23. country=country,
  24. circuits={}
  25. )
  26. locality.circuits = {circuit_slug: Circuit.from_dict(locality, circuit_slug, circuit_data) for
  27. circuit_slug, circuit_data in data["circuits"].items()}
  28. return locality
  29. def load_geo_json_data(self):
  30. """Load data for all circuits"""
  31. for circuit in self.circuits.values():
  32. circuit.load_geo_json_data()