code: def ReadPathInfosHistories(self, client_id, path_type, components_list):
      
      results = {}
  
      for components in components_list:
        try:
          path_record = self.path_records[(client_id, path_type, components)]
        except KeyError:
          results[components] = []
          continue
  
        entries_by_ts = {}
        for ts, stat_entry in path_record.GetStatEntries():
          pi = rdf_objects.PathInfo(
              path_type=path_type,
              components=components,
              timestamp=ts,
              stat_entry=stat_entry)
          entries_by_ts[ts] = pi
  
        for ts, hash_entry in path_record.GetHashEntries():
          try:
            pi = entries_by_ts[ts]
          except KeyError:
            pi = rdf_objects.PathInfo(
                path_type=path_type, components=components, timestamp=ts)
            entries_by_ts[ts] = pi
  
          pi.hash_entry = hash_entry
  
        results[components] = [
            entries_by_ts[k] for k in sorted(iterkeys(entries_by_ts))
        ]
  
      return results
docs: Reads a collection of hash and stat entries for given paths.