Source code for suboptimumg.yaml

import yaml

from .compsim import Competition
from .compsim.models import CompetitionScoring
from .track import CornerListInput, from_corners
from .vehicle import Car
from .vehicle.models import VehicleModel


def _competition_from_car_and_comp_dict(car: Car, comp_dict: dict) -> Competition:
    """
    Create a Competition object from a Car instance and competition configuration dictionary.

    Parameters
    ----------
    car : Car

    comp_dict : dict
        The competition configuration dictionary.

    Returns
    -------
    Competition
    """
    distance_step = comp_dict["simulation"]["distance_step"]

    accel_config = comp_dict["tracks"]["accel"]
    accel_config["distance_step"] = distance_step
    accel_track = from_corners(CornerListInput.model_validate(accel_config))

    skidpad_config = comp_dict["tracks"]["skidpad"]
    skidpad_config["distance_step"] = distance_step
    skidpad_track = from_corners(CornerListInput.model_validate(skidpad_config))

    autoX_config = comp_dict["tracks"]["autoX"]
    autoX_config["distance_step"] = distance_step
    autoX_track = from_corners(CornerListInput.model_validate(autoX_config))

    endurance_config = comp_dict["tracks"]["endurance"]
    endurance_config["distance_step"] = distance_step
    endurance_track = from_corners(CornerListInput.model_validate(endurance_config))

    scoring = CompetitionScoring.model_validate(comp_dict["scoring"])

    return Competition(
        car,
        accel_track,
        skidpad_track,
        autoX_track,
        endurance_track,
        scoring,
    )


[docs] def load_car_from_yaml(yaml_path: str) -> Car: """ Loads a vehicle configuration from a YAML file and returns a Car instance. Parameters ---------- yaml_path : str The file path to the YAML configuration file. Returns ------- Car """ with open(yaml_path, "r") as file: config = yaml.safe_load(file) vehicle_model = VehicleModel.model_validate(config) return Car(vehicle_model=vehicle_model)
[docs] def load_competition_from_yaml(car_yaml_path: str, comp_yaml_path: str) -> Competition: """ Create a Competition object from YAML configuration files. Parameters ---------- car_yaml_path : str The file path to the vehicle configuration YAML file. comp_yaml_path : str The file path to the competition configuration YAML file. Returns ------- Competition """ car = load_car_from_yaml(car_yaml_path) with open(comp_yaml_path, "r") as file: comp_config = yaml.safe_load(file) return _competition_from_car_and_comp_dict(car, comp_config)
[docs] def load_competition_from_dicts(car_config: dict, comp_config: dict) -> Competition: """ Create a Competition object from configuration dictionaries. Parameters ---------- car_config : dict The vehicle configuration dictionary. comp_config : dict The competition configuration dictionary. Returns ------- Competition """ vehicle_model = VehicleModel.model_validate(car_config) car = Car(vehicle_model=vehicle_model) return _competition_from_car_and_comp_dict(car, comp_config)