
    i                        d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZ  ej"                  g d      d        Z ej"                  dd	g      d
        Z ej"                  g d      d        Z ej"                  g d      d        Zej"                  d        Zej"                  d        Zej"                  d        Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d  Z'ejP                  jS                  d! e        ed"#      g      d$        Z*d% Z+d& Z,d' Z-d( Z.d) Z/d* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8y)3    N)assert_allclose)	DropoutLinearModelNumpyOpsaddcloneconcatenatemap_listnoop)chaintuplify)      	   )paramsc                     | j                   S Nparamrequests    t/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/tests/layers/test_combinators.pynBr          ==    r      c                     | j                   S r   r   r   s    r   nIr      r   r   )r         c                     | j                   S r   r   r   s    r   nHr#      r   r   )r   r      r   c                     | j                   S r   r   r   s    r   nOr&   "   r   r   c                     t        | |      S r   r   )r#   r   s     r   model1r)   '       "b>r   c                     t        | |      S r   r(   )r&   r#   s     r   model2r,   ,   r*   r   c                     t        | |       S r   r(   )r&   s    r   model3r.   1   r*   r   c                  t    t        j                  t              5  t                d d d        y # 1 sw Y   y xY wr   pytestraises	TypeErrorr    r   r   test_tuplify_zeror5   6   s(    	y	! 	     .7c                 v    t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY wr   r0   r)   s    r   test_tuplify_oner9   ;   s*    	y	!      /8c                 P    t        | |      }t        |j                        dk(  sJ y Nr   r   lenlayersr)   r,   models      r   test_tuplify_tworB   @   s%    FF#Eu||!!!r   c                     t        j                  dt        i      5  | |z  }t        |j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N&r   r   define_operatorsr   r>   r?   r@   s      r   test_tuplify_operator_tworG   E   sI    			g	/ &5<< A%%%& & &    AAc                      t        t               t                     } t        j                  dg      }| j	                  |      }|||fk(  sJ y )N
   )r   r   numpyonespredict)rA   rL   outs      r   test_tuplify_dulicates_inputrO   K   sB    DFDF#E::rdD
--
C4,r   c                     t        |      }t        ||      }t        j                  d| fd      }|j	                  |       y )Nr   floatdtypeX)r   r   rK   rL   
initialize)r   r&   linearrA   rL   s        r   test_tuplify_initializerX   R   s<    BZFFF#E::q"gW-D	tr   c                 R    t        | ||      }t        |j                        dk(  sJ y Nr!   r=   r)   r,   r.   rA   s       r   test_tuplify_threer\   Y   s'    FFF+Eu||!!!r   c                     t        j                  dt        i      5  | |z  |z  }t        |j                        dk(  sJ t        |j                  d   j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NrD   r   r   rE   r[   s       r   test_tuplify_operator_threer^   ^   sq     
		g	/ 0&(5<< A%%%5<<?))*a///0 0 0   A
