File size: 737 Bytes
a7caaff 85b7ac8 4b07aaf 85b7ac8 4b07aaf 85b7ac8 4b07aaf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | """Base task class."""
import random
from typing import Dict, Optional
from server.models import TaskDifficulty
class BaseTask:
NAME = "Base Task"
DESCRIPTION = "Base task"
DIFFICULTY = TaskDifficulty.EASY
AVAILABLE_SECRETS: list = []
SCENARIOS: list = []
def load_scenario(self, scenario_id: Optional[str] = None) -> Dict:
if not self.SCENARIOS:
raise ValueError(f"Task {self.__class__.__name__} has no scenarios defined")
if scenario_id:
for scenario in self.SCENARIOS:
if scenario["id"] == scenario_id:
return scenario
raise ValueError(f"Unknown scenario: {scenario_id}")
return random.choice(self.SCENARIOS)
|