docs: def parse_unit(prop, dictionary, dt=None):
      '''Do a fuzzy match for `prop` in the dictionary, taking into account unit suffix.'''
      # add the observation's time
      try:
          dt = timezone.parse_datetime(dictionary.get('date_time'))
      except TypeError:
          dt = None
  
      # 'prop' is a stub of the property's attribute key, so search for matches
      matches = [k for k in dictionary.keys() if prop in k]
  
      try:
          value = dictionary[matches[0]]
          unit = re.search(r' \(([^)]+)\)', matches[0])
  
      except IndexError:
          # No matches: fail out
          return None
  
      # Sometimes we get a list of values (e.g. waves)
      if ';' in value:
          # Ignore empty values
          values = [val for val in value.split(';') if val != '']
  
          if unit:
              return [Observation(v, unit.group(1), dt) for v in values]
          else:
              return values
  
      # Sometimes there's no value! Sometimes there's no unit!
      if not value or not unit:
          return value or None
  
      return Observation(value, unit.group(1), dt)