F1 circuit layouts with year-by-year SVGs — manually traced track variations
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
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()