
    h              
       ,   S SK JrJr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  SSKJr  \\\\\4   r\" S\\\\\\4   S9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S\S\4S jrS\S\S\4S jrS
\\\4   S\S\\\4   4S jrS
\\\4   S\S\S\\\4   4S jrS
\\\4   S\S\S\\\4   4S jr S
\\\4   S\S\S\\\4   4S jr!g)    )CallableListOptionalTupleTypeVarUnioncast   )registry)Model)Array2dFloats3dInts1dList2dPaddedRagged)is_xp_arraySeqT)boundzwith_padded.v1layerreturnc                     [        SU R                   S3[        [        U /U R                   Vs0 s H  oU R                  U5      _M     snS9$ s  snf )Nzwith_padded())initlayersdims)r   nameforwardr   	dim_namesmaybe_get_dim)r   r   s     R/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/with_padded.pywith_paddedr"      sT    
uzzl!$w:?//J/$E''--/J 
 Ks   AmodelXseqis_trainc           
         U R                   S   n[        U[        5      (       a#  [        [        [
        [        4   U" X5      5      $ [        U[        5      (       a'  [        [        [
        [        4   [        X1U5      5      $ [        U5      (       a6  [        [        [
        [        4   [        U[        [        U5      U5      5      $ [        U5      (       a6  [        [        [
        [        4   [        U[        [        U5      U5      5      $ [        [        [
        [        4   [        U[        [         U5      U5      5      $ )Nr   )r   
isinstancer   r	   r   r   r   r   _ragged_forward_is_padded_data_tuple_forward
PaddedDatar   _array_forwardr   _list_forwardr   )r#   r$   r%   r   s       r!   r   r      s     $)<<?E$E$.)5+@AA	D&	!	!E$.)?5+QRR			$.!5$z4"8(C
 	
 
T		$.!>%h9Mx#X
 	
 $.!=VT8JH#U
 	
    NXYc                 v    U R                   S   R                  Ub  [        X5      OS Ub  [        X5      OS S9  g )Nr   )r/   r0   )r   
initialize_get_padded)r#   r/   r0   s      r!   r   r   .   s;     
LLO#$=+e
d#$=+e
d  r.   seqc                     [        U [        5      =(       a.    [        U 5      S:H  =(       a    [        [	        [
        U 5      5      $ )N   )r'   tuplelenallmapr   )r4   s    r!   r)   r)   7   s-    c5!Rc#h!mRCS<Q8RRr.   c                 *   [        U[        5      (       a  U$ [        U[        5      (       aI  U R                  R	                  U R                  R                  UR                  UR                  5      5      $ [        U5      (       a  [        U6 $ [        U5      (       a  [        [        U5      nU R                  R                  UR                  S   /UR                  S   -  5      nU R                  R                  UR                  S   /UR                  S   -  5      nU R                  R                  R                  UR                  S   5      n[        X#XE5      $ [        U[         5      (       d   U5       eU R                  R	                  U5      $ )N   r   )r'   r   r   opslist2padded	unflattendatalengthsr)   r   r	   r   	asarray1ishapexparangelist)r#   r4   floats3d_seq	size_at_trA   indicess         r!   r3   r3   ;   s>   #v
	C	 	 yy$$UYY%8%83;;%OPP			s|	S		Hc*II''););A)>(?,BTBTUVBW(WX	))%%|'9'9!'<&=@R@RST@U&UV)),,%%l&8&8&;<lw@@#t$$)c)$yy$$S))r.   c                    ^^^^	 [        X5      nU " X25      u  nmUR                  m	UR                  mUR                  mS[        S[        4UUUU	4S jjn[        [        UR                  5      U4$ )NdYr   c                 H   > [        U TTT5      nT" U5      nUR                  $ N)r   r@   )rK   dYpdXpget_dXprI   rA   rH   s      r!   backprop _array_forward.<locals>.backpropW   s%    RGW5clxxr.   )r3   rH   rA   rI   r   r	   r@   )
r   r/   r%   XpYprQ   rP   rI   rA   rH   s
         @@@@r!   r,   r,   M   sh     
U	B%KBIjjGjjGX (  
 "''"H,,r.   c                    ^ U " [        U6 U5      u  nmU4S jn[        [        UR                  5      UR                  UR
                  UR                  4U4$ )Nc                 |   > T" [        U 6 5      nUR                  UR                  UR                  UR                  4$ rM   )r   r@   rH   rA   rI   )rK   rO   rP   s     r!   rQ    _tuple_forward.<locals>.backpropd   s0    fbk"#--ckkBBr.   )r   r	   r   r@   rH   rA   rI   )r   r/   r%   rT   rQ   rP   s        @r!   r*   r*   _   sL     
H-KBC 277#R\\2::rzzJHTTr.   Xrc                   ^^^^	^
 U R                   R                  mU R                   R                  m	U R                   R                  m
U R                   R                  mU " T" T
" UR
                  UR                  5      5      U5      u  nmS[        4UUUU	U
4S jjnT" T	" U5      5      n[        XQR                  5      U4$ )NdYrc                    > T" T" T" T" T" U R                   U R                  5      5      5      5      5      n[        XR                  5      $ rM   )r@   rA   r   )rZ   	flattenedflattenrP   r>   padded2listr?   s     r!   rQ   !_ragged_forward.<locals>.backpropy   s?    Ichh,L MNO
	 i--r.   )r=   r>   r^   r?   r]   r@   rA   r   )r   rX   r%   rT   rQ   r\   r]   rP   r>   r^   r?   s         @@@@@r!   r(   r(   k   s     ))''K))''K		##IiiG
 Ibggrzz$BCXNKB.f . . B(I)ZZ((22r.   Xsc                    ^^^ U R                   R                  mU R                   R                  mU " T" U5      U5      u  nmUUU4S jnT" U5      U4$ )Nc                 ,   > T" T" T" U 5      5      5      $ rM    )dYsrP   r>   r^   s    r!   rQ   _list_forward.<locals>.backprop   s    7;s#3455r.   )r=   r>   r^   )r   r`   r%   rT   rQ   rP   r>   r^   s        @@@r!   r-   r-      sM     ))''K))''KB2KB6 r?H$$r.   )NN)"typingr   r   r   r   r   r   r	   configr   r#   r   typesr   r   r   r   r   r   utilr   r+   r   r   r"   boolr   r   r)   r3   r,   r*   r(   r-   rc   r.   r!   <module>rk      s   H H H   E E 8VVV34
vU6668Z#OPQ 
!"uVV^, tTz1B  #
t
$(
48

4>
0 MQt!)$;CD>	S S$ S*u *4 *F *$- -%--
8X-$	U 	U%/	U;?	U
:x 	U3 3&,38<3
6830% %&,%8<%
68%r.   