A00A9c                  t    t        j                  t              5  t                d d d        y # 1 sw Y   y xY wr   r1   r2   r3   r   r4   r   r   test_chain_zerorb   g   s(    	y	!   r6   c                 v    t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY wr   ra   r8   s    r   test_chain_onerd   l   s*    	y	! f  r:   c                 P    t        | |      }t        |j                        dk(  sJ y r<   r   r>   r?   r@   s      r   test_chain_tworg   q   s%    &&!Eu||!!!r   c                     t        j                  dt        i      5  | |z	  }t        |j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N>>r   r   rF   r   r>   r?   r@   s      r   test_chain_operator_twork   v   sJ    			u	. && 5<< A%%%& & &rH   c                 R    t        | ||      }t        |j                        dk(  sJ y rZ   rf   r[   s       r   test_chain_threerm   |   s'    &&&)Eu||!!!r   c                     t        j                  dt        i      5  | |z	  |z	  }t        |j                        dk(  sJ t        |j                  d   j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nri   r   r   rj   r[   s       r   test_chain_operator_threero      sr     
		u	. 0& F*5<< A%%%5<<?))*a///0 0 0r_   c                     t        | |      }t        ||      }t        |j                        dk(  sJ t        |j                        dk(  sJ y r<   rf   )r)   r,   r.   merge1merge2s        r   test_chain_right_branchrs      sJ     66"F66"Fv}}"""v}}"""r   opsT)use_blisc                 x   t        j                  g dgd      }t        t        d      t	               t        d            }| |_        |j                  ||        ||d      \  }} ||       t        t        d      t	               t        dd            }|j                  ||       t        t        d      t	               t        d            }|j                  dd       |j                  |d        t        t        dd      t	               t        dd            }|j                  dd       |j                  d |       t        j                  t              5  t        t                      d d d        t        j                  t              5  t                d d d        y # 1 sw Y   6xY w# 1 sw Y   y xY w)	Nr   r   r!      frR   r   Tis_trainr&   r   )rK   asarrayr   r   r   rt   rV   set_dimr1   r2   r3   )rt   datarA   Ybackprops        r   
test_chainr      sI   ==,s3D&)WYq	2EEI	T4 t,KAxQK&)WYq!5E	T4 &)WYq	2E	MM$	T4 &A,	6!Q<8E	MM$	T4 	y	! fh	y	!    s   F$F0$F-0F9c                 >    t        |       }t        |t              sJ y r   )r
   
