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