Diagnostics

class lsst.daf.relation.Diagnostics(is_doomed: bool, messages: list)

Bases: object

A relation-processing algorithm that attempts to explain why a relation has no rows.

The Diagnostics class itself is just the type returned by its run class method, which performs a depth-first tree traversal looking for relations that are either known in advance to have no rows (Relation.max_rows zero) or shown to have no rows via an executor callable; when present, these are then propagated downstream to the root. Only operations that can remove all rows (UnaryOperation.is_empty_invariant is False) are executed when no empty leaf relations are found.x

Methods Summary

run(relation, executor, bool], None] = None) Report on whether the given relation has no rows, and if so, why.

Methods Documentation

classmethod run(relation: lsst.daf.relation._relation.Relation, executor: Optional[collections.abc.Callable[lsst.daf.relation._relation.Relation, bool], None] = None) → lsst.daf.relation._diagnostics.Diagnostics

Report on whether the given relation has no rows, and if so, why.

Parameters:
relation : Relation

Relation to analyze.

executor : Callable, optional

If provided, a callable that takes a Relation and does some engine-specific processing to determine whether it has any rows, such as a LIMIT 1 query in SQL. If not provided, diagnostics will be based only on relations with Relation.max_rows set to zero.

Returns:
diagnostics : Diagnostics

Struct containing the diagnostics report.