From 59cc222792c7e484ee73b9bef5b24e47663e2b11 Mon Sep 17 00:00:00 2001
From: Jason Young <jyoung8607@gmail.com>
Date: Fri, 27 Sep 2024 19:16:58 -0400
Subject: [PATCH] more refactor/cleanup

---
 opendbc/car/__init__.py         | 14 ++++++++++++--
 opendbc/car/body/values.py      |  2 +-
 opendbc/car/docs_definitions.py |  2 --
 opendbc/car/other_cars.py       | 27 +++++----------------------
 4 files changed, 18 insertions(+), 27 deletions(-)

diff --git a/opendbc/car/__init__.py b/opendbc/car/__init__.py
index 455d8c3803..974e5865e8 100644
--- a/opendbc/car/__init__.py
+++ b/opendbc/car/__init__.py
@@ -3,12 +3,12 @@
 from collections import namedtuple
 from dataclasses import dataclass
 from enum import IntFlag, ReprEnum, EnumType
-from dataclasses import replace
+from dataclasses import replace, field
 
 from panda import uds
 from opendbc.car import structs
 from opendbc.car.can_definitions import CanData
-from opendbc.car.docs_definitions import CarDocs
+from opendbc.car.docs_definitions import CarDocs, OtherCarDocs
 from opendbc.car.common.numpy_fast import clip, interp
 
 # set up logging
@@ -321,3 +321,13 @@ def create_dbc_map(cls) -> dict[str, DbcDict]:
   @classmethod
   def with_flags(cls, flags: IntFlag) -> set['Platforms']:
     return {p for p in cls if p.config.flags & flags}
+
+
+
+@dataclass(order=True)
+class OtherPlatformConfig(PlatformConfig):
+  car_docs: list[OtherCarDocs]
+  specs: CarSpecs | None = None
+  dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('unknown', None))
+  flags = 0
+  platform_str = "Unknown"
diff --git a/opendbc/car/body/values.py b/opendbc/car/body/values.py
index 8a546ac383..3c221548c3 100644
--- a/opendbc/car/body/values.py
+++ b/opendbc/car/body/values.py
@@ -1,6 +1,6 @@
 from opendbc.car import CarSpecs, PlatformConfig, Platforms, dbc_dict
 from opendbc.car.structs import CarParams
-from opendbc.car.docs_definitions import CarDocs, SupportType
+from opendbc.car.docs_definitions import CarDocs
 from opendbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries
 
 Ecu = CarParams.Ecu
diff --git a/opendbc/car/docs_definitions.py b/opendbc/car/docs_definitions.py
index d463a81f20..8bf658dc1a 100644
--- a/opendbc/car/docs_definitions.py
+++ b/opendbc/car/docs_definitions.py
@@ -4,8 +4,6 @@
 from dataclasses import dataclass, field
 from enum import Enum
 
-from mypy.typeops import supported_self_type
-
 from opendbc.car.common.conversions import Conversions as CV
 from opendbc.car.structs import CarParams
 
diff --git a/opendbc/car/other_cars.py b/opendbc/car/other_cars.py
index fe18ed4ea8..14584e485b 100644
--- a/opendbc/car/other_cars.py
+++ b/opendbc/car/other_cars.py
@@ -1,33 +1,16 @@
-from dataclasses import dataclass, field
+from dataclasses import dataclass
 from enum import Enum
 
-from opendbc.car import dbc_dict, structs, CarSpecs, DbcDict, PlatformConfig, Platforms
+from opendbc.car import structs, Platforms, OtherPlatformConfig
 from opendbc.car.docs_definitions import CarFootnote, OtherCarDocs, Column, SupportType
 
 
-@dataclass
-class OtherPlatformConfig(PlatformConfig):
-  dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('unknown', None))
-
-
-@dataclass(frozen=True, kw_only=True)
-class OtherCarSpecs(CarSpecs):
-  # FIXME: Need to be able to print these as N/A or Unknown or whatever, try to eliminate entirely
-  steerRatio: float = 0.
-
-
 @dataclass
 class CommunityCarDocs(OtherCarDocs):
   def init_make(self, CP: structs.CarParams):
     self.support_type = SupportType.COMMUNITY
 
 
-@dataclass
-class IncompatibleCarDocs(OtherCarDocs):
-  def init_make(self, CP: structs.CarParams):
-    self.support_type = SupportType.INCOMPATIBLE
-
-
 @dataclass
 class ToyotaSecurityCarDocs(OtherCarDocs):
   def init_make(self, CP: structs.CarParams):
@@ -57,7 +40,7 @@ class CAR(Platforms):
       CommunityCarDocs("Hyundai Palisade 2023-24", package="All", footnotes=[Footnote.UNDER_REVIEW]),
       CommunityCarDocs("Kia Telluride 2023-24", package="All", footnotes=[Footnote.UNDER_REVIEW]),
     ],
-    OtherCarSpecs(mass=0., wheelbase=0.),  # TODO: Don't require CarSpecs for unsupported cars
+    None,
   )
 
   TOYOTA_SECURITY_CARS = OtherPlatformConfig(
@@ -76,7 +59,7 @@ class CAR(Platforms):
       ToyotaSecurityCarDocs("Toyota Tundra 2022-25"),
       ToyotaSecurityCarDocs("Toyota Venza 2021-25"),
     ],
-    OtherCarSpecs(mass=0., wheelbase=0.),  # TODO: Don't require CarSpecs for unsupported cars
+    None,
   )
 
   AUDI_FLEXRAY = OtherPlatformConfig(
@@ -85,5 +68,5 @@ class CAR(Platforms):
       FlexRayCarDocs("Audi A5 2016-24", package="All"),
       FlexRayCarDocs("Audi Q5 2017-24", package="All"),
     ],
-    OtherCarSpecs(mass=0., wheelbase=0.),  # TODO: Don't require CarSpecs for unsupported cars
+    None,
   )