ExecutionGraphFixup

class lsst.ctrl.mpexec.ExecutionGraphFixup

Bases: abc.ABC

Interface for classes which update quantum graphs before execution.

Primary goal of this class is to modify quanta dependencies which may not be possible to reflect in a quantum graph using standard tools. One known use case for that is to guarantee particular execution order of visits in CI jobs for cases when outcome depends on the processing order of visits (e.g. AP association pipeline).

Instances of this class receive pre-ordered sequence of quanta (QuantumIterData instances) and they are allowed to modify quanta data in place, for example update dependencies field to add additional dependencies. Returned list of quanta will be re-ordered once again by the graph executor to reflect new dependencies.

Methods Summary

fixupQuanta(quanta) Update quanta in a graph.

Methods Documentation

fixupQuanta(quanta: Iterable[lsst.pipe.base.graph.QuantumIterData]) → Iterable[lsst.pipe.base.graph.QuantumIterData]

Update quanta in a graph.

Potentially anything in the graph could be changed if it does not break executor assumptions. Returned quanta will be re-ordered by executor, if modifications result in a dependency cycle the executor will raise an exception.

Parameters:
quanta : iterable [QuantumIterData]

Iterable of topologically ordered quanta as returned from lsst.pipe.base.QuantumGraph.traverse method.

Yields:
quantum : QuantumIterData