Increasing generator usage.

This commit is contained in:
lwark
2024-10-08 14:55:54 -05:00
parent eaf6c156b3
commit ae5fb1b48f
9 changed files with 81 additions and 151 deletions

View File

@@ -142,8 +142,8 @@ class KitType(BaseClass):
"""
return f"<KitType({self.name})>"
def get_reagents(self, required: bool = False, submission_type: str | SubmissionType | None = None) -> List[
ReagentRole]:
def get_reagents(self, required: bool = False, submission_type: str | SubmissionType | None = None) -> Generator[
ReagentRole, None, None]:
"""
Return ReagentTypes linked to kit through KitTypeReagentTypeAssociation.
@@ -168,9 +168,9 @@ class KitType(BaseClass):
relevant_associations = [item for item in self.kit_reagentrole_associations]
if required:
# logger.debug(f"Filtering by required.")
return [item.reagent_role for item in relevant_associations if item.required == 1]
return (item.reagent_role for item in relevant_associations if item.required == 1)
else:
return [item.reagent_role for item in relevant_associations]
return (item.reagent_role for item in relevant_associations)
# TODO: Move to BasicSubmission?
def construct_xl_map_for_use(self, submission_type: str | SubmissionType) -> Generator[(str, str)]:
@@ -198,6 +198,7 @@ class KitType(BaseClass):
# logger.debug("Get all KitTypeReagentTypeAssociation for SubmissionType")
for assoc in assocs:
try:
logger.debug(f"Yielding: {assoc.reagent_role.name}, {assoc.uses}")
yield assoc.reagent_role.name, assoc.uses
except TypeError:
continue
@@ -764,14 +765,14 @@ class SubmissionType(BaseClass):
tmap = {}
yield item.tip_role.name, tmap
def get_equipment(self, extraction_kit: str | KitType | None = None) -> List['PydEquipmentRole']:
def get_equipment(self, extraction_kit: str | KitType | None = None) -> Generator['PydEquipmentRole', None, None]:
"""
Returns PydEquipmentRole of all equipment associated with this SubmissionType
Returns:
List[PydEquipmentRole]: List of equipment roles
"""
return [item.to_pydantic(submission_type=self, extraction_kit=extraction_kit) for item in self.equipment]
return (item.to_pydantic(submission_type=self, extraction_kit=extraction_kit) for item in self.equipment)
def get_processes_for_role(self, equipment_role: str | EquipmentRole, kit: str | KitType | None = None) -> list:
"""

View File

@@ -219,11 +219,11 @@ class BasicSubmission(BaseClass):
if len(args) == 1:
try:
return output[args[0]]
except KeyError:
except KeyError as e:
if "pytest" in sys.modules and args[0] == "abbreviation":
return "BS"
else:
raise KeyError("args[0]")
raise KeyError(f"{args[0]} not found in {output}")
return output
@classmethod
@@ -237,6 +237,13 @@ class BasicSubmission(BaseClass):
Returns:
SubmissionType: SubmissionType with name equal to this polymorphic identity
"""
logger.debug(f"Running search for {sub_type}")
if isinstance(sub_type, dict):
try:
sub_type = sub_type['value']
except KeyError as e:
logger.error(f"Couldn't extract value from {sub_type}")
raise e
match sub_type:
case str():
return SubmissionType.query(name=sub_type)