car: use default_factory for mutable fields in dataclasses (#28669)

* call me

* copy
old-commit-hash: e85acfa365
beeps
Maxime Desroches 2 years ago committed by GitHub
parent 82eb958e41
commit 585921ffad
  1. 4
      selfdrive/car/chrysler/values.py
  2. 6
      selfdrive/car/docs_definitions.py
  3. 4
      selfdrive/car/ford/values.py
  4. 4
      selfdrive/car/mazda/values.py
  5. 4
      selfdrive/car/nissan/values.py
  6. 4
      selfdrive/car/subaru/values.py
  7. 4
      selfdrive/car/toyota/values.py
  8. 4
      selfdrive/car/volkswagen/values.py

@ -1,5 +1,5 @@
from enum import IntFlag
from dataclasses import dataclass
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Union
from cereal import car
@ -60,7 +60,7 @@ RAM_CARS = RAM_DT | RAM_HD
@dataclass
class ChryslerCarInfo(CarInfo):
package: str = "Adaptive Cruise Control (ACC)"
car_parts: CarParts = CarParts.common([CarHarness.fca])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.fca]))
CAR_INFO: Dict[str, Optional[Union[ChryslerCarInfo, List[ChryslerCarInfo]]]] = {

@ -1,5 +1,6 @@
import re
from collections import namedtuple
import copy
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List, Optional, Tuple, Union
@ -144,6 +145,9 @@ DEFAULT_CAR_PARTS: List[EnumBase] = [Device.three]
class CarParts:
parts: List[EnumBase] = field(default_factory=list)
def __call__(self):
return copy.deepcopy(self)
@classmethod
def common(cls, add: List[EnumBase] = None, remove: List[EnumBase] = None):
p = [part for part in (add or []) + DEFAULT_CAR_PARTS if part not in (remove or [])]
@ -225,7 +229,7 @@ class CarInfo:
auto_resume: Optional[bool] = None
# all the parts needed for the supported car
car_parts: CarParts = CarParts()
car_parts: CarParts = field(default_factory=CarParts)
def init(self, CP: car.CarParams, all_footnotes: Dict[Enum, int]):
self.car_name = CP.carName

@ -1,5 +1,5 @@
from collections import defaultdict
from dataclasses import dataclass
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List, Set, Union
@ -70,7 +70,7 @@ class Footnote(Enum):
@dataclass
class FordCarInfo(CarInfo):
package: str = "Co-Pilot360 Assist+"
car_parts: CarParts = CarParts.common([CarHarness.ford_q3])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.ford_q3]))
def init_make(self, CP: car.CarParams):
if CP.carFingerprint in (CAR.BRONCO_SPORT_MK1, CAR.MAVERICK_MK1):

@ -1,4 +1,4 @@
from dataclasses import dataclass
from dataclasses import dataclass, field
from typing import Dict, List, Union
from cereal import car
@ -37,7 +37,7 @@ class CAR:
@dataclass
class MazdaCarInfo(CarInfo):
package: str = "All"
car_parts: CarParts = CarParts.common([CarHarness.mazda])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda]))
CAR_INFO: Dict[str, Union[MazdaCarInfo, List[MazdaCarInfo]]] = {

@ -1,4 +1,4 @@
from dataclasses import dataclass
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Union
from cereal import car
@ -33,7 +33,7 @@ class CAR:
@dataclass
class NissanCarInfo(CarInfo):
package: str = "ProPILOT Assist"
car_parts: CarParts = CarParts.common([CarHarness.nissan_a])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.nissan_a]))
CAR_INFO: Dict[str, Optional[Union[NissanCarInfo, List[NissanCarInfo]]]] = {

@ -1,4 +1,4 @@
from dataclasses import dataclass
from dataclasses import dataclass, field
from enum import IntFlag
from typing import Dict, List, Union
@ -59,7 +59,7 @@ class CAR:
@dataclass
class SubaruCarInfo(CarInfo):
package: str = "EyeSight Driver Assistance"
car_parts: CarParts = CarParts.common([CarHarness.subaru_a])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.subaru_a]))
CAR_INFO: Dict[str, Union[SubaruCarInfo, List[SubaruCarInfo]]] = {

@ -1,5 +1,5 @@
from collections import defaultdict
from dataclasses import dataclass
from dataclasses import dataclass, field
from enum import Enum, IntFlag
from typing import Dict, List, Union
@ -102,7 +102,7 @@ class Footnote(Enum):
@dataclass
class ToyotaCarInfo(CarInfo):
package: str = "All"
car_parts: CarParts = CarParts.common([CarHarness.toyota])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.toyota]))
CAR_INFO: Dict[str, Union[ToyotaCarInfo, List[ToyotaCarInfo]]] = {

@ -1,5 +1,5 @@
from collections import defaultdict, namedtuple
from dataclasses import dataclass
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List, Union
@ -176,7 +176,7 @@ class Footnote(Enum):
@dataclass
class VWCarInfo(CarInfo):
package: str = "Adaptive Cruise Control (ACC) & Lane Assist"
car_parts: CarParts = CarParts.common([CarHarness.j533])
car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.j533]))
def init_make(self, CP: car.CarParams):
self.footnotes.append(Footnote.VW_EXP_LONG)

Loading…
Cancel
Save