3 import GaudiConfig2.semantics
4 from GaudiKernel.DataHandle
import DataHandle
10 Semantics for all data handle keys (Read, Write, Decor, Cond).
12 __handled_types__ = (re.compile(
r"SG::.*HandleKey<.*>$"),)
17 self.
_type =
next(GaudiConfig2.semantics.extract_template_args(cpp_type))
20 if cpp_type.startswith(
"SG::Read"):
22 elif cpp_type.startswith(
"SG::Write"):
25 raise TypeError(f
"C++ type {cpp_type} not supported")
28 if isinstance(value, DataHandle):
30 elif isinstance(value, str):
33 raise TypeError(f
"cannot assign {value!r} ({type(value)}) to {self.name}"
34 ", expected string or DataHandle")
40 Treat VarHandleKeyArrays like arrays of strings
42 __handled_types__ = (
"SG::VarHandleKeyArray",)
45 """Semantics for an item (DataHandle) in a VarHandleKeyArray converting to string"""
51 if isinstance(value, DataHandle):
53 elif isinstance(value, str):
56 raise TypeError(f
"cannot assign {value!r} ({type(value)}) to {self.name}"
57 ", expected string or DataHandle")
69 from AthenaServices.ItemListSemantics
import OutputStreamItemListSemantics
71 GaudiConfig2.semantics.SEMANTICS.append(VarHandleKeySemantics)
72 GaudiConfig2.semantics.SEMANTICS.append(VarHandleArraySematics)
73 GaudiConfig2.semantics.SEMANTICS.append(OutputStreamItemListSemantics)