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)