228 def store(self, value):
229 if isinstance(value, Configurable):
230 value.name
231 elif isinstance(value, str):
232
233 if value in Configurable.instances:
234 value = Configurable.instances[value]
235 else:
236
237 if "/" in value:
238 t, n = value.split("/")
239 else:
240 t = n = value
241 value = Configurables.getByType(t).getInstance(n)
242 else:
243 raise TypeError(
244 "cannot assign {!r} to {!r}, requested string or {!r}".
format(
245 value, self.name, self.cpp_type
246 )
247 )
248 if value.__component_type__ != self.cpp_type:
249 raise TypeError(
250 "wrong type for {!r}: expected {!r}, got {!r}".
format(
251 self.name, self.cpp_type, value.__component_type__
252 )
253 )
254 try:
255
256 if value.__interfaces__:
257 if not self.interfaces.issubset(value.__interfaces__):
258 raise TypeError(
259 "wrong interfaces for {!r}: required {}".
format(
260 self.name, list(self.interfaces)
261 )
262 )
263 except AttributeError:
264 pass
265 return value
266
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".