proper typing and bundle first ordering

This commit is contained in:
Josh Burman
2022-04-27 15:46:23 +00:00
parent c7da2862b2
commit a919530cab
4 changed files with 19 additions and 8 deletions

View File

@ -14,7 +14,7 @@ from models.advanced_options import AdvancedOptions
class SolverRun(BaseModel):
items: List[Item] = []
bundles: list[Bundle] = []
bundles: List[Bundle] = []
constraints: List[Constraint]
irt_model: IRTModel
objective_function: ObjectiveFunction
@ -40,7 +40,7 @@ class SolverRun(BaseModel):
if type == constraint.reference_attribute.type:
return constraint
def remove_items(self, items: list[Item]) -> bool:
def remove_items(self, items: List[Item]) -> bool:
self.items = [item for item in self.items if item not in items]
return True
@ -100,7 +100,7 @@ class SolverRun(BaseModel):
return next((constraint for constraint in self.constraints
if constraint.reference_attribute.id == name), None)
def unbundled_items(self) -> list:
def unbundled_items(self) -> List[Item]:
# since the only bundles are based on passage id currently
# in the future when we have more than just passage based bundles
# we'll need to develop a more sophisticated way of handling this concern
@ -113,7 +113,7 @@ class SolverRun(BaseModel):
else:
return self.items
def select_items_by_percent(self, percent: int) -> list[Item]:
def select_items_by_percent(self, percent: int) -> List[Item]:
items = self.unbundled_items()
total_items = len(items)
selected_items_amount = round(total_items - (total_items *
@ -121,7 +121,7 @@ class SolverRun(BaseModel):
return random.sample(items, selected_items_amount)
def select_bundles_by_percent(self, percent: int) -> list[Bundle]:
def select_bundles_by_percent(self, percent: int) -> List[Bundle]:
total_bundles = len(self.bundles)
selected_bundles_amount = round(total_bundles - (total_bundles *
(percent / 100)))