isinstancer   )r)   rA   s     r   test_concatenate_oner      s    EeU###r   c                 P    t        | |      }t        |j                        dk(  sJ y r<   r
   r>   r?   r@   s      r   test_concatenate_twor      s%    'Eu||!!!r   c                     t        j                  dt        i      5  | |z  }t        |j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N|r   r   rF   r
   r>   r?   r@   s      r   test_concatenate_operator_twor      sJ    			k 2	3 &5<< A%%%& & &rH   c                 R    t        | ||      }t        |j                        dk(  sJ y rZ   r   r[   s       r   test_concatenate_threer      s'    /Eu||!!!r   c                     t        j                  dt        i      5  | |z  |z  }t        |j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r!   r   r[   s       r   test_concatenate_operator_threer      sO    			k 2	3 &&(5<< A%%%& & &s   #A		Ac                    t        |       }t        |d      }t        j                  d|fd      }|j	                  |       |j                  |      }|j                  |      }|j                         |j                         k7  sJ y )NrJ   ry   rR   rT   )r   r	   rK   rL   rV   rM   sum)r#   r   r)   rA   rL   output_from_clonedoutput_from_origs          r   test_clone_changes_predictionsr      s{    BZF&"E::r2hc*D	tt,~~d+!!#'7';';'====r   c                    t        t        |       d      }t        |j                        dk(  sJ t	               }|j                         D ]-  }|j                  |vsJ |j                  |j                         / t        |      dk(  sJ y )Nr    r   )r	   r   r>   r?   setwalkidr   )r#   r   rA   seen_idsnodes        r   test_clone_gives_distinct_idsr      s{    &*a Eu||!!!uH

 wwh&&&TWW x=Ar   c                      t        t               d      } t        | j                        dk(  sJ | j                  dk(  sJ y Nr   r   )r	   r   r>   r?   namerA   s    r   test_clone_noopr      s9    &(AEu||!!!::r   c                  n    t               } t        | j                        dk(  sJ | j                  dk(  sJ y r   )r
   r>   r?   r   r   s    r   test_concatenate_noopr      s2    MEu||!!!::r   c                     t        j                  g dd      } t        t               t                     }|j	                  | |         || d      \  }}t        j
                  ||       sJ  ||      }t        j
                  ||       sJ y )Nr   r   r!   ry   rR   Trz   )rK   r|   r   r   rV   array_equalr~   rA   r   r   dXs        r   	test_noopr      sw    ==#.D68$E	T4 t,KAxQ%%%	!BR&&&r   c                  p   t        j                  g dgd      t        t               t                     } | j	                          | d      \  }}t        fd| j                  D              }t        j                  ||      sJ  ||      }|j                  j                  k(  sJ t        | t                     }t        |j                        dk(  sJ | j	                         |j                        }t        fd|j                  D              }t        j                  ||      sJ y )	Nrw   ry   rR   Trz   c              3   @   K   | ]  }|j                          y wr   rM   .0layerr~   s     r   	<genexpr>ztest_add.<locals>.<genexpr>   s     ;UU]]4 ;   r!   c              3   @   K   | ]  }|j                          y wr   r   r   s     r   r   ztest_add.<locals>.<genexpr>   s     <UU]]4 <r   )rK   r|   r   r   rV   r   r?   r   shaper>   rM   )rA   r   r   Y2r   r,   r~   s         @r   test_addr      s    ==,s3D&(#E	T4 t,KAx	;ell;	;BQ###	!B88tzz!!!!Fv}}"""	T4 tA	<fmm<	<BQ###r   c                  x   t        j                  g dgd      } t        j                  t              5  t                d d d        t        t               t                     }g |_         || d      \  }}t        j                  | |      sJ  ||      }t        j                  ||       sJ y # 1 sw Y   rxY w)Nrw   ry   rR   Trz   )	rK   r|   r1   r2   r3   r   r   _layersr   r   s        r   test_add_edge_casesr     s    ==,s3D	y	! &(#EEMt,KAxT1%%%	!BR&&& s   B00B9c            	         t        j                  g dg dgd      } t        t               t                     }|j	                  | |         || d      \  }}|j
                  d   t        |j                  D cg c]   }|j                  |       j
                  d   " c}      k(  sJ  ||      }|j
                  | j
                  k(  sJ y c c}w )Nr   )rx   r    r   ry   rR   Trz   r   )	rK   r|   r
   r   rV   r   r   r?   rM   )r~   rA   r   r   r   r   s         r   test_concatenater     s    ==)Y/s;D&(+E	T4 t,KAx771:UuemmD177:UVVVV	!B88tzz!!! Vs   :%C
c            
      (   d} d}t        j                  d| fd      t        j                  d| fd      g}|D cg c]  }|j                  d   |f }}t	        t                     }|j                  ||D cg c]  }t        j                  |d       c}        ||d	
      \  }}t        |t              sJ t        |      t        |      k(  sJ |j                  d   }	t        ||      D ]   \  }
}t        |	j                  |
      |       "  ||      }t        |t              sJ t        |      t        |      k(  sJ |d   j                  |d   j                  k(  sJ |d   j                  |d   j                  k(  sJ y c c}w c c}w )Nrx   r   r   ry   rR   r!   r   )rU   r   Trz   r   )rK   zerosrL   r   r   r   rV   r   listr>   r?   zipr   rM   )r   r&   XsxY_shapesrA   r   Ysr   r   rU   r   dXss                r   test_map_listr     sk   	
B	
B
++q"gS
)5::q"gS+I	JB*,-QR -H-VXE	rRekk%s;RSd+LBb$r7c"gLLOEB -1a(!,-
2,Cc4   s8s2wq6<<2a5;;&&&q6<<2a5;;&&& .Rs   F
8F
)9rK   r1   numpy.testingr   	thinc.apir   r   r   r   r   r	   r
   r   r   thinc.layersr   r   fixturer   r   r#   r&   r)   r,   r.   r5   r9   rB   rG   rO   rX   r\   r^   rb   rd   rg   rk   rm   ro   rs   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   r   <module>r      s     )
 
 
 ( y! " 1v  y! " |$ %      

"
&"
0

"
&"
0# Xt-D EF G0$
"
&"
&>  '$$	'"'r   