Source code for bqskit.passes.control.predicate

"""This module defines the PassPredicate base class."""
from __future__ import annotations

import abc

from bqskit.compiler.passdata import PassData
from bqskit.ir.circuit import Circuit


[docs] class PassPredicate(abc.ABC): """ The PassPredicate abstract base class. A PassPredicate implements the :func:`get_truth_value` method, which is called from control passes to determine the flow of execution. """
[docs] @abc.abstractmethod def get_truth_value(self, circuit: Circuit, data: PassData) -> bool: """Call this predicate and retrieve the truth value result."""
def __call__(self, circuit: Circuit, data: PassData) -> bool: """Call this predicate and retrieve the truth value result.""" if not isinstance(circuit, Circuit): raise TypeError(f'Expected Circuit, got {type(circuit)}.') if not isinstance(data, PassData): raise TypeError(f'Expected PassData, got {type(data)}.') return self.get_truth_value(circuit, data)