def METHOD_NAME(self) -> Dict[str, List[Path]]:
    """Read files in data paths."""
    data_files: Dict[str, List[Path]] = defaultdict(list)
    for input_path in (Path(path_str) for path_str in self._paths):
        files = {
            file.relative_to(input_path): file
            for file in input_path.rglob("*.json")
        }
        file_names = [valid_pyname(str(file.with_suffix(""))) for file in files]
        path_files = dict(zip(file_names, files.values()))
        for file_name, file_path in path_files.items():
            data_files[file_name].append(file_path)
    logger.info("Found %d data file types", len(data_files))
    logger.info("Total data files: %d", sum(len(v) for v in data_files.values()))
    if not data_files:
        raise MsticpyDataQueryError(
            "No usable data files found in supplied paths.",
            f"Data paths supplied: {', '.join(self._paths)}",
            title="No data files found",
            help_uri=_VELOCIRATOR_DOC_URL,
        )
    return data_files