def collect_city_datasets(data_dir):
    """
    Collect the city datasets.

    If a city does not have *ALL* the datasets, it is discarded.
    """
    cities = {
        "-".join(city.stem.split("-")[0:-1])
        for city in list(data_dir.glob("*"))
        if not city.stem.startswith(".")
    }
    groups = []
    for city in cities:
        shapefile = data_dir / f"{city}-neighborhood_ways.zip"
        scorefile = data_dir / f"{city}-neighborhood_overall_scores.csv"
        if shapefile.exists() and scorefile.exists():
            groups.append((shapefile, scorefile))

    return groups