code: def _parse_data(self, raw_data, var_filter, time_extents):
          
  
          retval = defaultdict(list)
          p = parser()
  
          begin_time, end_time = time_extents
  
          for line in raw_data.splitlines():
              if len(line) == 0:
                  continue
  
              fields = line.split("|")[0:-1]
              if var_filter is None or fields[2] in var_filter:
                  dt = p.parse(fields[3]).replace(tzinfo=pytz.utc)
                  if (begin_time is None or dt >= begin_time) and (
                      end_time is None or dt <= end_time
                  ):
                      try:
                          value = (
                              float(fields[4]) if fields[4] != "NaN" else npNan
                          )
                      except ValueError:
                          value = npNan
                      retval[fields[0]].append((fields[2], dt, value))
  
          return dict(retval)
docs: Transforms raw HADS observations into a dict:
              station code -> [(variable, time, value), ...]
  
          Takes into account the var filter (if set).