Skip to content

PyConf: match IO DataHandle types

Rosen Matev requested to merge rmatev-pyconf into master

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)

Edited by Rosen Matev

Merge request reports