diff --git a/docs/CARS.md b/docs/CARS.md index 12e93c850e..35cd035311 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -188,14 +188,14 @@ A supported vehicle is one that just works when you install a comma device. Ever |Toyota|RAV4 Hybrid 2019-21|All||||| |Toyota|RAV4 Hybrid 2022|All||||| |Toyota|Sienna 2018-20|All|[3](#footnotes)|||| -|Volkswagen|Arteon 2018-22[7](#footnotes)|Driver Assistance||||| -|Volkswagen|Arteon eHybrid 2020-22[7](#footnotes)|Driver Assistance||||| -|Volkswagen|Arteon R 2020-22[7](#footnotes)|Driver Assistance||||| +|Volkswagen|Arteon 2018-22[7,8](#footnotes)|Driver Assistance||||| +|Volkswagen|Arteon eHybrid 2020-22[7,8](#footnotes)|Driver Assistance||||| +|Volkswagen|Arteon R 2020-22[7,8](#footnotes)|Driver Assistance||||| |Volkswagen|Atlas 2018-22[7](#footnotes)|Driver Assistance||||| |Volkswagen|Atlas Cross Sport 2021-22[7](#footnotes)|Driver Assistance||||| |Volkswagen|California 2021[7](#footnotes)|Driver Assistance||||| |Volkswagen|Caravelle 2020[7](#footnotes)|Driver Assistance||||| -|Volkswagen|CC 2018-22[7](#footnotes)|Driver Assistance||||| +|Volkswagen|CC 2018-22[7,8](#footnotes)|Driver Assistance||||| |Volkswagen|e-Golf 2014-20|Driver Assistance||||| |Volkswagen|Golf 2015-20[8](#footnotes)|Driver Assistance||||| |Volkswagen|Golf Alltrack 2015-19|Driver Assistance||||| @@ -206,9 +206,9 @@ A supported vehicle is one that just works when you install a comma device. Ever |Volkswagen|Golf SportsVan 2015-20|Driver Assistance||||| |Volkswagen|Jetta 2018-22[7](#footnotes)|Driver Assistance||||| |Volkswagen|Jetta GLI 2021-22[7](#footnotes)|Driver Assistance||||| -|Volkswagen|Passat 2015-22[7](#footnotes)|Driver Assistance||||| +|Volkswagen|Passat 2015-22[6,7,8](#footnotes)|Driver Assistance||||| |Volkswagen|Passat Alltrack 2015-22[7](#footnotes)|Driver Assistance||||| -|Volkswagen|Passat GTE 2015-22[7](#footnotes)|Driver Assistance||||| +|Volkswagen|Passat GTE 2015-22[7,8](#footnotes)|Driver Assistance||||| |Volkswagen|Polo 2020-22[7](#footnotes)|Driver Assistance||||| |Volkswagen|Polo GTI 2020-22[7](#footnotes)|Driver Assistance||||| |Volkswagen|T-Cross 2021[7](#footnotes)|Driver Assistance||||| diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index 01473e4cc3..015646972d 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -2,7 +2,7 @@ import re from cereal import car from collections import namedtuple -from dataclasses import dataclass +from dataclasses import dataclass, field from enum import Enum from typing import Dict, List, Optional, Tuple, Union, no_type_check @@ -37,13 +37,9 @@ TierColumns = (Column.FSR_LONGITUDINAL, Column.FSR_STEERING, Column.STEERING_TOR CarFootnote = namedtuple("CarFootnote", ["text", "column", "star"], defaults=[None]) -def get_footnote(footnotes: Optional[List[Enum]], column: Column) -> Optional[Enum]: - # Returns applicable footnote given current column - if footnotes is not None: - for fn in footnotes: - if fn.value.column == column: - return fn - return None +def get_footnotes(footnotes: List[Enum], column: Column) -> List[Enum]: + # Returns applicable footnotes given current column + return [fn for fn in footnotes if fn.value.column == column] def split_name(name: str) -> Tuple[str, str, str]: @@ -61,7 +57,7 @@ class CarInfo: name: str package: str video_link: Optional[str] = None - footnotes: Optional[List[Enum]] = None + footnotes: List[Enum] = field(default_factory=list) min_steer_speed: Optional[float] = None min_enable_speed: Optional[float] = None harness: Optional[Enum] = None @@ -106,9 +102,9 @@ class CarInfo: self.all_footnotes = all_footnotes for column in StarColumns: # Demote if footnote specifies a star - footnote = get_footnote(self.footnotes, column) - if footnote is not None and footnote.value.star is not None: - self.row[column] = footnote.value.star + for fn in get_footnotes(self.footnotes, column): + if fn.value.star is not None: + self.row[column] = fn.value.star # openpilot ACC star doesn't count for tiers full_stars = [s for col, s in self.row.items() if col in TierColumns].count(Star.FULL) @@ -129,9 +125,10 @@ class CarInfo: elif column == Column.MODEL and len(self.years): item += f" {self.years}" - footnote = get_footnote(self.footnotes, column) - if footnote is not None: - item += footnote_tag.format(self.all_footnotes[footnote]) + footnotes = get_footnotes(self.footnotes, column) + if len(footnotes): + sups = sorted([self.all_footnotes[fn] for fn in footnotes]) + item += footnote_tag.format(f'{",".join(map(str, sups))}') return item