doctor: suggest config documentation in case of ImportError from config

doesn't help in all cases but perhaps helpful anyway

relevant: https://github.com/karlicoss/HPI/issues/109
This commit is contained in:
Dima Gerasimov 2022-02-02 23:17:07 +00:00
parent e30953195c
commit b2a0275002

View file

@ -2,6 +2,7 @@ import functools
import importlib import importlib
import inspect import inspect
import os import os
import re
import sys import sys
import traceback import traceback
from typing import Optional, Sequence, Iterable, List, Type, Any, Callable from typing import Optional, Sequence, Iterable, List, Type, Any, Callable
@ -242,6 +243,14 @@ def modules_check(*, verbose: bool, list_all: bool, quick: bool, for_modules: Li
except Exception as e: except Exception as e:
# todo more specific command? # todo more specific command?
error(f'{click.style("FAIL", fg="red")}: {m:<50} loading failed{vw}') error(f'{click.style("FAIL", fg="red")}: {m:<50} loading failed{vw}')
if isinstance(e, ImportError):
em = re.match(r"cannot import name '(\w+)' from 'my.config'", str(e))
if em is not None:
section_name = em.group(1)
eprint(click.style(f"""\
You're likely missing '{section_name}' section from your config.
See https://github.com/karlicoss/HPI/blob/master/doc/SETUP.org#private-configuration-myconfig\
""", fg='yellow'))
if verbose: if verbose:
tb(e) tb(e)
continue continue