PyConf: match IO DataHandle types
Check compatibility of input and output data handle types
Thanks to this is feature, an obvious mistake in the data flow will be caught very early (in the python configuration rather than the C++ initialization) and a useful stack trace will be given.
Whether an (output) DataHandle of a given type can be accepted where an (input) DataHandle of a given type is expected is determined by a a couple of hard-coded rules (X -> X, KeyedContainer -> Range, SharedObjectsContainer -> Range, unknown_t -> X, X -> unknown_t).
If the heuristic fails (or if needed for tests), the workaround is to use
the newly added UntypedDataHandle by calling dh.untyped()
with which the
check is effectively circumvented.
The new check revealed a few "issues" (now fixed) in the PyConf tests and in the reconstruction configuration.
Refactor common logic of PyConf.Tools and Algorithms
The special "modules" PyConf.Tools
and PyConf.Algorithms
used to wrap Configurables
were identical modulo exchanging Tool and Algorithm. Now the common logic is in one place which will make future work (e.g. adapt to GaudiConf2) easier.
Depends on Rec!2294 (merged) Related to Brunel!1100 (merged)