Skip to content
Snippets Groups Projects
Commit e2cb799b authored by Tessaris Sergio's avatar Tessaris Sergio
Browse files

chore: better errors reporting

parent d160b7a6
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,7 @@ Functions to run the players ...@@ -7,6 +7,7 @@ Functions to run the players
import argparse import argparse
import copy import copy
import importlib import importlib
import inspect
import io import io
import json import json
import os import os
...@@ -51,17 +52,20 @@ def get_player_class(object_ref: str, path: os.PathLike = None) -> Union[Type[On ...@@ -51,17 +52,20 @@ def get_player_class(object_ref: str, path: os.PathLike = None) -> Union[Type[On
# see <https://packaging.python.org/specifications/entry-points/#data-model> # see <https://packaging.python.org/specifications/entry-points/#data-model>
modname, qualname_separator, qualname = object_ref.partition(':') modname, qualname_separator, qualname = object_ref.partition(':')
obj = importlib.import_module(modname) try:
obj = importlib.import_module(modname)
except ModuleNotFoundError as e:
raise ImportError(f'Cannot find entrypoint {object_ref}: {e}')
if qualname_separator: if qualname_separator:
for attr in qualname.split('.'): for attr in qualname.split('.'):
try: try:
obj = getattr(obj, attr) obj = getattr(obj, attr)
except AttributeError as e: except AttributeError as e:
raise ImportError('Cannot import {} object: {}'.format(object_ref, e)) raise ImportError(f'Cannot find entrypoint {object_ref}: {e}')
player_class = obj player_class = obj
if not issubclass(player_class, (OnlinePlayer, OfflinePlayer)): if not inspect.isclass(player_class) or not issubclass(player_class, (OnlinePlayer, OfflinePlayer)):
raise NotImplementedError('class {} is not a player class'.format(player_class)) raise RuntimeError(f'{player_class} is not a subclass of OnlinePlayer or OfflinePlayer')
return player_class return player_class
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment