Module Expr Str ImportFrom alias ImportFrom alias ImportFrom alias Import alias Import alias Import alias ImportFrom alias ImportFrom alias ImportFrom alias alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Call AttributeLoad NameLoad attr Str ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body If NameLoad body Assign NameStore Dict For NameStore Call NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad ListLoad BinOpAdd NameLoad Num Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body If UnaryOpNot CompareEq Call NameLoad NameLoad Call NameLoad NameLoad body Return NameLoad If UnaryOpNot CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad If UnaryOpNot CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad If UnaryOpNot CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore BinOpBitXor BinOpBitXor BinOpBitXor Call NameLoad Call NameLoad NameLoad Call NameLoad AttributeLoad NameLoad attr Call NameLoad AttributeLoad NameLoad attr Call NameLoad AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore ListLoad If CompareIsNot AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr If AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr Str If AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr Str Return BinOpMod Str Call AttributeLoad Str attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore SubscriptLoad SubscriptLoad NameLoad Slice Num Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad NameLoad Slice Num Slice AttributeLoad NameLoad attr Assign NameStore ListLoad For NameStore NameLoad body If Call NameLoad NameLoad TupleLoad NameLoad NameLoad body AugAssignAdd NameStore Call NameLoad NameLoad orelse Return BinOpMult ListLoad NameLoad AttributeLoad NameLoad attr Assign NameStore ListLoad For NameStore NameLoad body If Call NameLoad NameLoad TupleLoad NameLoad NameLoad body AugAssignAdd NameStore Call NameLoad NameLoad orelse Return BinOpMult ListLoad NameLoad AttributeLoad NameLoad attr Assert CompareEq Call NameLoad NameLoad Call NameLoad NameLoad If CompareGt Call NameLoad BinOpAdd NameLoad NameLoad Num body Assign NameStore ListLoad Str If CompareIsNot AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword Call NameLoad NameLoad keyword NameLoad keyword NameLoad keyword Call AttributeLoad Str attr NameLoad Assign NameStore Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index Num BinOpAdd NameLoad NameLoad Call NameLoad keyword NameLoad orelse Assign NameStore ListLoad Assign NameStore ListLoad For NameStore AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr Call NameLoad SubscriptLoad NameLoad Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad NameLoad Slice AttributeLoad NameLoad attr Assert CompareEq Call NameLoad NameLoad Num Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults vararg body Assert CompareEq Call NameLoad NameLoad BinOpMult Num AttributeLoad NameLoad attr BinOpMod Str TupleLoad BinOpMult Num AttributeLoad NameLoad attr Call NameLoad NameLoad If UnaryOpNot AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore ListLoad For NameStore NameLoad body If Call NameLoad NameLoad AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr NameLoad orelse Expr Call AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore NameLoad Assign NameStore SubscriptLoad NameLoad Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad NameLoad Slice AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad body If CompareNotEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Raise Call NameLoad Str NameLoad NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr If CompareGt AttributeLoad NameLoad attr Num body Raise Call NameLoad Str Return Call NameLoad NameLoad BinOpAdd ListLoad NameLoad Call NameLoad NameLoad ListComp Call AttributeLoad NameLoad attr comprehension NameStore NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Return Call NameLoad SubscriptLoad NameLoad Index Num SubscriptLoad NameLoad Slice Num Call NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore SubscriptLoad SubscriptLoad NameLoad Slice Num Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad NameLoad Slice Num Slice AttributeLoad NameLoad attr If CompareIsNot AttributeLoad NameLoad attr NameLoad body Assign NameStore BinOpAdd AttributeLoad NameLoad attr Str Assign NameStore BinOpAdd AttributeLoad NameLoad attr Str orelse Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Assign NameStore BinOpAdd BinOpAdd ListLoad SubscriptLoad NameLoad Index Num NameLoad ListComp Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad comprehension NameStore NameLoad Assign NameStore BinOpAdd BinOpAdd ListLoad SubscriptLoad NameLoad Index Num ListComp Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad comprehension NameStore NameLoad NameLoad Assign NameStore SubscriptLoad NameLoad Index Num Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr Return BinOpAdd BinOpAdd ListLoad NameLoad Call NameLoad NameLoad Call NameLoad keyword NameLoad Call NameLoad NameLoad Call NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index Num Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr FunctionDef arguments args defaults body If UnaryOpNot SubscriptLoad SubscriptLoad NameLoad Index NameLoad Index Num body Return ListLoad Num orelse Assign NameStore SubscriptLoad SubscriptLoad NameLoad Index NameLoad Index Num If CompareNotEq NameLoad Num body Assign NameStore ListComp BinOpAdd NameLoad Num comprehension NameStore Call NameLoad AttributeLoad NameLoad attr UnaryOpNot SubscriptLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad Index Num If CompareGt Call NameLoad NameLoad Num body Return NameLoad orelse For TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad body Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num Num Assign NameStore SubscriptLoad SubscriptLoad NameLoad Index NameLoad Index Num If AttributeLoad NameLoad attr body Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num NameLoad orelse If CompareIn Call NameLoad NameLoad TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num Call AttributeLoad NameLoad attr orelse Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num Call NameLoad NameLoad Return ListLoad orelse Assign NameStore ListComp BinOpAdd BinOpAdd Num NameLoad AttributeLoad NameLoad attr comprehension NameStore Call NameLoad AttributeLoad NameLoad attr UnaryOpNot SubscriptLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad Index Num If CompareGt Call NameLoad NameLoad Num body Return NameLoad orelse For TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad body Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num Num Assign NameStore SubscriptLoad SubscriptLoad NameLoad Index NameLoad Index Num If CompareIn Call NameLoad NameLoad TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num Call AttributeLoad NameLoad attr orelse Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index Num Call NameLoad NameLoad Return ListLoad decorator_list Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr ListComp SubscriptLoad NameLoad Index NameLoad comprehension NameStore AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr ListComp SubscriptLoad NameLoad Index NameLoad comprehension NameStore AttributeLoad NameLoad attr Return NameLoad decorator_list decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore NameLoad If CompareIs Call NameLoad NameLoad NameLoad body Assign NameStore NameLoad orelse If CompareIs Call NameLoad NameLoad NameLoad body Assign NameStore NameLoad If CompareNotIn Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Assign NameStore ListLoad NameLoad If CompareNotIn Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Assign NameStore ListLoad NameLoad Assign NameStore ListLoad Assign NameStore ListLoad For TupleStore NameStore NameStore Call NameLoad NameLoad NameLoad body If UnaryOpNot Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad If UnaryOpNot Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad If CompareNotEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body If BoolOpAnd Call NameLoad AttributeLoad NameLoad attr NameLoad UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad orelse If BoolOpAnd Call NameLoad AttributeLoad NameLoad attr NameLoad UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad If CompareNotEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad If CompareNotEq Call NameLoad NameLoad Call NameLoad NameLoad body Raise Call NameLoad BinOpAdd BinOpAdd BinOpMod Str Call NameLoad NameLoad BinOpMod Str Call NameLoad NameLoad Str Assign NameStore Call NameLoad keyword Call NameLoad NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Assign NameStore BinOpAdd BinOpAdd ListLoad NameLoad Call NameLoad NameLoad Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad Call NameLoad keyword NameLoad If CompareIs NameLoad NameLoad body Return SubscriptLoad NameLoad Index Num orelse If CompareIs NameLoad NameLoad body Return Call NameLoad NameLoad orelse Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore AttributeLoad NameLoad attr If BoolOpAnd Call NameLoad NameLoad NameLoad UnaryOpNot AttributeLoad NameLoad attr BoolOpOr CompareLt Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr Num UnaryOpNot Call NameLoad ListComp CompareEq Call NameLoad AttributeLoad NameLoad attr Str Num Num comprehension NameStore AttributeLoad NameLoad attr body Return Call Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad keyword NameLoad Return NameLoad decorator_list Call AttributeLoad NameLoad attr ListLoad NameLoad Expr Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr NameLoad keyword NameLoad Num Str Str Expr Str Assign NameStore TupleLoad AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr FunctionDef arguments args NameParam defaults body Expr Str If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Return NameLoad Assign NameStore Call NameLoad For NameStore AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore ListComp NameLoad comprehension NameStore Call NameLoad NameLoad BoolOpAnd NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad If CompareNotEq Call NameLoad NameLoad Num body Return NameLoad Assign NameStore SubscriptLoad NameLoad Index Num Assign NameStore AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr Assign NameStore ListLoad Assign NameStore ListLoad For NameStore AttributeLoad NameLoad attr body If CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad orelse Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad NameLoad Call NameLoad keyword NameLoad Assign NameStore Call NameLoad NameLoad Call NameLoad keyword NameLoad Assign NameStore Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index Num NameLoad NameLoad keyword NameLoad Return NameLoad decorator_list Call AttributeLoad NameLoad attr NameLoad FunctionDef arguments args NameParam defaults body Assign NameStore AttributeLoad NameLoad attr If UnaryOpNot Call NameLoad NameLoad NameLoad body Return NameLoad Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore Dict For TupleStore NameStore NameStore Call NameLoad NameLoad body If BoolOpAnd AttributeLoad NameLoad attr Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr NameLoad CompareEq SubscriptLoad AttributeLoad AttributeLoad NameLoad attr attr Index Num SubscriptLoad AttributeLoad NameLoad attr Index Num body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad AttributeLoad NameLoad attr attr Slice Num Slice AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index BinOpAdd NameLoad Num SubscriptLoad NameLoad Index Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad If CompareEq Call NameLoad NameLoad Num body Return NameLoad Assign NameStore Call NameLoad AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad Return Call NameLoad NameLoad Call NameLoad keyword NameLoad decorator_list Call AttributeLoad NameLoad attr ListLoad NameLoad FunctionDef arguments args NameParam defaults body Assign NameStore AttributeLoad NameLoad attr If UnaryOpNot Call NameLoad NameLoad NameLoad body Return NameLoad Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore Dict For TupleStore NameStore NameStore Call NameLoad NameLoad body If BoolOpAnd AttributeLoad NameLoad attr Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr NameLoad CompareEq SubscriptLoad AttributeLoad AttributeLoad NameLoad attr attr Index Num SubscriptLoad AttributeLoad NameLoad attr Index Num body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad AttributeLoad NameLoad attr attr Slice Num Slice AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index BinOpAdd BinOpAdd NameLoad Num AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad If CompareEq Call NameLoad NameLoad Num body Return NameLoad Assign NameStore Call NameLoad AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad Return Call NameLoad NameLoad Call NameLoad keyword NameLoad decorator_list Call AttributeLoad NameLoad attr ListLoad NameLoad ClassDef bases AttributeLoad NameLoad attr body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Call AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr Assign NameStore ListComp NameLoad comprehension NameStore NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad If CompareLt Call NameLoad NameLoad Num body Return NameLoad Assign NameStore SubscriptLoad NameLoad Index Num For NameStore SubscriptLoad NameLoad Slice Num body If BoolOpAnd CompareEq SubscriptLoad AttributeLoad NameLoad attr Index Num SubscriptLoad AttributeLoad NameLoad attr Index Num UnaryOpNot Call NameLoad NameLoad NameLoad body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore BinOpAdd BinOpAdd BinOpAdd BinOpAdd ListLoad SubscriptLoad AttributeLoad NameLoad attr Index Num NameLoad NameLoad NameLoad NameLoad Assign NameStore Str If AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Str If AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call NameLoad keyword Call NameLoad BinOpAdd NameLoad NameLoad keyword NameLoad keyword NameLoad keyword BinOpAdd BinOpAdd NameLoad Str NameLoad Expr Call NameLoad Str Assign NameStore Call NameLoad NameLoad Call NameLoad keyword NameLoad Assign NameStore ListComp Call NameLoad NameLoad comprehension NameStore NameLoad Assign NameStore ListLoad If CompareNotIn Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body AugAssignAdd NameStore ListLoad AttributeLoad NameLoad attr orelse AugAssignAdd NameStore AttributeLoad NameLoad attr If CompareNotIn Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body AugAssignAdd NameStore ListLoad AttributeLoad NameLoad attr orelse AugAssignAdd NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad Call NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad keyword Str decorator_list decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore AttributeLoad NameLoad attr If UnaryOpNot Call NameLoad NameLoad NameLoad body Return NameLoad Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad NameLoad attr Assign NameStore Dict For NameStore Call NameLoad Call NameLoad AttributeLoad NameLoad attr body If CompareNotIn NameLoad NameLoad body For NameStore Call NameLoad BinOpAdd NameLoad Num Call NameLoad AttributeLoad NameLoad attr body If BoolOpAnd CompareEq SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad CompareEq SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad CompareNotIn NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad If CompareEq Call NameLoad NameLoad Num body Return NameLoad Assign NameStore ListLoad Assign NameStore ListLoad Assign NameStore Dict Assign NameStore Num For NameStore Call NameLoad Call NameLoad AttributeLoad NameLoad attr body If CompareNotIn NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad Assign NameStore BinOpAdd NameLoad Num Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad Assign NameStore Call NameLoad keyword Call NameLoad NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore BinOpAdd BinOpAdd ListLoad SubscriptLoad AttributeLoad NameLoad attr Index Num NameLoad NameLoad Assign NameStore Call NameLoad NameLoad Call NameLoad keyword NameLoad Assign NameStore ListLoad For NameStore Call NameLoad Call NameLoad AttributeLoad NameLoad attr body If CompareIn NameLoad NameLoad body AugAssignAdd NameStore ListLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad orelse AugAssignAdd NameStore ListLoad SubscriptLoad NameLoad Index SubscriptLoad NameLoad Index NameLoad Return NameLoad decorator_list Call AttributeLoad NameLoad attr ListLoad NameLoad FunctionDef arguments args NameParam defaults body If Call NameLoad AttributeLoad NameLoad attr NameLoad body Return NameLoad Assign NameStore Call NameLoad For NameStore AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore ListComp NameLoad comprehension NameStore Call NameLoad NameLoad BoolOpAnd NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad If CompareLt Call NameLoad NameLoad Num body Return NameLoad Assign NameStore SubscriptLoad NameLoad Index Num For NameStore SubscriptLoad NameLoad Slice Num body If BoolOpAnd CompareEq SubscriptLoad AttributeLoad NameLoad attr Index Num SubscriptLoad AttributeLoad NameLoad attr Index Num UnaryOpNot Call NameLoad NameLoad NameLoad UnaryOpNot Call NameLoad NameLoad NameLoad body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Slice Num Slice AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore BinOpAdd BinOpAdd BinOpAdd BinOpAdd ListLoad SubscriptLoad AttributeLoad NameLoad attr Index Num NameLoad NameLoad NameLoad NameLoad Assign NameStore Str If AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Str If AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call NameLoad keyword Call NameLoad BinOpAdd NameLoad NameLoad keyword NameLoad keyword NameLoad keyword BinOpAdd BinOpAdd NameLoad Str NameLoad Assign NameStore Call NameLoad NameLoad Call NameLoad keyword NameLoad Assign NameStore ListLoad If CompareNotIn Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body AugAssignAdd NameStore ListLoad AttributeLoad NameLoad attr orelse AugAssignAdd NameStore AttributeLoad NameLoad attr If CompareNotIn Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body AugAssignAdd NameStore ListLoad AttributeLoad NameLoad attr orelse AugAssignAdd NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad Call NameLoad NameLoad NameLoad Assign NameStore Call NameLoad AttributeLoad NameLoad attr keyword NameLoad Return NameLoad decorator_list Call AttributeLoad NameLoad attr ListLoad NameLoad
N/A N/A 
IfElse introduces lazy evaluation in Theano (coupled with the CVM/VM
linkers). It resembles the if clause of any programming language, that
has a `then` and `else` branch, and executes either one or the other
according to the condition provided.

