async def score_subtasks(
    client: PistonClient, subtasks: list[dict], submission: str, skip_mode: bool = True
) -> list[SubtaskResult]:
    """
    Scores multiple subtasks for a submission.

    Args:
        client: PistonClient instance for executing code
        subtasks: List of dictionaries containing subtask configurations
        submission: Source code of the submission
        skip_mode: If True, evaluates test by test and stops after the first failure. Otherwise, runs all tests in parallel. Should be True when evaluating a large number of submissions.

    Returns:
        list[SubtaskResult]: Results for all subtasks
    """
    # avoid rerunning tests present in multiple subtasks
    test_case_run_cache = {}

    return [await score_subtask(client, subtask, submission, test_case_run_cache, skip_mode) for subtask in subtasks]

    Scores multiple subtasks for a submission.

    Args:
        client: PistonClient instance for executing code
        subtasks: List of dictionaries containing subtask configurations
        submission: Source code of the submission
        skip_mode: If True, evaluates test by test and stops after the first failure. Otherwise, runs all tests in parallel. Should be True when evaluating a large number of submissions.

    Returns:
        list[SubtaskResult]: Results for all subtasks
    
src/open_r1/utils/competitive_programming/ioi_scoring.py