def METHOD_NAME(self, f):
    # Helper method to get a number of floats from the file
    current_values = [] # Hold values from the currently parsed line
    def get_floats(num):
        nonlocal current_values
        result = []
        n = 0
        while n < num:
            if len(current_values) == 0:
                line = f.readline().strip()
                if len(line) == 0: return
                current_values = line.split()
            result.append(float(current_values[0]))
            current_values = current_values[1:]
            n += 1
        return result
    header_line = f.readline().strip()
    if not header_line in ["IESNA91", "IESNA:LM-63-1995", "IESNA:LM-63-2002"]:
        raise Exception(f"Unexpected header line: {header_line}")
    # Collect IES keywords for inclusion in .png, to allow identification of source data later
    self.keyword_lines = []
    TILT = None
    while not TILT:
        line = f.readline()
        if len(line) == 0: break
        line = line.strip()
        if len(line) > 0:
            self.keyword_lines.append(line)
        if line.startswith("TILT="):
            TILT = line[5:]
            break
    if TILT is None:
        raise Exception("TILT= line missing!")
    elif TILT != "NONE":
        raise Exception("Unsupported TILT value: {TILT}")
    lamps_line = f.readline().strip()
    num_lamps, lumens_per_lamp, candela_mul, num_vert_angles, num_horz_angles, photometric_type, units_type, width, length, height = map(lambda s: float(s), lamps_line.split())
    self.num_vert_angles = int(num_vert_angles)
    self.num_horz_angles = int(num_horz_angles)
    if num_lamps != 1:
        raise Exception(f"Unsupported number of lamps: {num_lamps}")
    if photometric_type != 1:
        raise Exception(f"Unsupported photometric type: {photometric_type}")
    # "ballast factor", "future use", "input watts": skip
    f.readline()
    self.vert_angles = get_floats(self.num_vert_angles)
    self.horz_angles = get_floats(self.num_horz_angles)
    self.light_values = []
    for _  in range(0, self.num_horz_angles):
        self.light_values.append(get_floats(self.num_vert_angles))