F1 circuit layouts with year-by-year SVGs — manually traced track variations
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

39 行
1006B

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