diff --git a/scripts/Diffraction/isis_powder/routines/run_details.py b/scripts/Diffraction/isis_powder/routines/run_details.py index 8b361499f0019215502db3180bd11483fb0c20ce..5013067591108012471b3cf8d774745267b4398d 100644 --- a/scripts/Diffraction/isis_powder/routines/run_details.py +++ b/scripts/Diffraction/isis_powder/routines/run_details.py @@ -137,7 +137,7 @@ class CustomFuncForRunDetails(object): if not previous_callable: return None elif not isinstance(previous_callable, CustomFuncForRunDetails): - raise ValueError("Previous callable is not a RunDetailsFuncWrapper type") + raise ValueError("Previous callable is not a CustomFuncForRunDetails type") self._previous_callable = previous_callable diff --git a/scripts/test/ISISPowderInstrumentSettingsTest.py b/scripts/test/ISISPowderInstrumentSettingsTest.py index 0376e0e2f10a1e1943c1607dd6cb2d6811b138a0..3deaa0be8fee60e7a869c1ee02fcc02cbe07d027 100644 --- a/scripts/test/ISISPowderInstrumentSettingsTest.py +++ b/scripts/test/ISISPowderInstrumentSettingsTest.py @@ -6,24 +6,23 @@ import warnings from six import assertRaisesRegex, assertRegex -from isis_powder.routines import InstrumentSettings, ParamMapEntry +from isis_powder.routines import instrument_settings, param_map_entry class ISISPowderInstrumentSettingsTest(unittest.TestCase): - def test_user_missing_attribute_is_detected(self): - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry]) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry]) with assertRaisesRegex(self, AttributeError, "is required but was not set or passed"): foo = inst_settings_obj.script_facing_name del foo def test_user_missing_attribute_prints_enum_values(self): - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", - enum_class=SampleEnum) - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry]) + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", + enum_class=SampleEnum) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry]) # Check it still prints the acceptable values when it fails with assertRaisesRegex(self, AttributeError, "a foo, A BAR"): @@ -31,9 +30,9 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase): del foo def test_developer_missing_attribute_is_detected(self): - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry]) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry]) with assertRaisesRegex(self, AttributeError, "Please contact the development team"): foo = inst_settings_obj.not_known @@ -41,16 +40,16 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase): def test_set_attribute_is_found(self): expected_value = 100 - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") keyword_args = {"user_facing_name": expected_value} - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args) self.assertEqual(inst_settings_obj.script_facing_name, expected_value) def test_updating_attributes_produces_warning_on_init(self): original_value = 123 new_value = 456 - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") # First check this works on init adv_config = {"user_facing_name": original_value} @@ -58,8 +57,8 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase): with warnings.catch_warnings(record=True) as warning_capture: warnings.simplefilter("always") - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args, - adv_conf_dict=adv_config) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args, + adv_conf_dict=adv_config) assertRegex(self, str(warning_capture[-1].message), "which was previously set to") assertRegex(self, str(warning_capture[-1].message), str(original_value)) @@ -72,14 +71,14 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase): new_value = 456 second_value = 567 - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name") # First check this works on init adv_config = {"user_facing_name": original_value} config_dict = {"user_facing_name": new_value} keyword_args = {"user_facing_name": second_value} - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=adv_config) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=adv_config) self.assertEqual(inst_settings_obj.script_facing_name, original_value) @@ -111,8 +110,8 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase): def test_inst_settings_enters_into_dicts(self): param_entries = [ - ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name"), - ParamMapEntry.ParamMapEntry(ext_name="user_facing_name2", int_name="script_facing_name2") + param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name"), + param_map_entry.ParamMapEntry(ext_name="user_facing_name2", int_name="script_facing_name2") ] expected_value = 101 @@ -120,60 +119,61 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase): example_dict = {"user_facing_name": expected_value} nested_dict = {"some_random_name": example_dict} - inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=param_entries, adv_conf_dict=nested_dict) + inst_settings_obj = instrument_settings.InstrumentSettings(param_map=param_entries, adv_conf_dict=nested_dict) self.assertEqual(inst_settings_obj.script_facing_name, expected_value) # Next check that any attributes that a mixed dictionary contains are added mixed_dict = {"some_random_name2": example_dict, "user_facing_name2": expected_value * 2} - second_inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=param_entries, - adv_conf_dict=mixed_dict) + second_inst_settings_obj = instrument_settings.InstrumentSettings(param_map=param_entries, + adv_conf_dict=mixed_dict) self.assertEqual(second_inst_settings_obj.script_facing_name, expected_value) self.assertEqual(second_inst_settings_obj.script_facing_name2, expected_value * 2) def test_check_enum_check_and_set_works(self): - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", - enum_class=SampleEnum) + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", + enum_class=SampleEnum) # First test we cannot set it to a different value incorrect_value_dict = {"user_facing_name": "wrong"} with assertRaisesRegex(self, ValueError, "The user specified value: 'wrong' is unknown"): - inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], - adv_conf_dict=incorrect_value_dict) + instrument_settings.InstrumentSettings(param_map=[param_entry], + adv_conf_dict=incorrect_value_dict) # Check that we can set a known good enum good_value_dict = {"user_facing_name": SampleEnum.a_bar} - inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=good_value_dict) + inst_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=good_value_dict) self.assertEqual(inst_obj.script_facing_name, SampleEnum.a_bar) # Next check it passes on mixed case and converts it back to the correct case different_case_dict = {"user_facing_name": SampleEnum.a_bar.lower()} - inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=different_case_dict) + inst_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=different_case_dict) self.assertEqual(inst_obj.script_facing_name, SampleEnum.a_bar, "Case is not being converted correctly") def test_param_map_rejects_enum_missing_friendly_name(self): # Check that is the friendly name is not set it is correctly detected - with assertRaisesRegex(self, RuntimeError, "'enum_friendly_name' was not set. Please contact development team."): - ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", - enum_class=BadSampleEnum) + with assertRaisesRegex(self, RuntimeError, + "'enum_friendly_name' was not set. Please contact development team."): + param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", + enum_class=BadSampleEnum) def test_optional_attribute_works(self): - optional_param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", - optional=True) + optional_param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", + optional=True) - param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", - optional=False) + param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name", + optional=False) # Check that not passing an optional and trying to access it works correctly - opt_inst_obj = InstrumentSettings.InstrumentSettings(param_map=[optional_param_entry]) + opt_inst_obj = instrument_settings.InstrumentSettings(param_map=[optional_param_entry]) self.assertIsNone(opt_inst_obj.script_facing_name) # Check that setting optional to false still throws - inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry]) + inst_obj = instrument_settings.InstrumentSettings(param_map=[param_entry]) with self.assertRaises(AttributeError): - foo = inst_obj.script_facing_name + getattr(inst_obj, "script_facing_name") # Check if we do set an optional from fresh it does not emit a warning and is set optional_value = 100 @@ -204,5 +204,6 @@ class SampleEnum(object): class BadSampleEnum(object): a_foo = "a foo" + if __name__ == "__main__": unittest.main() diff --git a/scripts/test/ISISPowderRunDetailsTest.py b/scripts/test/ISISPowderRunDetailsTest.py index ec183db3dd0b48914aa1f6c593dd38604729dcff..604028dc328b4dccb387a0947d34aeb3d42c1352 100644 --- a/scripts/test/ISISPowderRunDetailsTest.py +++ b/scripts/test/ISISPowderRunDetailsTest.py @@ -8,11 +8,10 @@ import string import unittest import warnings -from isis_powder.routines import RunDetails +from isis_powder.routines import run_details class ISISPowderInstrumentRunDetailsTest(unittest.TestCase): - def setup_mock_inst_settings(self, yaml_file_path): calibration_dir = tempfile.mkdtemp() self._folders_to_remove = [calibration_dir] @@ -39,8 +38,8 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase): run_number_string = "17-18" mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTest.yaml") - output_obj = RunDetails.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst, - is_vanadium_run=False) + output_obj = run_details.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst, + is_vanadium_run=False) self.assertEqual(output_obj.empty_runs, expected_empty_runs) self.assertEqual(output_obj.grouping_file_path, @@ -58,8 +57,8 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase): run_number_string = "17-18" expected_vanadium_runs = "11-12" mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTest.yaml") - output_obj = RunDetails.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst, - is_vanadium_run=True) + output_obj = run_details.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst, + is_vanadium_run=True) self.assertEqual(expected_vanadium_runs, output_obj.run_number) self.assertEqual(output_obj.vanadium_run_numbers, output_obj.run_number) @@ -75,21 +74,22 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase): mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTestCallable.yaml") # Get the YAML file as a dict first - wrapped_funcs = RunDetails.WrappedFunctionsRunDetails + wrapped_funcs = run_details.WrappedFunctionsRunDetails - yaml_callable = RunDetails.RunDetailsFuncWrapper(function=wrapped_funcs.get_cal_mapping_dict, - run_number_string=run_number_string, inst_settings=mock_inst) + yaml_callable = run_details.CustomFuncForRunDetails(function=wrapped_funcs.get_cal_mapping_dict, + run_number_string=run_number_string, + inst_settings=mock_inst) empty_callable = yaml_callable.add_to_func_chain(user_function=wrapped_funcs.cal_dictionary_key_helper, key="custom_empty_run_numbers") vanadium_callable = yaml_callable.add_to_func_chain(user_function=wrapped_funcs.cal_dictionary_key_helper, key="custom_vanadium_run_numbers") - grouping_callable = RunDetails.RunDetailsFuncWrapper(function=lambda: expected_grouping_file_name) + grouping_callable = run_details.CustomFuncForRunDetails(function=lambda: expected_grouping_file_name) - output_obj = RunDetails.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst, - is_vanadium_run=True, empty_run_call=empty_callable, - vanadium_run_call=vanadium_callable, - grouping_file_name_call=grouping_callable) + output_obj = run_details.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst, + is_vanadium_run=True, empty_run_call=empty_callable, + vanadium_run_call=vanadium_callable, + grouping_file_name_call=grouping_callable) self.assertEqual(output_obj.label, expected_label) self.assertEqual(output_obj.empty_runs, expected_empty_runs) @@ -103,8 +103,8 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase): expected_offset_file_name = "offset_file_name" splined_name_list = ["bar", "bang", "baz"] mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTest.yaml") - output_obj = RunDetails.create_run_details_object(run_number_string=10, inst_settings=mock_inst, - is_vanadium_run=False, splined_name_list=splined_name_list) + output_obj = run_details.create_run_details_object(run_number_string=10, inst_settings=mock_inst, + is_vanadium_run=False, splined_name_list=splined_name_list) expected_splined_out_str = ''.join('_' + val for val in splined_name_list) expected_output_name = "VanSplined_" + expected_vanadium_runs + expected_splined_out_str @@ -123,5 +123,6 @@ class MockInstSettings(object): def gen_random_string(): return ''.join(random.choice(string.ascii_lowercase) for _ in range(10)) + if __name__ == "__main__": unittest.main()