
    hh              
       (   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  \" S\\5      r\R                  " S5      SS\S	\	\\4   4S
 jj5       rS\	\\4   S\S\S	\\\4   4S jrS\	\\4   S\S	\\\4   4S jrS\	\\4   S\S	\\\4   4S jrg)    )CallableTupleTypeVarUnioncast   )registry)Model)Floats2dRaggedInTzexpand_window.v1window_sizereturnc                 $    [        S[        SU 0S9$ )zFor each vector in an input, construct an output vector that contains the
input and a window of surrounding vectors. This is one step in a convolution.
expand_windowr   )attrs)r
   forward)r   s    T/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/expand_window.pyr   r   
   s    
 '-1MNN    modelXis_trainc                 X    [        U[        5      (       a  [        X5      $ [        X5      $ N)
isinstancer   _expand_window_ragged_expand_window_floats)r   r   r   s      r   r   r      s%    !V$U..$U..r   c                   ^ ^ T R                   S   m[        U5      S:  a  T R                  R                  UT5      nO3[        U5      S:X  d   eT R                  R	                  UTS-  S-   5      nS[
        S[
        4U U4S jjnX#4$ )Nr   r   r      dYr   c                 <   > TR                   R                  U T5      $ r   )opsbackprop_seq2col)r    r   nWs    r   backprop'_expand_window_floats.<locals>.backprop#   s    yy))"b11r   )r   lenr"   seq2coltiler   )r   r   Yr%   r$   s   `   @r   r   r      s     
]	#B
1vzIIa$1v{{IINN1rAvl+2X 2( 2 2 ;r   Xrc                    ^ ^^ T R                   S   m[        T R                  R                  [	        [
        TR                  5      TTR                  S9TR                  5      nS[        S[        4UU U4S jjnX#4$ )Nr   lengthsdYrr   c                    > [        TR                  R                  [        [        U R
                  5      TTR                  S9TR                  5      $ )Nr-   )r   r"   r#   r   r   datar.   )r/   r+   r   r$   s    r   r%   '_expand_window_ragged.<locals>.backprop1   sF    II&&Xsxx("bjj '  JJ	
 	
r   )r   r   r"   r(   r   r   r1   r.   )r   r+   r*   r%   r$   s   ``  @r   r   r   )   sm     
]	#B		$x12rzzJBJJ	A
f 
 
 
 ;r   N)r   )typingr   r   r   r   r   configr	   r   r
   typesr   r   r   layersintr   boolr   r   r    r   r   <module>r:      s    8 8   $eXv& 
#$Os O5c? O %O/5c? /s /d /uS(]?S /c?'
8X c? &
68r   