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
import argparse
import copy
import importlib
import inspect
import io
import json
import os
......@@ -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>
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:
for attr in qualname.split('.'):
try:
obj = getattr(obj, attr)
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
if not issubclass(player_class, (OnlinePlayer, OfflinePlayer)):
raise NotImplementedError('class {} is not a player class'.format(player_class))
if not inspect.isclass(player_class) or not issubclass(player_class, (OnlinePlayer, OfflinePlayer)):
raise RuntimeError(f'{player_class} is not a subclass of OnlinePlayer or OfflinePlayer')
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