ó
àÆ÷Xc           @` sè   d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d  d l Td  d l m Z d  d l Td  d l j j Z d „  Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ e d ƒ Z d „  Z d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   Type(   t   Variablet   Applyt   Constant(   t   Op(   t   *(   t   FunctionGraphc         C` s%   t  |  t ƒ s! t d |  ƒ ‚ n  |  S(   Ns   not a Variable(   t
   isinstanceR   t	   TypeError(   t   x(    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   as_variable   s    t   MyTypec           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   | S(   N(    (   t   selft   data(    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   filter   s    c         C` s   t  | t ƒ S(   N(   R
   R   (   R   t   other(    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   __eq__   s    (   t   __name__t
   __module__R   R   (    (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyR      s   	t   MyOpc           B` sD   e  Z d d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s4   | d  k r i  } n  | |  _ | |  _ | |  _ d  S(   N(   t   Nonet   namet   destroy_mapR   (   R   R   t   dmapR   (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   __init__   s
    			c         G` sf   t  t t | ƒ ƒ } x/ | D]' } t | j t ƒ s t d ƒ ‚ q q Wt ƒ  ƒ  g } t |  | | ƒ S(   Ns   Error 1(   t   listt   mapR   R
   t   typeR   t	   ExceptionR   (   R   t   inputst   inputt   outputs(    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt	   make_node$   s    c         C` s   |  j  S(   N(   R   (   R   (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   __str__,   s    c         C` s   |  j  S(   N(   R   (   R   (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   __repr__/   s    c         C` s:   |  | k p9 t  | t ƒ o9 |  j d  k	 o9 |  j | j k S(   N(   R
   R   R   R   (   R   R   (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyR   2   s    *c         C` s$   |  j  d  k	 r |  j  St |  ƒ Sd  S(   N(   R   R   t   id(   R   (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   __hash__6   s    N(	   R   R   R   R   R#   R$   R%   R   R'   (    (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyR      s   				t   Op1c          C` s¦  t  j t j d ƒ d d ƒ}  t  j t j d ƒ d d ƒ} t |  | g |  | g ƒ } t ƒ  j | ƒ t | j ƒ d k sƒ t	 ‚ t
 | j ƒ d } t | j ƒ d k s± t	 ‚ | j d | j d k sÑ t	 ‚ t  j t j d ƒ d d ƒ}  t  j t j d ƒ d d ƒ} t |  | g |  | g ƒ } t ƒ  j | ƒ t | j ƒ d k sTt	 ‚ t
 | j ƒ d } t | j ƒ d k s‚t	 ‚ | j d | j d k s¢t	 ‚ d S(	   s:   numpy arrays don't compare equal like other python objectsi   R   R   t   yi    i   i   N(   t   Tt   constantt   numpyt   asarrayt   Envt   MergeOptimizert   optimizet   lent   apply_nodest   AssertionErrorR   R    t   ones(   R   R)   t   gt   node(    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   test_merge_with_weird_eq=   s      (   t
   __future__R    R   R   R,   t   theano.gof.typeR   t   theano.gof.graphR   R   R   t   theano.gof.opR   t   theano.gof.optt   theano.gof.fgR	   R.   t   theano.gof.toolboxt   theano.tensor.basict   tensort   basicR*   R   R   R   t   op1R7   (    (    (    s>   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_merge.pyt   <module>   s   

		