from itertools import product

import networkx as nx
import numpy as np
import pandas as pd

from .probability import (
    Variable, ProbabilityTree, JointDist, TreeDistribution)


class Equation(object):
    """Maps input variable(s) to output variable(s)"""

    INPUT_LABEL = 'Input'
    OUTPUT_LABEL = 'Output'

    def __init__(self, name, inputs, outputs, strategy_func):
        """Use the strategy_func to map inputs to outputs.

        Args:
            name (str): Identifying name of equation.
            inputs (List[Variable]): Variables to map from.