Source code for prodigy.analysis.instructionhandler.instruction_handler

from __future__ import annotations

from abc import ABC, abstractmethod
from typing import Union, Sequence, Callable

from prodigy.pgcl import Instr

from prodigy.analysis.config import ForwardAnalysisConfig
from prodigy.analysis.instructionhandler.program_info import ProgramInfo
from prodigy.distribution import Distribution


[docs] class InstructionHandler(ABC): """ Abstract class that defines a strategy for handling a specific program instruction. """
[docs] @staticmethod @abstractmethod def compute( instruction: Union[Instr, Sequence[Instr]], prog_info: ProgramInfo, distribution: Distribution, error_prob: Distribution, config: ForwardAnalysisConfig, analyzer: Callable[ [Union[Instr, Sequence[Instr]], ProgramInfo, Distribution, Distribution, ForwardAnalysisConfig], tuple[Distribution, Distribution] ] ) -> tuple[Distribution, Distribution]: """Computes the updated distribution after executing the instruction `instruction` on input `distribution`"""