
    h,                     N   S SK JrJrJrJrJr  SSKJr  SSKJ	r	  SSK
JrJrJrJrJrJrJr  \" S\\   \\   \\   \\   \\\\\\\5      r\R&                  " S5      S\	\\4   S	\	\\4   4S
 j5       rS\	\\4   S\S\S	\\\4   4S jr SS\	\\4   S\\   S\\   S	S4S jjrg)    )CallableListOptionalTupleTypeVar   )registry)Model)Floats1dFloats2dFloats3dFloats4dFloatsXdPaddedRaggedInTzresidual.v1layerreturnc           
          [        SU R                   S3[        [        U /U R	                  S5      (       a  U R                  S5      OS U R	                  S5      (       a  U R                  S5      OS S.S9$ )Nz	residual()nOnI)r   r   )initlayersdims)r
   nameforwardr   has_dimget_dim)r   s    O/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/residual.pyresidualr!      sg    
EJJ<q!w).t)<)<%--%$).t)<)<%--%$
	 	    modelXis_trainc                   ^^ S[         S[         4UU4S jjnU R                  S   " TU5      u  nm[        T[        5      (       a/  [	        [        T5      5       Vs/ s H  nTU   XE   -   PM     snU4$ [        T[        5      (       a/  [        TR                  UR                  -   TR                  5      U4$ [        T[        5      (       a"  U=R                  TR                  -  sl        XC4$ TU-   U4$ s  snf )Nd_outputr   c                   > T" U 5      n[        U [        5      (       a,  [        [        U 5      5       Vs/ s H  o U   X   -   PM     sn$ [        U [        5      (       a-  [	        U R
                  UR
                  -   UR                  5      $ [        T[        5      (       a!  U=R
                  U R
                  -  sl        U$ X-   $ s  snf )N)
isinstancelistrangelenr   datalengthsr   )r'   dXir$   backprop_layers      r    backpropforward.<locals>.backprop   s    H%h%%16s8}1EF1EAQK"%'1EFF&))(--"''12::>>6""GGx}}$GI=  Gs   Cr   )
r   r   r)   r*   r+   r,   r   r-   r.   r   )r#   r$   r%   r2   Yr0   r1   s    `    @r    r   r      s    
!3 
!3 
! 
! Q84A~!T%*3q6]3]!qt]3X==	Av		affqvvoqyy18;;	Av			!&&{1uh 4s   C7Nr4   c                 b   U R                   S   nUR                  S5      c  UR                  XS9  OUR                  US9  UR                  S5      (       a!  U R                  SUR	                  S5      5        UR                  S5      (       a"  U R                  SUR	                  S5      5        g g )Nr   r   )r$   r4   )r$   r   )r   r   
initializeset_dimr   )r#   r$   r4   first_layers       r    r   r   5   s     ,,q/K4 ((#4  dK//564  dK//56 !r"   )NN)typingr   r   r   r   r   configr	   r#   r
   typesr   r   r   r   r   r   r   r   r   r!   boolr   r    r"   r    <module>r>      s    ; ;   T T T 	4>4>4>4>
FHh(HF 

E#s(O 
c3h 
  
5c? s d uS(]?S 4 IM7c?7'}78@7	7r"   