diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py index 98af04e1010698009bb782baff964c1100f067ff..fdf92199df3eb8a88aa30db22cef912ade928646 100644 --- a/scripts/Diffraction/isis_powder/gem.py +++ b/scripts/Diffraction/isis_powder/gem.py @@ -7,11 +7,9 @@ from isis_powder.routines import common, instrument_settings, yaml_parser class Gem(AbstractInst): def __init__(self, **kwargs): - basic_config_dict = yaml_parser.open_yaml_file_as_dictionary(kwargs.get("config_file", None)) - self._inst_settings = instrument_settings.InstrumentSettings( param_map=gem_param_mapping.attr_mapping, adv_conf_dict=gem_advanced_config.get_all_adv_variables(), - kwargs=kwargs, basic_conf_dict=basic_config_dict) + kwargs=kwargs) super(Gem, self).__init__(user_name=self._inst_settings.user_name, calibration_dir=self._inst_settings.calibration_dir, diff --git a/scripts/Diffraction/isis_powder/pearl.py b/scripts/Diffraction/isis_powder/pearl.py index 1610c2a3bbb2116eb272867f58c7c38ab74c485d..418a0c6f562439b7b5de93f3ce190514916ce3bb 100644 --- a/scripts/Diffraction/isis_powder/pearl.py +++ b/scripts/Diffraction/isis_powder/pearl.py @@ -10,11 +10,9 @@ from isis_powder.pearl_routines import pearl_algs, pearl_output, pearl_advanced_ class Pearl(AbstractInst): def __init__(self, **kwargs): - basic_config_dict = yaml_parser.open_yaml_file_as_dictionary(kwargs.get("config_file", None)) - self._inst_settings = instrument_settings.InstrumentSettings( param_map=pearl_param_mapping.attr_mapping, adv_conf_dict=pearl_advanced_config.get_all_adv_variables(), - basic_conf_dict=basic_config_dict, kwargs=kwargs) + kwargs=kwargs) super(Pearl, self).__init__(user_name=self._inst_settings.user_name, calibration_dir=self._inst_settings.calibration_dir, diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index 510898ed047896ba58d0b9fbf52872d4ec79b040..3ca804f59af0a072f4747d2c32b42f25a039b9eb 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -9,10 +9,9 @@ from isis_powder.polaris_routines import polaris_advanced_config, polaris_algs, class Polaris(AbstractInst): def __init__(self, **kwargs): - basic_config_dict = yaml_parser.open_yaml_file_as_dictionary(kwargs.get("config_file", None)) self._inst_settings = instrument_settings.InstrumentSettings( param_map=polaris_param_mapping.attr_mapping, adv_conf_dict=polaris_advanced_config.variables, - basic_conf_dict=basic_config_dict, kwargs=kwargs) + kwargs=kwargs) super(Polaris, self).__init__(user_name=self._inst_settings.user_name, calibration_dir=self._inst_settings.calibration_dir, diff --git a/scripts/Diffraction/isis_powder/routines/instrument_settings.py b/scripts/Diffraction/isis_powder/routines/instrument_settings.py index 565227dbd730f5a92167f3c6dd6b4bffd9485177..2666b89e2cf0e35f2b9508df8682c61fc55805ec 100644 --- a/scripts/Diffraction/isis_powder/routines/instrument_settings.py +++ b/scripts/Diffraction/isis_powder/routines/instrument_settings.py @@ -1,31 +1,38 @@ from __future__ import (absolute_import, division, print_function) from six import iteritems +from isis_powder.routines import yaml_parser import warnings # Have to patch warnings at runtime to not print the source code. This is even advertised as a 'feature' of # the warnings library in the documentation: https://docs.python.org/3/library/warnings.html#warnings.showwarning -def warning_no_source(msg, *_): +def _warning_no_source(msg, *_): return str(msg) + '\n' -warnings.formatwarning = warning_no_source +warnings.formatwarning = _warning_no_source warnings.simplefilter('always', UserWarning) class InstrumentSettings(object): # Holds instance variables updated at runtime - def __init__(self, param_map, adv_conf_dict=None, basic_conf_dict=None, kwargs=None): + def __init__(self, param_map, adv_conf_dict=None, kwargs=None): self._param_map = param_map self._adv_config_dict = adv_conf_dict - self._basic_conf_dict = basic_conf_dict self._kwargs = kwargs + config_file_path = kwargs.get("config_file", None) + if not config_file_path: + warnings.warn("No config file was specified. If one was meant to be used the path to a YAML config file" + " is set with the 'config_file' parameter.") + # Always do this so we have a known state of the internal variable + self._basic_conf_dict = yaml_parser.open_yaml_file_as_dictionary(config_file_path) + # We parse in the order advanced config, basic config (if specified), kwargs. # This means that users can use the advanced config as a safe set of defaults, with their own preferences as # the next layer which can override defaults and finally script arguments as their final override. self._parse_attributes(dict_to_parse=adv_conf_dict) - self._parse_attributes(dict_to_parse=basic_conf_dict) + self._parse_attributes(dict_to_parse=self._basic_conf_dict) self._parse_attributes(dict_to_parse=kwargs) # __getattr__ is only called if the attribute was not set so we already know