From a0bf95d4b51a581d44e5c1e48037c60945eae10b Mon Sep 17 00:00:00 2001 From: Ruslan Sayfutdinov Date: Thu, 29 Apr 2021 05:29:53 +0100 Subject: [PATCH] Validate if modules in mypy config exist (#49810) --- script/hassfest/mypy_config.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index 45fa1eb6539..c42d26ad73e 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -3,6 +3,8 @@ from __future__ import annotations import configparser import io +import os +from pathlib import Path from typing import Final from .model import Config, Integration @@ -321,6 +323,22 @@ def generate_and_validate(config: Config) -> str: if module in ignored_modules_set: config.add_error("mypy_config", f"Module '{module}' is in ignored list") + # Validate that all modules exist. + all_modules = strict_modules + IGNORED_MODULES + for module in all_modules: + if module.endswith(".*"): + module_path = Path(module[:-2].replace(".", os.path.sep)) + if not module_path.is_dir(): + config.add_error("mypy_config", f"Module '{module} is not a folder") + else: + module = module.replace(".", os.path.sep) + module_path = Path(f"{module}.py") + if module_path.is_file(): + continue + module_path = Path(module) / "__init__.py" + if not module_path.is_file(): + config.add_error("mypy_config", f"Module '{module} doesn't exist") + mypy_config = configparser.ConfigParser() general_section = "mypy"