# -*- coding: utf-8 -*-
# (c) Copyright by Pierre-Henri Wuillemin, UPMC, 2011  (pierre-henri.wuillemin@lip6.fr)

# Permission to use, copy, modify, and distribute this
# software and its documentation for any purpose and
# without fee or royalty is hereby granted, provided
# that the above copyright notice appear in all copies
# and that both that copyright notice and this permission
# notice appear in supporting documentation or portions
# thereof, including modifications, that you make.

# THE AUTHOR P.H. WUILLEMIN  DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
# SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT
# OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
# OR PERFORMANCE OF THIS SOFTWARE!

"""
Causality in pyAgrum mainly consists in the ability to build a causal model, i.e. a (observational) Bayesian network
and a set of latent variables and their relation with observation variables and in the abilidy to compute using
do-calculus the causal impact in such a model.
"""

__author__ = "Pierre-Henri Wuillemin, Paul Alam, Ibrahim Merad"
__copyright__ = "(c) 2019 PARIS"
import sys

if sys.version_info < (3, 7):
  print("[pyAgrum] python 3.7 is needed for pyAgrum's causality package.")
  sys.exit(1)

from ._exceptions import HedgeException, UnidentifiableException
from ._CausalModel import CausalModel
from ._CausalFormula import CausalFormula
from ._doCalculus import doCalculusWithObservation, identifyingIntervention
from ._causalImpact import causalImpact
from ._doAST import ASTtree, ASTjointProba, ASTmult, ASTdiv, ASTsum, ASTposteriorProba, ASTminus, ASTplus, ASTBinaryOp

__all__ = ['CausalModel', 'CausalFormula',
           'causalImpact', 'doCalculusWithObservation', 'identifyingIntervention',
           'HedgeException', 'UnidentifiableException',
           'ASTtree', 'ASTjointProba', 'ASTmult', 'ASTdiv', 'ASTsum', 'ASTposteriorProba', 'ASTminus', 'ASTplus',
           'ASTBinaryOp']
