docs: def parse_elements(elements):
          """Parse position data elements.
  
          Args:
              elements (list): Data values for position
  
          Returns:
              Position: Position object representing data
          """
          if not len(elements) in (11, 12):
              raise ValueError('Invalid RMC position data')
          time = datetime.time(*[int(elements[0][i:i + 2])
                                 for i in range(0, 6, 2)])
          active = True if elements[1] == 'A' else False
          # Latitude and longitude are checked for validity during Fix
          # instantiation
          latitude = parse_latitude(elements[2], elements[3])
          longitude = parse_longitude(elements[4], elements[5])
          speed = float(elements[6])
          track = float(elements[7])
          date = datetime.date(2000 + int(elements[8][4:6]),
                               int(elements[8][2:4]), int(elements[8][:2]))
          variation = float(elements[9]) if not elements[9] == '' else None
          if elements[10] == 'W':
              variation = -variation
          elif variation and not elements[10] == 'E':
              raise ValueError('Incorrect variation value %r'
                               % elements[10])
          mode = elements[11] if len(elements) == 12 else None
          return Position(time, active, latitude, longitude, speed, track, date,
                          variation, mode)