docs: def load_observations((observations, regex, rename), path, filenames):
      """
      Returns a provisional name based dictionary of observations of the object.
      Each observations is keyed on the date. ie. a dictionary of dictionaries.
  
      @param path: the directory where filenames are.
      @type path str
      @param filenames: list of files in path.
      @type filenames list
      @rtype  None
      """
  
      for filename in filenames:
          if re.search(regex, filename) is None:
              logging.error("Skipping {}".format(filename))
              continue
          obs = mpc.MPCReader().read(os.path.join(path, filename))
          for ob in obs:
              if "568" not in ob.observatory_code:
                  continue
              if not isinstance(ob.comment, mpc.OSSOSComment):
                  continue
              if ob.date < Time("2013-01-01 00:00:00"):
                  continue
              if rename:
                  new_provisional_name = os.path.basename(filename)
                  new_provisional_name = new_provisional_name[0:new_provisional_name.find(".")]
                  rename_map[ob.provisional_name] = new_provisional_name
              try:
                  key1 = ob.comment.frame.split('p')[0]
              except Exception as ex:
                  logger.warning(str(ex))
                  logger.warning(ob.to_string())
                  continue
              key2 = ob.provisional_name
              if key1 not in observations:
                  observations[key1] = {}
              if key2 in observations[key1]:
                  if observations[key1][key2]:
                      continue
                  if not observation.null_observation:
                      logger.error(filename)
                      logger.error(str(observations[key1][key2]))
                      raise ValueError("conflicting observations for {} in {}".format(key2, key1))
              observations[key1][key2] = ob