code: def list(self, path=None, with_metadata=False, include_partitions=False):
          
  
          l = {}
          for upstream in [self.alternate, self.upstream]:
  
              for k, v in upstream.list(path, with_metadata, include_partitions).items():
                  upstreams = (l[k]['caches'] if k in l else []) + \
                      v.get('caches', upstream.repo_id)
  
                  l[k] = v
                  l[k]['caches'] = upstreams
  
          return l
docs: Combine a listing of all of the upstreams, and add a metadata item for the
          repo_id