Nicer error message when importing a kitten fails

This commit is contained in:
Kovid Goyal 2022-03-02 08:19:47 +05:30
parent af6baa33be
commit f421666a27
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -9,10 +9,10 @@ from contextlib import contextmanager
from functools import partial from functools import partial
from typing import TYPE_CHECKING, Any, Dict, FrozenSet, Generator, List, cast from typing import TYPE_CHECKING, Any, Dict, FrozenSet, Generator, List, cast
from kitty.constants import list_kitty_resources
from kitty.types import run_once from kitty.types import run_once
from kitty.utils import resolve_abs_or_config_path from kitty.utils import resolve_abs_or_config_path
aliases = {'url_hints': 'hints'} aliases = {'url_hints': 'hints'}
if TYPE_CHECKING: if TYPE_CHECKING:
from kitty.conf.types import Definition from kitty.conf.types import Definition
@ -85,7 +85,7 @@ def launch(args: List[str]) -> None:
del args[:2] del args[:2]
args = [kitten] + args args = [kitten] + args
os.environ['KITTY_CONFIG_DIRECTORY'] = config_dir os.environ['KITTY_CONFIG_DIRECTORY'] = config_dir
from kittens.tui.operations import clear_screen, reset_mode, Mode from kittens.tui.operations import Mode, clear_screen, reset_mode
set_debug(kitten) set_debug(kitten)
m = import_kitten_main_module(config_dir, kitten) m = import_kitten_main_module(config_dir, kitten)
try: try:
@ -116,11 +116,9 @@ def run_kitten(kitten: str, run_name: str = '__main__') -> None:
original_kitten_name = kitten original_kitten_name = kitten
kitten = resolved_kitten(kitten) kitten = resolved_kitten(kitten)
set_debug(kitten) set_debug(kitten)
try: if kitten in all_kitten_names():
runpy.run_module(f'kittens.{kitten}.main', run_name=run_name) runpy.run_module(f'kittens.{kitten}.main', run_name=run_name)
return return
except ImportError:
pass
# Look for a custom kitten # Look for a custom kitten
if not kitten.endswith('.py'): if not kitten.endswith('.py'):
kitten += '.py' kitten += '.py'
@ -137,7 +135,6 @@ def run_kitten(kitten: str, run_name: str = '__main__') -> None:
@run_once @run_once
def all_kitten_names() -> FrozenSet[str]: def all_kitten_names() -> FrozenSet[str]:
from kitty.constants import list_kitty_resources
ans = [] ans = []
for name in list_kitty_resources('kittens'): for name in list_kitty_resources('kittens'):
if '__' not in name and '.' not in name and name != 'tui': if '__' not in name and '.' not in name and name != 'tui':