From 705843a65ff36dbc2009f7097ee35e1a74636c18 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 11 Mar 2022 22:46:07 -0800 Subject: [PATCH] clean up --- docs/CARS_template.md | 4 ++-- docs/cars.py | 25 +++++++++---------------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/docs/CARS_template.md b/docs/CARS_template.md index 213140d9fe..f3ae0fad20 100644 --- a/docs/CARS_template.md +++ b/docs/CARS_template.md @@ -16,10 +16,10 @@ Tier Criteria: **All supported cars can move between the tiers as support changes.** -{% for tier, categories, cars in tiers %} +{% for tier, cars in tiers %} ## {{tier}} Cars -|{{categories | join('|')}}| +|{{columns | join('|')}}| |---|---|---|:---:|:---:|:---:|:---:|:---:| {% for car in cars %} |{{car | join('|')}}| diff --git a/docs/cars.py b/docs/cars.py index 36b796bc18..d5e007ab6d 100755 --- a/docs/cars.py +++ b/docs/cars.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 from collections import defaultdict, namedtuple from enum import Enum +import jinja2 import os +from sortedcontainers import SortedList from typing import Dict -import jinja2 from common.basedir import BASEDIR from common.params import Params @@ -137,7 +138,8 @@ class Car: def get_tiered_cars(): - tiered_cars = defaultdict(list) + # Keep track of cars sorted by make, model name, and year + tiered_cars = {tier: SortedList(key=lambda car: car.make + car.model) for tier in Tier} for _, models in get_interface_attr("CAR_INFO").items(): for model, car_info in models.items(): # Hyundai exception: all have openpilot longitudinal @@ -154,28 +156,19 @@ def get_tiered_cars(): for _car_info in car_info: car = Car(_car_info, CP) - tiered_cars[car.tier].append(car) + tiered_cars[car.tier].add(car) - return dict(tiered_cars) + # Return tier name and car rows + for tier, cars in tiered_cars.items(): + yield [tier.name.title(), map(lambda car: car.row, cars)] def generate_cars_md(tiered_cars): - # make global docs directory? template_fn = os.path.join(BASEDIR, "docs", "CARS_template.md") with open(template_fn, "r") as f: template = jinja2.Template(f.read(), trim_blocks=True, lstrip_blocks=True) # TODO: remove lstrip_blocks if not needed - tiers = [] - for tier in Tier: - # Sort by make, model name, and year - cars = sorted(tiered_cars[tier], key=lambda car: car.make + car.model) - tiers.append([ - tier.name.title(), - [column.value for column in Column], - list(map(lambda car: car.row, cars)) - ]) - - return template.render(tiers=tiers) + return template.render(tiers=tiered_cars, columns=[column.value for column in Column]) if __name__ == "__main__":