python: backport 'qmp-tui: Do not crash if optional dependencies are not met'

Based on the discussion at https://github.com/pypa/pip/issues/9726 -
even though the setuptools documentation implies that it is possible to
guard script execution with optional dependency groups, this is not true
in practice with the scripts generated by pip.

Just do the simple thing and guard the import statements.

Signed-off-by: John Snow <jsnow@redhat.com>
cherry picked from commit python-qemu-qmp@df520dcacf9a75dd4c82ab1129768de4128b554c
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
John Snow 2022-07-22 15:55:45 -04:00
parent fcaeeb7653
commit fd0ed46d4e

View file

@ -21,6 +21,7 @@ import json
import logging
from logging import Handler, LogRecord
import signal
import sys
from typing import (
List,
Optional,
@ -30,10 +31,20 @@ from typing import (
cast,
)
from pygments import lexers
from pygments import token as Token
import urwid
import urwid_readline
try:
from pygments import lexers
from pygments import token as Token
import urwid
import urwid_readline
except ModuleNotFoundError as exc:
print(
f"Module '{exc.name}' not found.",
"You need the optional 'tui' group: pip install qemu.qmp[tui]",
sep='\n',
file=sys.stderr,
)
sys.exit(1)
from .error import ProtocolError
from .legacy import QEMUMonitorProtocol, QMPBadPortError