MCPcopy Index your code
hub / github.com/bugy/script-server / set_all_param_values

Method set_all_param_values

src/model/script_config.py:117–168  ·  view source on GitHub ↗
(self, param_values, skip_invalid_parameters=False)

Source from the content-addressed store, hash-verified

115 self.parameter_values[param_name] = value_wrapper
116
117 def set_all_param_values(self, param_values, skip_invalid_parameters=False):
118 original_values = dict(self.parameter_values)
119 processed = {}
120
121 anything_changed = True
122
123 def get_sort_key(parameter):
124 if parameter.name in self._included_config_paths.required_parameters:
125 return len(parameter.get_required_parameters())
126 return 100 + len(parameter.get_required_parameters())
127
128 sorted_parameters = sorted(self.parameters, key=get_sort_key)
129
130 while (len(processed) < len(self.parameters)) and anything_changed:
131 anything_changed = False
132
133 parameters = sorted_parameters + [p for p in self.parameters if p not in sorted_parameters]
134 for parameter in parameters:
135 if parameter.name in processed:
136 continue
137
138 required_parameters = parameter.get_required_parameters()
139 if required_parameters and any(r not in processed for r in required_parameters):
140 continue
141
142 if parameter.constant:
143 value_wrapper = parameter.create_value_wrapper_for_default()
144 else:
145 value = parameter.normalize_user_value(param_values.get(parameter.name))
146 value_wrapper = parameter.create_value_wrapper(value)
147
148 validation_error = parameter.validate_value(value_wrapper)
149 if validation_error:
150 if skip_invalid_parameters:
151 logging.warning('Parameter ' + parameter.name + ' has invalid value, skipping')
152 value_wrapper = parameter.create_value_wrapper(parameter.normalize_user_value(None))
153 else:
154 self.parameter_values.set(original_values)
155 raise InvalidValueException(parameter.name, validation_error)
156
157 self.parameter_values[parameter.name] = value_wrapper
158 processed[parameter.name] = parameter
159 anything_changed = True
160
161 if not anything_changed:
162 remaining = [p.name for p in self.parameters if p.name not in processed]
163 self.parameter_values.set(original_values)
164 raise Exception('Could not resolve order for dependencies. Remaining: ' + str(remaining))
165
166 for key, value in param_values.items():
167 if self.find_parameter(key) is None:
168 LOGGER.warning('Incoming value for unknown parameter ' + key)
169
170 def list_files_for_param(self, parameter_name, path):
171 parameter = self.find_parameter(parameter_name)

Calls 9

find_parameterMethod · 0.95
normalize_user_valueMethod · 0.80
create_value_wrapperMethod · 0.80
validate_valueMethod · 0.80
getMethod · 0.45
setMethod · 0.45