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 typing import Dict
from cereal import car from cereal import car
@ -21,7 +22,7 @@ class CarControllerParams:
pass pass
class CAR: class CAR(StrEnum):
BODY = "COMMA BODY" BODY = "COMMA BODY"

@ -66,9 +66,8 @@ def load_interfaces(brand_names):
def _get_interface_names() -> Dict[str, List[str]]: def _get_interface_names() -> Dict[str, List[str]]:
# returns a dict of brand name and its respective models # returns a dict of brand name and its respective models
brand_names = {} brand_names = {}
for brand_name, model_names in get_interface_attr("CAR").items(): for brand_name, brand_models 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.value for model in brand_models]
brand_names[brand_name] = model_names
return brand_names return brand_names

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

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

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

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

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

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

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

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

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

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

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

@ -1,6 +1,6 @@
from collections import defaultdict, namedtuple from collections import defaultdict, namedtuple
from dataclasses import dataclass, field from dataclasses import dataclass, field
from enum import Enum from enum import Enum, StrEnum
from typing import Dict, List, Union from typing import Dict, List, Union
from cereal import car from cereal import car
@ -114,7 +114,7 @@ class CANBUS:
# FW_VERSIONS for that existing CAR. # FW_VERSIONS for that existing CAR.
# Exception: SEAT Leon and SEAT Ateca share a chassis code # 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 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 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 CRAFTER_MK2 = "VOLKSWAGEN CRAFTER 2ND GEN" # Chassis SY/SZ, Mk2 VW Crafter, VW Grand California, MAN TGE

Loading…
Cancel
Save