def sources_from_index(smap, base): index = smap.index make_absolute = partial(urljoin, base) sources = fetch_urls(map(make_absolute, index.sources)) missed_sources = filter(lambda s: s.body is None, sources) if missed_sources: raise UnableToFetchSources(smap.url, missed_sources) return {s.url: s.body.splitlines() for s in sources}