Predicate

class lsst.daf.relation.Predicate

Bases: abc.ABC

An abstract base class and factory for boolean column expressions.

Predicate inheritance is closed to the types already provided by this package, but considerable custom behavior can still be provided via the PredicateFunction class and an Engine that knows how to interpret its name value. These concrete types can all be constructed via factory methods on Predicate itself, ColumnExpression, or ColumnContainer, so the derived types themselves only need to be referenced when writing match expressions that process an expression tree. See Extensibility for rationale and details.

Attributes Summary

columns_required Columns required by this expression (Set [ ColumnTag ]).

Methods Summary

as_trivial() Attempt to simplify this expression into a constant boolean.
is_supported_by(engine) Test whether the given engine is capable of evaluating this expression.
literal(value) Construct a boolean expression that is a constant True or False.
logical_and() Return a boolean expression that is the logical AND of the given ones.
logical_not() Return a boolean expression that is the logical NOT of this one.
logical_or() Return a boolean expression that is the logical OR of the given ones.
reference(tag) Construct an expression that refers to a boolean column in a relation.

Attributes Documentation

columns_required

Columns required by this expression (Set [ ColumnTag ]).

This includes columns required by expressions nested within this one.

Methods Documentation

as_trivial() → bool | None[bool, None]

Attempt to simplify this expression into a constant boolean.

Returns:
trivial : bool or None

If True or False, the expression always evaluates to exactly that constant value. If None, the expression is nontrivial (or at least could not easily be simplified into a trivial expression).

is_supported_by(engine: Engine) → bool

Test whether the given engine is capable of evaluating this expression.

Parameters:
engine : Engine

Engine to test.

Returns:
supported : bool

Whether the engine supports this expression and all expressions nested within it.

classmethod literal(value: bool) → lsst.daf.relation._columns._predicate.PredicateLiteral

Construct a boolean expression that is a constant True or False.

Parameters:
value : bool

Value for the expression.

Returns:
literal : PredicateLiteral

A boolean column expression set to the given value.

logical_and() → lsst.daf.relation._columns._predicate.Predicate

Return a boolean expression that is the logical AND of the given ones.

Parameters:
*operands : Predicate

Existing boolean expressions to AND together.

Returns:
logical_and : Predicate

Logical AND expression. If no operands are provided, a PredicateLiteral for True is returned. If one operand is provided, it is returned directly.

logical_not() → lsst.daf.relation._columns._predicate.LogicalNot

Return a boolean expression that is the logical NOT of this one.

Returns:
logical_not : Predicate

Logical NOT expression.

logical_or() → lsst.daf.relation._columns._predicate.Predicate

Return a boolean expression that is the logical OR of the given ones.

Parameters:
*operands : Predicate

Existing boolean expressions to OR together.

Returns:
logical_and : Predicate

Logical OR expression. If no operands are provided, a PredicateLiteral for False is returned. If one operand is provided, it is returned directly.

classmethod reference(tag: lsst.daf.relation._columns._tag.ColumnTag) → lsst.daf.relation._columns._predicate.PredicateReference

Construct an expression that refers to a boolean column in a relation.

Parameters:
tag : ColumnTag

Identifier for the column to reference.

Returns:
reference : PredicateReference

A column expression that refers the given relation column.