def image_size(image_path: str, from_context: str) -> (int, int): """ Return the size specified by the context of an image field. """ explicit_width = None # get each size specification separately (removing blanks) size_components = list(filter(None, from_context.split('x'))) if len(size_components) > 0: width_specification = size_components[0] try: explicit_width = int(width_specification) except ValueError: explicit_width = None WarningDisplay.unknown_size_specification( WarningContext(image_path), from_context) else: if explicit_width < 0: WarningDisplay.invalid_width_specification( WarningContext(image_path), explicit_width) explicit_width = None if len(size_components) > 1: height_specification = size_components[1] try: explicit_height = int(height_specification) except ValueError: explicit_height = None WarningDisplay.unknown_size_specification( WarningContext(image_path), from_context) else: if explicit_height < 0: WarningDisplay.invalid_height_specification( WarningContext(image_path), explicit_height) explicit_height = None else: # default to a squared size using the width specification explicit_height = explicit_width return explicit_width, explicit_height