def resolve(self, rosdep_args):
        """
        :raises: :exc:`InvalidData` If format invalid or unable
          to retrieve rdmanifests.
        :returns: [SourceInstall] instances.
        """
        try:
            url = rosdep_args["uri"]
        except __HOLE__:
            raise InvalidData("'uri' key required for source rosdeps") 
        alt_url = rosdep_args.get("alternate-uri", None)
        md5sum = rosdep_args.get("md5sum", None)

        # load manifest from cache or from web
        manifest = None
        if url in self._rdmanifest_cache:
            return self._rdmanifest_cache[url]
        elif alt_url in self._rdmanifest_cache:
            return self._rdmanifest_cache[alt_url]
        try:
            rd_debug("Downloading manifest [%s], mirror [%s]"%(url, alt_url))
            manifest, download_url = download_rdmanifest(url, md5sum, alt_url)
            resolved = SourceInstall.from_manifest(manifest, download_url)
            self._rdmanifest_cache[download_url] = [resolved]
            return [resolved]
        except DownloadFailed as ex:
            # not sure this should be masked this way
            raise InvalidData(str(ex))            
        except InvalidRdmanifest as ex:
            raise InvalidData(str(ex))
dataset/ETHPy150Open ros-infrastructure/rosdep/src/rosdep2/platforms/source.py/SourceInstaller.resolve