def get_catkin_view(rosdistro_name, os_name, os_version, update=True):
    sources_list_dir = get_sources_list_dir()
    if not os.path.exists(sources_list_dir):
        raise ValidationFailed("""rosdep database is not initialized, please run:
\tsudo rosdep init
""")

    if update:
        update_rosdep()

    sources_matcher = DataSourceMatcher([rosdistro_name, os_name, os_version])
    sources_loader = SourcesListLoader.create_default(matcher=sources_matcher)
    if not (sources_loader.sources):
        raise ValidationFailed("""rosdep database does not have any sources.
Please make sure you have a valid configuration in:
\t%s
"""%(sources_list_dir))
    
    # for vestigial reasons, using the roskg loader, but we're only
    # actually using the backend db as resolution is not resource-name based
    lookup = RosdepLookup.create_from_rospkg(sources_loader=sources_loader)
    return lookup.get_rosdep_view(DEFAULT_VIEW_KEY)
Handle the different cases of request's result been a Response or a
dataset/ETHPy150Open ros-infrastructure/rosdep/src/rosdep2/catkin_support.py/get_catkin_view--crossover with--dataset/ETHPy150Open scrapy/scrapy/scrapy/core/scraper.py/Scraper._scrape2