This op differs from the already existent `switch` op, that evaluates both
branches of the clause and afterwards picks (according to the condition)
which value to report. Note also that `switch` is an elemwise operation (so
it picks each entry of a matrix according to the condition) while `ifelse`
is a global operation with a scalar condition.
 __future__ print_function copy deepcopy theano.compat izip N/A logging N/A numpy N/A theano.tensor theano.tensor TensorType theano gof theano.gof PureOp Apply six iteritems six.moves xrange theano.compile optdb theano.tensor opt theano.scan_module.scan_utils find_up theano.scan_module.scan_utils clone N/A __docformat__ restructedtext en N/A __authors__ Razvan Pascanu James Bergstra Dumitru Erhan David Warde-Farley N/A __copyright__ (c) 2010, Universite de Montreal N/A __contact__ Razvan Pascanu <r.pascanu@gmail> N/A _logger N/A N/A logging getLogger theano.ifelse IfElse N/A PureOp N/A N/A 
    Op that provides conditional graph evaluation if used with the CVM/VM
    linkers. Note that there exist a helpful function `ifelse` that should
    be used to instantiate the op!

    According to a scalar condition `condition` the op evaluates and then
    returns all the tensors provided on the `then` branch, otherwise it
    evaluates and returns the tensors provided on the `else` branch. The op
    supports multiple tensors on each branch, with the condition that the same
    number of tensors are on the `then` as on the `else` and there is a one
    to one correspondence between them (shape and dtype wise).

    The `then` branch is defined as the first N tensors (after the
    condition), while the `else` branch is defined as the last N tensors.

    Example usage:

        ``rval = ifelse(condition, rval_if_true1, .., rval_if_trueN,
                        rval_if_false1, rval_if_false2, .., rval_if_falseN)``

    :note:
        Other Linkers then CVM and VM are INCOMPATIBLE with this Op, and
        will ignore its lazy characteristic, computing both the True and
        False branch before picking one.

     __init__ N/A N/A self n_outs as_view gpu name N/A False False None N/A N/A as_view N/A N/A view_map N/A N/A idx N/A xrange n_outs N/A N/A N/A view_map N/A idx N/A N/A idx 1 N/A N/A self view_map view_map N/A N/A self as_view as_view N/A N/A self gpu gpu N/A N/A self n_outs n_outs N/A N/A self name name N/A __eq__ N/A N/A self other N/A N/A N/A N/A N/A N/A type self N/A type other N/A N/A False N/A N/A N/A N/A self as_view N/A other as_view N/A N/A False N/A N/A N/A N/A self gpu N/A other gpu N/A N/A False N/A N/A N/A N/A self n_outs N/A other n_outs N/A N/A False N/A True N/A __hash__ N/A N/A self N/A N/A N/A rval N/A N/A N/A N/A hash N/A type self N/A hash N/A self as_view N/A hash N/A self gpu N/A hash N/A self n_outs N/A rval N/A __str__ N/A N/A self N/A N/A N/A args N/A N/A N/A N/A self name None N/A N/A N/A N/A args append N/A self name N/A N/A self as_view N/A N/A N/A N/A args append inplace N/A N/A self gpu N/A N/A N/A N/A args append gpu N/A N/A if{%s} N/A N/A , join args N/A infer_shape N/A N/A self node inputs_shapes N/A N/A N/A ts_shapes N/A N/A inputs_shapes N/A 1 N/A N/A self n_outs N/A fs_shapes N/A N/A inputs_shapes N/A 1 N/A N/A self n_outs N/A new_ts_inputs N/A N/A ts_shape ts_shapes N/A N/A N/A isinstance ts_shape N/A list tuple N/A N/A new_ts_inputs N/A list ts_shape N/A N/A N/A N/A None N/A self n_outs N/A new_fs_inputs N/A N/A fs_shape fs_shapes N/A N/A N/A isinstance fs_shape N/A list tuple N/A N/A new_fs_inputs N/A list fs_shape N/A N/A N/A N/A None N/A self n_outs N/A N/A N/A len new_ts_inputs N/A len new_fs_inputs N/A N/A N/A len N/A new_ts_inputs new_fs_inputs 0 N/A N/A name_tokens N/A shape N/A N/A N/A self name None N/A N/A N/A N/A name_tokens append N/A self name N/A new_ifelse N/A IfElse n_outs N/A len new_ts_inputs as_view False gpu False name N/A N/A _ join name_tokens N/A new_outs N/A new_ifelse N/A N/A node inputs N/A 0 N/A new_ts_inputs new_fs_inputs N/A dict return_list True N/A N/A new_outs N/A N/A out_shapes N/A N/A out N/A node outputs N/A N/A N/A N/A out_shapes append N/A tuple N/A new_outs N/A N/A out ndim N/A new_outs N/A new_outs N/A N/A out ndim N/A N/A N/A len new_outs 0 N/A out_shapes N/A make_node N/A N/A self c N/A args N/A N/A N/A N/A len args N/A 2 N/A self n_outs N/A Wrong number of arguments to make_node: expected %d, got %d N/A N/A 2 N/A self n_outs N/A len args N/A N/A N/A self gpu N/A N/A c N/A N/A N/A theano tensor as_tensor_variable c N/A nw_args N/A N/A x args N/A N/A N/A isinstance x N/A theano Variable N/A N/A N/A N/A nw_args append x N/A N/A N/A N/A nw_args append N/A N/A N/A theano tensor as_tensor_variable x N/A args nw_args N/A ts N/A args N/A N/A self n_outs N/A fs N/A args N/A N/A self n_outs N/A N/A t f N/A izip ts fs N/A N/A N/A N/A t type N/A f type N/A N/A N/A TypeError IfElse requires same types for true and false return values t f N/A t type N/A f type N/A N/A N/A c ndim 0 N/A N/A N/A TypeError Condition given to the op has to be a scalar with 0 standing for False, anything else for True N/A N/A Apply self N/A N/A c N/A list args N/A N/A N/A t type N/A t ts N/A R_op N/A N/A self inputs eval_points N/A N/A N/A N/A self N/A inputs N/A 0 N/A eval_points N/A 1 N/A dict return_list True N/A grad N/A N/A self ins grads N/A N/A N/A ts N/A N/A ins N/A 1 N/A N/A self n_outs N/A fs N/A N/A ins N/A 1 N/A N/A self n_outs N/A N/A N/A self name None N/A N/A nw_name_t N/A N/A self name _grad_t N/A nw_name_f N/A N/A self name _grad_f N/A N/A nw_name_t None N/A nw_name_f None N/A if_true_op N/A IfElse n_outs N/A self n_outs as_view N/A self as_view gpu N/A self gpu name nw_name_t N/A if_false_op N/A IfElse n_outs N/A self n_outs as_view N/A self as_view gpu N/A self gpu name nw_name_f N/A if_true N/A N/A N/A N/A ins N/A 0 grads N/A N/A N/A N/A theano tensor zeros_like t N/A t ts N/A if_false N/A N/A N/A N/A ins N/A 0 N/A N/A N/A N/A theano tensor zeros_like f N/A f fs grads N/A condition N/A ins N/A 0 N/A condition_grad N/A N/A N/A N/A condition zeros_like astype N/A N/A theano config floatX N/A N/A N/A N/A condition_grad N/A if_true_op if_true N/A dict return_list True N/A if_false_op if_false N/A dict return_list True N/A make_thunk N/A N/A self node storage_map compute_map no_recycling N/A N/A N/A cond N/A N/A node inputs N/A 0 N/A ts N/A N/A N/A node inputs N/A 1 N/A N/A self n_outs N/A fs N/A N/A N/A node inputs N/A 1 N/A N/A self n_outs N/A outputs N/A node outputs thunk N/A N/A N/A N/A N/A N/A N/A N/A compute_map N/A cond N/A 0 N/A N/A N/A 0 N/A N/A truthval N/A N/A storage_map N/A cond N/A 0 N/A N/A truthval 0 N/A N/A ls N/A N/A idx 1 N/A idx N/A xrange N/A self n_outs N/A N/A N/A compute_map N/A N/A ts N/A idx N/A 0 N/A N/A N/A len ls 0 N/A N/A ls N/A N/A N/A out t N/A izip outputs ts N/A N/A N/A N/A compute_map N/A out N/A 0 1 N/A val N/A N/A storage_map N/A t N/A 0 N/A N/A self as_view N/A N/A N/A N/A storage_map N/A out N/A 0 val N/A N/A N/A N/A type val N/A N/A numpy ndarray N/A numpy memmap N/A N/A N/A N/A storage_map N/A out N/A 0 N/A N/A val copy N/A N/A N/A N/A storage_map N/A out N/A 0 N/A deepcopy val N/A N/A N/A N/A ls N/A N/A N/A 1 idx N/A self n_outs N/A idx N/A xrange N/A self n_outs N/A N/A N/A compute_map N/A N/A fs N/A idx N/A 0 N/A N/A N/A len ls 0 N/A N/A ls N/A N/A N/A out f N/A izip outputs fs N/A N/A N/A N/A compute_map N/A out N/A 0 1 N/A val N/A N/A storage_map N/A f N/A 0 N/A N/A N/A type val N/A N/A numpy ndarray N/A numpy memmap N/A N/A N/A N/A storage_map N/A out N/A 0 N/A N/A val copy N/A N/A N/A N/A storage_map N/A out N/A 0 N/A deepcopy val N/A N/A N/A N/A N/A thunk lazy True N/A N/A thunk inputs N/A N/A storage_map N/A v N/A v N/A node inputs N/A N/A thunk outputs N/A N/A storage_map N/A v N/A v N/A node outputs N/A thunk N/A N/A ifelse N/A N/A condition then_branch else_branch name N/A None N/A N/A 
    This function corresponds to an if statement, returning (and evaluating)
    inputs in the ``then_branch`` if ``condition`` evaluates to True or
    inputs in the ``else_branch`` if ``condition`` evalutates to False.

    :type condition: scalar like
    :param condition:
        ``condition`` should be a tensor scalar representing the condition.
        If it evaluates to 0 it corresponds to False, anything else stands
        for True.

    :type then_branch: list of theano expressions/ theano expression
    :param then_branch:
        A single theano variable or a list of theano variables that the
        function should return as the output if ``condition`` evaluates to
        true. The number of variables should match those in the
        ``else_branch``, and there should be a one to one correspondance
        (type wise) with the tensors provided in the else branch

    :type else_branch: list of theano expressions/ theano expressions
    :param else_branch:
        A single theano variable or a list of theano variables that the
        function should return as the output if ``condition`` evaluates to
        false. The number of variables should match those in the then branch,
        and there should be a one to one correspondace (type wise) with the
        tensors provided in the then branch.

    :return:
        A list of theano variables or a single variable (depending on the
        nature of the ``then_branch`` and ``else_branch``). More exactly if
        ``then_branch`` and ``else_branch`` is a tensor, then
        the return variable will be just a single variable, otherwise a
        list. The value returns correspond either to the values in the
        ``then_branch`` or in the ``else_branch`` depending on the value of
        ``cond``.
     N/A rval_type None N/A N/A N/A type then_branch list N/A N/A rval_type list N/A N/A N/A N/A type then_branch tuple N/A N/A rval_type tuple N/A N/A N/A type then_branch N/A list tuple N/A N/A then_branch N/A then_branch N/A N/A N/A type else_branch N/A list tuple N/A N/A else_branch N/A else_branch N/A new_then_branch N/A N/A new_else_branch N/A N/A N/A then_branch_elem else_branch_elem N/A izip then_branch else_branch N/A N/A N/A N/A isinstance then_branch_elem N/A theano Variable N/A N/A then_branch_elem N/A N/A N/A theano tensor as_tensor_variable then_branch_elem N/A N/A N/A isinstance else_branch_elem N/A theano Variable N/A N/A else_branch_elem N/A N/A N/A theano tensor as_tensor_variable else_branch_elem N/A N/A N/A then_branch_elem type N/A else_branch_elem type N/A N/A N/A N/A isinstance N/A then_branch_elem type TensorType N/A N/A isinstance N/A else_branch_elem type TensorType N/A N/A else_branch_elem N/A N/A N/A then_branch_elem type filter_variable else_branch_elem N/A N/A N/A N/A isinstance N/A else_branch_elem type TensorType N/A N/A isinstance N/A then_branch_elem type TensorType N/A N/A then_branch_elem N/A N/A N/A else_branch_elem type filter_variable then_branch_elem N/A N/A N/A then_branch_elem type N/A else_branch_elem type N/A N/A N/A TypeError N/A The two branches should have identical types, but they are %s and %s respectively. This error could be raised if for example you provided a one element list on the `then` branch but a tensor on the `else` branch. N/A N/A then_branch_elem type N/A else_branch_elem type N/A N/A N/A new_then_branch append then_branch_elem N/A N/A N/A new_else_branch append else_branch_elem N/A N/A N/A len then_branch N/A len else_branch N/A N/A N/A ValueError N/A N/A N/A The number of values on the `then` branch should have the same number of variables as the `else` branch : (variables on `then` %d N/A len then_branch N/A , variables on `else` %d N/A len else_branch ) N/A new_ifelse N/A IfElse n_outs N/A len then_branch as_view False gpu False name name N/A ins N/A N/A N/A condition N/A list new_then_branch N/A list new_else_branch N/A rval N/A new_ifelse ins N/A dict return_list True N/A N/A rval_type None N/A N/A N/A rval N/A 0 N/A N/A N/A rval_type list N/A N/A N/A list rval N/A N/A N/A tuple rval N/A cond_make_inplace N/A N/A node N/A N/A N/A op N/A node op N/A N/A N/A isinstance op IfElse N/A N/A op as_view N/A N/A N/A len N/A N/A node fgraph apply_nodes 500 N/A N/A all N/A N/A N/A getattr N/A o type ndim -1 0 N/A o N/A node outputs N/A N/A N/A N/A IfElse n_outs N/A op n_outs as_view True gpu N/A op gpu name N/A op name N/A node inputs N/A dict return_list True N/A False N/A N/A N/A gof local_optimizer N/A IfElse N/A N/A N/A optdb register cond_make_inplace N/A N/A opt in2out cond_make_inplace ignore_newtrees True 95 fast_run inplace N/A  Comments:
