def set_configs(self, key_to_value, all_layers): """ Sets the config variables. We broke this code out of __init__ for clarity. the child-class constructor will deal with the configuration values in a more specific way. """ for key, value in key_to_value.items(): if key != 'name': if not key in self.config: raise xparser_error( "Configuration value {0}={1} was not" " expected in layer of type {2}" "".format(key, value, self.layer_type), self.str()) self.config[key] = xutils.convert_value_to_type( key, type(self.config[key]), value) self.descriptors = dict() self.descriptor_dims = dict() # Parse Descriptors and get their dims and their 'final' string form. # in self.descriptors[key] for key in self.get_input_descriptor_names(): if not key in self.config: raise xparser_error( "{0}: object of type {1} needs to override" " get_input_descriptor_names()." "".format(sys.argv[0], str(type(self))), self.str()) descriptor_string = self.config[key] # input string. assert isinstance(descriptor_string, str) desc = self.convert_to_descriptor(descriptor_string, all_layers) desc_dim = self.get_dim_for_descriptor(desc, all_layers) desc_norm_str = desc.str() # desc_output_str contains the "final" component names, those that # appear in the actual config file (i.e. not names like # 'layer.auxiliary_output'); that's how it differs from desc_norm_str. # Note: it's possible that the two strings might be the same in # many, even most, cases-- it depends whether # output_name(self, auxiliary_output) # returns self.get_name() + '.' + auxiliary_output # when auxiliary_output is not None. # That's up to the designer of the layer type. desc_output_str = self.get_string_for_descriptor(desc, all_layers) self.descriptors[key] = { 'string': desc, 'normalized-string': desc_norm_str, 'final-string': desc_output_str, 'dim': desc_dim } # the following helps to check the code by parsing it again. desc2 = self.convert_to_descriptor(desc_norm_str, all_layers) desc_norm_str2 = desc2.str() # if the following ever fails we'll have to do some debugging. if desc_norm_str != desc_norm_str2: raise xparser_error( "Likely code error: '{0}' != '{1}'" "".format(desc_norm_str, desc_norm_str2), self.str())
def set_configs(self, key_to_value, all_layers): """ Sets the config variables. We broke this code out of __init__ for clarity. the child-class constructor will deal with the configuration values in a more specific way. """ for key,value in key_to_value.items(): if key != 'name': if not key in self.config: raise xparser_error("Configuration value {0}={1} was not" " expected in layer of type {2}" "".format(key, value, self.layer_type), self.str()) self.config[key] = xutils.convert_value_to_type(key, type(self.config[key]), value) self.descriptors = dict() self.descriptor_dims = dict() # Parse Descriptors and get their dims and their 'final' string form. # in self.descriptors[key] for key in self.get_input_descriptor_names(): if not key in self.config: raise xparser_error("{0}: object of type {1} needs to override" " get_input_descriptor_names()." "".format(sys.argv[0], str(type(self))), self.str()) descriptor_string = self.config[key] # input string. assert isinstance(descriptor_string, str) desc = self.convert_to_descriptor(descriptor_string, all_layers) desc_dim = self.get_dim_for_descriptor(desc, all_layers) desc_norm_str = desc.str() # desc_output_str contains the "final" component names, those that # appear in the actual config file (i.e. not names like # 'layer.auxiliary_output'); that's how it differs from desc_norm_str. # Note: it's possible that the two strings might be the same in # many, even most, cases-- it depends whether # output_name(self, auxiliary_output) # returns self.get_name() + '.' + auxiliary_output # when auxiliary_output is not None. # That's up to the designer of the layer type. desc_output_str = self.get_string_for_descriptor(desc, all_layers) self.descriptors[key] = {'string':desc, 'normalized-string':desc_norm_str, 'final-string':desc_output_str, 'dim':desc_dim} # the following helps to check the code by parsing it again. desc2 = self.convert_to_descriptor(desc_norm_str, all_layers) desc_norm_str2 = desc2.str() # if the following ever fails we'll have to do some debugging. if desc_norm_str != desc_norm_str2: raise xparser_error("Likely code error: '{0}' != '{1}'" "".format(desc_norm_str, desc_norm_str2), self.str())