Import all modules and return list of failures.
(modules_path: Path, logger: logging.Logger)
| 125 | |
| 126 | |
| 127 | def _import_modules(modules_path: Path, logger: logging.Logger) -> list[str]: |
| 128 | """Import all modules and return list of failures.""" |
| 129 | failed_imports = [] |
| 130 | for _finder, name, ispkg in pkgutil.iter_modules([str(modules_path)]): |
| 131 | if not name.startswith("_") and name != "base": |
| 132 | try: |
| 133 | logger.debug(f"Importing module: {name} ({'package' if ispkg else 'file'})") |
| 134 | importlib.import_module(f"cli.modules.{name}") |
| 135 | except ImportError as e: |
| 136 | error_info = f"Import failed for '{name}': {e!s}" |
| 137 | failed_imports.append(error_info) |
| 138 | logger.warning(error_info) |
| 139 | except Exception as e: |
| 140 | error_info = f"Unexpected error importing '{name}': {e!s}" |
| 141 | failed_imports.append(error_info) |
| 142 | logger.error(error_info) |
| 143 | return failed_imports |
| 144 | |
| 145 | |
| 146 | def _register_repo_command(logger: logging.Logger) -> list[str]: |