from pydantic import BaseModel from typing import List, Optional from models.item import Item from models.constraint import Constraint from models.irt_model import IRTModel from models.objective_function import ObjectiveFunction from models.advanced_options import AdvancedOptions class SolverRun(BaseModel): items: List[Item] constraints: List[Constraint] irt_model: IRTModel objective_function: ObjectiveFunction total_form_items: int total_forms: int theta_cut_score: float = 0.00 advanced_options: Optional[AdvancedOptions] engine: str def get_item(self, item_id): for item in self.items: if str(item.id) == item_id: return item return False def remove_items(self, items): self.items = [item for item in self.items if item not in items] return True