I've wrote this comments to explain how the optimization of ifelse function
(for future developers that need to parse this part of code. Please try to
keep this comments in sync with whatever changes you add to the code.

ifelse optimization are registered before canonicalize !

The optimizations are called in sequence as follows:
    * equilibrium shell (runs until no change):
        * ifelse_lift
        * ifelse_merge_ifs
        * ifelse_merge_nodes
        * ifelse_remove_identical_inside
        * ifelse_sameCondTrue_inside
        * ifelse_sameCondFalse_inside
    * merge_nodes_1
    * ifelse_sameCondTrue
    * ifelse_sameCondFalse
    * ifelse_removeIdentical

where, each of the optimization do the following things:
    `ifelse_lift` (def cond_lift_single_if):

 N/A acceptable_ops N/A N/A N/A N/A theano tensor basic Dot N/A N/A N/A theano tensor basic Reshape N/A N/A N/A theano tensor basic Shape N/A N/A theano tensor SpecifyShape N/A N/A N/A theano tensor basic MaxAndArgmax N/A N/A theano tensor Subtensor N/A N/A theano tensor IncSubtensor N/A N/A N/A theano tensor basic Rebroadcast N/A N/A N/A theano tensor basic Alloc N/A N/A N/A theano tensor elemwise Elemwise N/A N/A N/A theano tensor elemwise DimShuffle ifelse_lift_single_if_through_acceptable_ops N/A N/A main_node N/A N/A N/A This optimization lifts up certain ifelse instances.

        op(ifelse(c, x, y)) -> ifelse(c, op(x), op(y))

    if `op` is in the `acceptable_ops` list, and there is no other if as
    input to that specific `op`, and the if has no other clients !?
     N/A N/A N/A isinstance N/A main_node op acceptable_ops N/A N/A False N/A all_inp_nodes N/A set N/A inp N/A main_node inputs N/A N/A N/A N/A all_inp_nodes add N/A inp owner N/A ifnodes N/A x N/A x N/A list all_inp_nodes N/A x N/A isinstance N/A x op IfElse N/A N/A N/A len ifnodes 1 N/A N/A False N/A node N/A ifnodes N/A 0 N/A op N/A node op N/A ts N/A N/A N/A node inputs N/A 1 N/A N/A op n_outs N/A fs N/A N/A N/A node inputs N/A 1 N/A N/A op n_outs N/A mop N/A main_node op N/A true_ins N/A N/A false_ins N/A N/A x N/A main_node inputs N/A N/A N/A x N/A node outputs N/A N/A idx N/A N/A N/A node outputs index x N/A N/A N/A true_ins append N/A ts N/A idx N/A N/A N/A false_ins append N/A fs N/A idx N/A N/A N/A N/A true_ins append x N/A N/A N/A false_ins append x N/A true_eval N/A mop true_ins N/A dict return_list True N/A false_eval N/A mop false_ins N/A dict return_list True N/A nw_outs N/A ifelse N/A N/A node inputs N/A 0 true_eval false_eval return_list True N/A nw_outs N/A N/A N/A gof local_optimizer acceptable_ops cond_merge_ifs_true N/A N/A node N/A N/A N/A op N/A node op N/A N/A N/A isinstance op IfElse N/A N/A False N/A t_ins N/A N/A N/A node inputs N/A 1 N/A N/A op n_outs N/A replace N/A N/A N/A idx tval N/A enumerate t_ins N/A N/A N/A N/A tval owner N/A isinstance N/A N/A tval owner op IfElse N/A N/A N/A N/A tval owner inputs N/A 0 N/A N/A node inputs N/A 0 N/A N/A ins_op N/A N/A tval owner op N/A ins_t N/A N/A N/A N/A tval owner inputs N/A 1 N/A N/A ins_op n_outs N/A N/A replace N/A N/A idx 1 N/A ins_t N/A N/A N/A N/A N/A tval owner outputs index tval N/A N/A N/A len replace 0 N/A N/A False N/A old_ins N/A list N/A node inputs N/A N/A pos var N/A iteritems replace N/A N/A N/A old_ins N/A pos var N/A N/A op old_ins N/A dict return_list True N/A N/A N/A gof local_optimizer N/A IfElse cond_merge_ifs_false N/A N/A node N/A N/A N/A op N/A node op N/A N/A N/A isinstance op IfElse N/A N/A False N/A f_ins N/A N/A N/A node inputs N/A 1 N/A N/A op n_outs N/A replace N/A N/A N/A idx fval N/A enumerate f_ins N/A N/A N/A N/A fval owner N/A isinstance N/A N/A fval owner op IfElse N/A N/A N/A N/A fval owner inputs N/A 0 N/A N/A node inputs N/A 0 N/A N/A ins_op N/A N/A fval owner op N/A ins_t N/A N/A N/A N/A fval owner inputs N/A 1 N/A N/A ins_op n_outs N/A N/A replace N/A N/A N/A idx 1 N/A op n_outs N/A ins_t N/A N/A N/A N/A N/A fval owner outputs index fval N/A N/A N/A len replace 0 N/A N/A False N/A old_ins N/A list N/A node inputs N/A N/A pos var N/A iteritems replace N/A N/A N/A old_ins N/A pos var N/A N/A op old_ins N/A dict return_list True N/A N/A N/A gof local_optimizer N/A IfElse CondMerge N/A N/A gof Optimizer N/A N/A  Graph Optimizer that merges different cond ops  add_requirements N/A N/A self fgraph N/A N/A N/A N/A N/A fgraph add_feature N/A N/A N/A gof toolbox ReplaceValidate N/A apply N/A N/A self fgraph N/A N/A N/A nodelist N/A list N/A N/A fgraph toposort N/A cond_nodes N/A s N/A s nodelist N/A isinstance N/A s op IfElse N/A N/A N/A len cond_nodes 2 N/A N/A False N/A merging_node N/A cond_nodes N/A 0 N/A proposal N/A cond_nodes N/A 1 N/A N/A N/A N/A N/A N/A proposal inputs N/A 0 N/A N/A merging_node inputs N/A 0 N/A N/A find_up proposal merging_node N/A N/A mn_ts N/A N/A N/A merging_node inputs N/A 1 N/A N/A N/A merging_node op n_outs N/A mn_fs N/A N/A N/A merging_node inputs N/A 1 N/A N/A N/A merging_node op n_outs N/A pl_ts N/A N/A N/A proposal inputs N/A 1 N/A N/A N/A proposal op n_outs N/A pl_fs N/A N/A N/A proposal inputs N/A 1 N/A N/A N/A proposal op n_outs N/A new_ins N/A N/A N/A N/A N/A N/A N/A merging_node inputs N/A 0 mn_ts pl_ts mn_fs pl_fs N/A mn_name ? N/A N/A N/A merging_node op name N/A N/A mn_name N/A N/A merging_node op name N/A pl_name ? N/A N/A N/A proposal op name N/A N/A pl_name N/A N/A proposal op name N/A new_ifelse N/A IfElse n_outs N/A len N/A mn_ts pl_ts as_view False gpu False name N/A N/A mn_name & pl_name N/A N/A print here N/A new_outs N/A new_ifelse new_ins N/A dict return_list True N/A new_outs N/A N/A clone x N/A x new_outs N/A old_outs N/A N/A N/A N/A type N/A merging_node outputs N/A list tuple N/A N/A old_outs N/A N/A merging_node outputs N/A N/A old_outs N/A merging_node outputs N/A N/A N/A type N/A proposal outputs N/A list tuple N/A N/A old_outs N/A N/A proposal outputs N/A N/A old_outs N/A proposal outputs N/A pairs N/A list N/A zip old_outs new_outs N/A N/A N/A fgraph replace_all_validate pairs reason cond_merge N/A N/A cond_remove_identical N/A N/A node N/A N/A N/A op N/A node op N/A N/A N/A isinstance op IfElse N/A N/A False N/A ts N/A N/A N/A node inputs N/A 1 N/A N/A op n_outs N/A fs N/A N/A N/A node inputs N/A 1 N/A N/A op n_outs N/A out_map N/A N/A idx N/A xrange N/A len N/A node outputs N/A N/A N/A idx out_map N/A N/A jdx N/A xrange N/A idx 1 N/A len N/A node outputs N/A N/A N/A N/A N/A ts N/A idx N/A ts N/A jdx N/A N/A fs N/A idx N/A fs N/A jdx N/A jdx out_map N/A N/A N/A out_map N/A jdx idx N/A N/A N/A len out_map 0 N/A N/A False N/A nw_ts N/A N/A nw_fs N/A N/A inv_map N/A N/A pos 0 N/A idx N/A xrange N/A len N/A node outputs N/A N/A N/A idx out_map N/A N/A N/A inv_map N/A idx pos N/A pos N/A pos 1 N/A N/A N/A nw_ts append N/A ts N/A idx N/A N/A N/A nw_fs append N/A fs N/A idx N/A new_ifelse N/A IfElse n_outs N/A len nw_ts as_view N/A op as_view gpu N/A op gpu name N/A op name N/A new_ins N/A N/A N/A N/A N/A node inputs N/A 0 nw_ts nw_fs N/A new_outs N/A new_ifelse new_ins N/A dict return_list True N/A rval N/A N/A idx N/A xrange N/A len N/A node outputs N/A N/A N/A idx out_map N/A N/A rval N/A N/A new_outs N/A N/A inv_map N/A N/A out_map N/A idx N/A N/A rval N/A N/A new_outs N/A N/A inv_map N/A idx N/A rval N/A N/A N/A gof local_optimizer N/A IfElse cond_merge_random_op N/A N/A main_node N/A N/A N/A N/A isinstance N/A main_node op IfElse N/A N/A False N/A all_inp_nodes N/A set N/A inp N/A main_node inputs N/A N/A N/A N/A all_inp_nodes add N/A inp owner N/A cond_nodes N/A x N/A x N/A list all_inp_nodes N/A x N/A isinstance N/A x op IfElse N/A N/A N/A len cond_nodes 2 N/A N/A False N/A merging_node N/A cond_nodes N/A 0 N/A proposal N/A cond_nodes N/A 1 N/A N/A N/A N/A N/A N/A proposal inputs N/A 0 N/A N/A merging_node inputs N/A 0 N/A N/A find_up proposal merging_node N/A N/A find_up merging_node proposal N/A N/A mn_ts N/A N/A N/A merging_node inputs N/A 1 N/A N/A N/A merging_node op n_outs N/A mn_fs N/A N/A N/A merging_node inputs N/A 1 N/A N/A N/A merging_node op n_outs N/A pl_ts N/A N/A N/A proposal inputs N/A 1 N/A N/A N/A proposal op n_outs N/A pl_fs N/A N/A N/A proposal inputs N/A 1 N/A N/A N/A proposal op n_outs N/A new_ins N/A N/A N/A N/A N/A N/A N/A merging_node inputs N/A 0 mn_ts pl_ts mn_fs pl_fs N/A mn_name ? N/A N/A N/A merging_node op name N/A N/A mn_name N/A N/A merging_node op name N/A pl_name ? N/A N/A N/A proposal op name N/A N/A pl_name N/A N/A proposal op name N/A new_ifelse N/A IfElse n_outs N/A len N/A mn_ts pl_ts as_view False gpu False name N/A N/A mn_name & pl_name N/A new_outs N/A new_ifelse new_ins N/A dict return_list True N/A old_outs N/A N/A N/A N/A type N/A merging_node outputs N/A list tuple N/A N/A old_outs N/A N/A merging_node outputs N/A N/A old_outs N/A merging_node outputs N/A N/A N/A type N/A proposal outputs N/A list tuple N/A N/A old_outs N/A N/A proposal outputs N/A N/A old_outs N/A proposal outputs N/A pairs N/A list N/A zip old_outs new_outs N/A main_outs N/A clone N/A main_node outputs replace pairs N/A main_outs N/A N/A N/A gof local_optimizer N/A IfElse