From 97a6294ac07c04250b5d87faf3eeecb53b1a25df Mon Sep 17 00:00:00 2001 From: BDonnot Date: Tue, 18 Jan 2022 17:35:19 +0100 Subject: [PATCH] fixing broken tests --- grid2op/Space/SerializableSpace.py | 19 ++++++++++++++++--- grid2op/tests/test_Observation.py | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/grid2op/Space/SerializableSpace.py b/grid2op/Space/SerializableSpace.py index 5c7f8c73d..f151a4631 100644 --- a/grid2op/Space/SerializableSpace.py +++ b/grid2op/Space/SerializableSpace.py @@ -171,15 +171,28 @@ def from_dict(dict_): if actionClass_li[-1] in globals(): subtype = globals()[actionClass_li[-1]] else: + try: + exec("from {} import {}".format(".".join(actionClass_li[:-1]), actionClass_li[-1])) + except ModuleNotFoundError as exc_: + # prior to grid2op 1.6.5 the Observation module was grid2op.Observation.completeObservation.CompleteObservation + # after its grid2op.Observation.completeObservation.CompleteObservation + # so I try here to make the python file lower case in order to import + # the class correctly + if len(actionClass_li) > 2: + test_str = actionClass_li[2] + actionClass_li[2] = test_str[0].lower() + test_str[1:] + exec("from {} import {}".format(".".join(actionClass_li[:-1]), actionClass_li[-1])) + else: + raise exc_ + # TODO make something better and recursive here - exec("from {} import {}".format(".".join(actionClass_li[:-1]), actionClass_li[-1])) try: subtype = eval(actionClass_li[-1]) except NameError: if len(actionClass_li) > 1: try: subtype = eval(".".join(actionClass_li[1:])) - except: + except Exception as exc_: msg_err_ = "Impossible to find the module \"{}\" to load back the space (ERROR 1). " \ "Try \"from {} import {}\"" raise Grid2OpException(msg_err_.format(actionClass_str, ".".join(actionClass_li[:-1]), @@ -192,7 +205,7 @@ def from_dict(dict_): except AttributeError: try: subtype = eval(actionClass_li[-1]) - except: + except Exception as exc_: if len(actionClass_li) > 1: msg_err_ = "Impossible to find the class named \"{}\" to load back the space (ERROR 3)" \ "(module is found but not the class in it) Please import it via " \ diff --git a/grid2op/tests/test_Observation.py b/grid2op/tests/test_Observation.py index a3710d3d5..9f69db52c 100644 --- a/grid2op/tests/test_Observation.py +++ b/grid2op/tests/test_Observation.py @@ -105,7 +105,7 @@ def setUp(self): "storage_loss": [], 'storage_charging_efficiency': [], 'storage_discharging_efficiency': [], - '_init_subtype': 'grid2op.Observation.CompleteObservation.CompleteObservation', + '_init_subtype': 'grid2op.Observation.completeObservation.CompleteObservation', "dim_alarms": 0, "alarms_area_names": [], "alarms_lines_area": {},