Use StrEnum for car classes (#30114)

* str enum

* import sort

* fix car helpers

* fix that

* fix static analysis
pull/30116/head
Justin Newberry 2 years ago committed by GitHub
parent 205cf12258
commit 6ae465e4af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      selfdrive/car/body/values.py
  2. 5
      selfdrive/car/car_helpers.py
  3. 4
      selfdrive/car/chrysler/values.py
  4. 4
      selfdrive/car/ford/values.py
  5. 4
      selfdrive/car/gm/values.py
  6. 4
      selfdrive/car/honda/values.py
  7. 8
      selfdrive/car/hyundai/values.py
  8. 3
      selfdrive/car/mazda/values.py
  9. 3
      selfdrive/car/mock/values.py
  10. 3
      selfdrive/car/nissan/values.py
  11. 4
      selfdrive/car/subaru/values.py
  12. 3
      selfdrive/car/tesla/values.py
  13. 4
      selfdrive/car/toyota/values.py
  14. 4
      selfdrive/car/volkswagen/values.py

@ -1,3 +1,4 @@
from enum import StrEnum
from typing import Dict
from cereal import car
@ -21,7 +22,7 @@ class CarControllerParams:
pass
class CAR:
class CAR(StrEnum):
BODY = "COMMA BODY"

@ -66,9 +66,8 @@ def load_interfaces(brand_names):
def _get_interface_names() -> Dict[str, List[str]]:
# returns a dict of brand name and its respective models
brand_names = {}
for brand_name, model_names in get_interface_attr("CAR").items():
model_names = [getattr(model_names, c) for c in model_names.__dict__.keys() if not c.startswith("__")]
brand_names[brand_name] = model_names
for brand_name, brand_models in get_interface_attr("CAR").items():
brand_names[brand_name] = [model.value for model in brand_models]
return brand_names

@ -1,5 +1,5 @@
# ruff: noqa: E501
from enum import IntFlag
from enum import IntFlag, StrEnum
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Union
@ -16,7 +16,7 @@ class ChryslerFlags(IntFlag):
HIGHER_MIN_STEERING_SPEED = 1
class CAR:
class CAR(StrEnum):
# Chrysler
PACIFICA_2017_HYBRID = "CHRYSLER PACIFICA HYBRID 2017"
PACIFICA_2018_HYBRID = "CHRYSLER PACIFICA HYBRID 2018"

@ -1,6 +1,6 @@
from collections import defaultdict
from dataclasses import dataclass, field
from enum import Enum
from enum import Enum, StrEnum
from typing import Dict, List, Union
from cereal import car
@ -40,7 +40,7 @@ class CarControllerParams:
pass
class CAR:
class CAR(StrEnum):
BRONCO_SPORT_MK1 = "FORD BRONCO SPORT 1ST GEN"
ESCAPE_MK4 = "FORD ESCAPE 4TH GEN"
EXPLORER_MK6 = "FORD EXPLORER 6TH GEN"

@ -1,7 +1,7 @@
# ruff: noqa: E501
from collections import defaultdict
from dataclasses import dataclass
from enum import Enum
from enum import Enum, StrEnum
from typing import Dict, List, Union
from cereal import car
@ -61,7 +61,7 @@ class CarControllerParams:
self.BRAKE_LOOKUP_V = [self.MAX_BRAKE, 0.]
class CAR:
class CAR(StrEnum):
HOLDEN_ASTRA = "HOLDEN ASTRA RS-V BK 2017"
VOLT = "CHEVROLET VOLT PREMIER 2017"
CADILLAC_ATS = "CADILLAC ATS Premium Performance 2018"

@ -1,5 +1,5 @@
from dataclasses import dataclass
from enum import Enum, IntFlag
from enum import Enum, IntFlag, StrEnum
from typing import Dict, List, Optional, Union
from cereal import car
@ -72,7 +72,7 @@ VISUAL_HUD = {
}
class CAR:
class CAR(StrEnum):
ACCORD = "HONDA ACCORD 2018"
ACCORDH = "HONDA ACCORD HYBRID 2018"
CIVIC = "HONDA CIVIC 2016"

@ -1,7 +1,7 @@
# ruff: noqa: E501
import re
from dataclasses import dataclass
from enum import Enum, IntFlag
from enum import Enum, IntFlag, StrEnum
from typing import Dict, List, Optional, Set, Tuple, Union
from cereal import car
@ -67,7 +67,7 @@ class HyundaiFlags(IntFlag):
CANFD_HDA2_ALT_STEERING = 512
class CAR:
class CAR(StrEnum):
# Hyundai
AZERA_6TH_GEN = "HYUNDAI AZERA 6TH GEN"
AZERA_HEV_6TH_GEN = "HYUNDAI AZERA HYBRID 6TH GEN"
@ -400,8 +400,8 @@ def match_fw_to_car_fuzzy(live_fw_versions) -> Set[str]:
# to distinguish between hybrid and ICE. All EVs so far are either exclusively
# electric or specify electric in the platform code.
# TODO: whitelist platforms that we've seen hybrid and ICE versions of that have these specifiers
fuzzy_platform_blacklist = set(CANFD_CAR - EV_CAR)
candidates = set()
fuzzy_platform_blacklist = {str(car) for car in set(CANFD_CAR - EV_CAR)}
candidates: Set[str] = set()
for candidate, fws in FW_VERSIONS.items():
# Keep track of ECUs which pass all checks (platform codes, within date range)

@ -1,4 +1,5 @@
from dataclasses import dataclass, field
from enum import StrEnum
from typing import Dict, List, Union
from cereal import car
@ -25,7 +26,7 @@ class CarControllerParams:
pass
class CAR:
class CAR(StrEnum):
CX5 = "MAZDA CX-5"
CX9 = "MAZDA CX-9"
MAZDA3 = "MAZDA 3"

@ -1,9 +1,10 @@
from enum import StrEnum
from typing import Dict, List, Optional, Union
from openpilot.selfdrive.car.docs_definitions import CarInfo
class CAR:
class CAR(StrEnum):
MOCK = 'mock'

@ -1,5 +1,6 @@
# ruff: noqa: E501
from dataclasses import dataclass, field
from enum import StrEnum
from typing import Dict, List, Optional, Union
from cereal import car
@ -21,7 +22,7 @@ class CarControllerParams:
pass
class CAR:
class CAR(StrEnum):
XTRAIL = "NISSAN X-TRAIL 2017"
LEAF = "NISSAN LEAF 2018"
# Leaf with ADAS ECU found behind instrument cluster instead of glovebox

@ -1,5 +1,5 @@
from dataclasses import dataclass, field
from enum import Enum, IntFlag
from enum import Enum, IntFlag, StrEnum
from typing import Dict, List, Union
from cereal import car
@ -63,7 +63,7 @@ class CanBus:
camera = 2
class CAR:
class CAR(StrEnum):
# Global platform
ASCENT = "SUBARU ASCENT LIMITED 2019"
ASCENT_2023 = "SUBARU ASCENT 2023"

@ -1,5 +1,6 @@
# ruff: noqa: E501
from collections import namedtuple
from enum import StrEnum
from typing import Dict, List, Union
from cereal import car
@ -12,7 +13,7 @@ Ecu = car.CarParams.Ecu
Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values'])
class CAR:
class CAR(StrEnum):
AP1_MODELS = 'TESLA AP1 MODEL S'
AP2_MODELS = 'TESLA AP2 MODEL S'

@ -1,7 +1,7 @@
import re
from collections import defaultdict
from dataclasses import dataclass, field
from enum import Enum, IntFlag
from enum import Enum, IntFlag, StrEnum
from typing import Dict, List, Set, Union
from cereal import car
@ -46,7 +46,7 @@ class ToyotaFlags(IntFlag):
DISABLE_RADAR = 4
class CAR:
class CAR(StrEnum):
# Toyota
ALPHARD_TSS2 = "TOYOTA ALPHARD 2020"
ALPHARDH_TSS2 = "TOYOTA ALPHARD HYBRID 2021"

@ -1,6 +1,6 @@
from collections import defaultdict, namedtuple
from dataclasses import dataclass, field
from enum import Enum
from enum import Enum, StrEnum
from typing import Dict, List, Union
from cereal import car
@ -114,7 +114,7 @@ class CANBUS:
# FW_VERSIONS for that existing CAR.
# Exception: SEAT Leon and SEAT Ateca share a chassis code
class CAR:
class CAR(StrEnum):
ARTEON_MK1 = "VOLKSWAGEN ARTEON 1ST GEN" # Chassis AN, Mk1 VW Arteon and variants
ATLAS_MK1 = "VOLKSWAGEN ATLAS 1ST GEN" # Chassis CA, Mk1 VW Atlas and Atlas Cross Sport
CRAFTER_MK2 = "VOLKSWAGEN CRAFTER 2ND GEN" # Chassis SY/SZ, Mk2 VW Crafter, VW Grand California, MAN TGE

Loading…
Cancel
Save