// TODO: Remove the ability to have null values when benchmark implementation is complete import 'dart:convert'; /// TaskInfo holds information related to a specific benchmark task. /// /// The class encapsulates various attributes of a task, such as the path to the data file, /// whether the task is a regression task, the categories it falls under, and specific task details /// like the task description, expected answer, and so on. class TaskInfo { /// The path to the data file associated with the task. /// This is typically a JSON file containing the dataset or resources needed for the task. final String dataPath; /// A boolean indicating whether the task is a regression task. final bool isRegression; /// A list of categories to which the task belongs. final List category; /// The specific task that needs to be performed. final String task; /// The expected answer for the task. final String answer; /// A description providing details about the task. final String description; /// Constructs a new TaskInfo instance. /// /// [dataPath]: The path to the data file for the task. /// [isRegression]: A boolean indicating if the task is a regression task. /// [category]: A list of categories to which the task belongs. /// [task]: The specific task to be performed. /// [answer]: The expected answer for the task. /// [description]: A description of the task. TaskInfo({ required this.dataPath, required this.isRegression, required this.category, required this.task, required this.answer, required this.description, }); /// Creates a TaskInfo instance from a map. /// /// [json]: A map containing key-value pairs corresponding to TaskInfo fields. /// /// Returns a new TaskInfo populated with values from the map. factory TaskInfo.fromJson(Map json) => TaskInfo( dataPath: json['data_path'] ?? 'placeholder', isRegression: json['is_regression'] ?? false, category: List.from(json['category']), task: json['task'] ?? 'placeholder', answer: json['answer'] ?? 'placeholder', description: json['description'] ?? 'placeholder', ); /// Converts the TaskInfo instance to a map. /// /// Returns a map containing key-value pairs corresponding to TaskInfo fields. Map toJson() => { 'data_path': dataPath, 'is_regression': isRegression, 'category': jsonEncode(category), 'task': task, 'answer': answer, 'description': description, }; }