code: def clean_data(self):
          
  
          # TODO: Do the same for duration/timedelta
          if "timestamp" in self:
              self._check_timestamp()
              if type(self["timestamp"]) == list:
                  def datetime_to_string(dt):
                      return fmt_datetime(dt) if type(dt) == datetime else dt
                  self["timestamp"] = list(map(datetime_to_string, self["timestamp"]))
              elif type(self["timestamp"]) == datetime:
                  self["timestamp"] = fmt_datetime(self["timestamp"])
  
          # FIXME: Support list of volumes
          if "volume" in self:
              self["volume"]["unit"] = self["volume"]["unit"].replace("l", "L")
  
          # FIXME: Support list of weights
          if "weight" in self:
              # Zenobase uses "ug" for micrograms
              if self["weight"]["unit"] in ["mcg", "µg"]:
                  self["weight"]["unit"] = "ug"
docs: Ensures data is Zenobase compatible and patches it if possible,
          if cleaning is not possible it'll raise an appropriate exception