
    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  SSKJrJrJrJrJrJr  \	" 5       r\\\4   r\" S\\\\\4   S9r\R0                  " 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 rS\\\4   S\S\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   )NumpyOps)registry)Model)Array2dInts1dList2dListXdPaddedRaggedSeqT)boundzwith_ragged.v1layerreturnc                 H    [        SU R                   S3[        [        U /S9$ )Nzwith_ragged())initlayers)r   nameforwardr   )r   s    R/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/with_ragged.pywith_raggedr      s"    <

|1-wT5'RR    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      $ [        [        [
        [        4   [        U[        [        U5      U5      5      $ )Nr   )r   
isinstancer   r	   r   r   r   r   _padded_forward_is_ragged_data_tuple_forward
RaggedData_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
 	

 $.!=T48H(#S
 	
r    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+   r,   )r   
initialize_get_ragged)r!   r+   r,   s      r   r   r   '   s;    
 
LLO#$=+e
d#$=+e
d  r    c                 L    [        U [        5      =(       a    [        U 5      S:H  $ )Nr
   )r%   tuplelen)seqs    r   r'   r'   2   s    c5!3c#h!m3r    r3   c                    [        U[        5      (       a  U$ [        U[        5      (       a  U R                  R	                  U5      nU R                  R                  U Vs/ s H  n[        U5      PM     sn5      nU R                  R                  U5      n[        U R                  R                  U5      U5      $ [        U5      (       a  [        U6 $ [        [        U5      nU R                  R                  U Vs/ s H  n[        U5      PM     sn5      n[        U R                  R                  U5      U5      $ s  snf s  snf N)r%   r   r   opspadded2list	asarray1ir2   flattenr'   r	   r   )r!   r3   listsxlengthsk
list2d_seqs          r   r/   r/   6   s    #v
	C	 	 		%%c*))%%u&=u!s1vu&=>IIe$eii''.88			s|&#&
))%%z&Bz!s1vz&BCeii''
3W== '> 'Cs   !D?>Ec                    ^ U " [        U6 U5      u  nmS[        S[        4U4S jjnUR                  UR                  4U4$ )NdYr   c                 P   > T" [        U 6 5      nUR                  UR                  4$ r5   )r   datar<   )r@   dXrget_dXrs     r   backprop _tuple_forward.<locals>.backpropK   s$    fbk"#++&&r    )r   r)   rB   r<   )r   r+   r#   YrrE   rD   s        @r   r(   r(   F   sF     
H-KB'Z 'J ' GGRZZ (**r    Xpc                   ^^^	^
^^ U R                   R                  m
U R                   R                  mU R                   R                  mU R                   R                  mT" U5      n[
        R                  U Vs/ s H  n[        U5      PM     sn5      m	U " [        T" U5      U R                   R                  T	5      5      U5      u  nmS[        4UUU	U
UU4S jjnT
" T" UR                  UR                  5      5      U4$ s  snf )NdYpc                 v   > T" T" U 5      5      nT" [        UT5      5      nT" T" UR                  T5      5      $ r5   r   rB   )	rJ   	flattenedrC   r9   rD   r<   list2paddedr7   	unflattens	      r   rE   !_padded_forward.<locals>.backpropg   s9    K,-	fY019SXXw788r    )r6   rN   r7   rO   r9   	NUMPY_OPSr8   r2   r   r   rB   r<   )r   rH   r#   Xsr;   rG   rE   r9   rD   r<   rN   r7   rO   s          @@@@@@r   r&   r&   R   s     ))''K))''K		##IiiG
 
RB !!2"62a3q62"67Gwr{EII,?,?,HI8TKB9f 9 9 	Ibggrzz23  #7s   :DrR   c                 ^  ^^^^	 U R                   R                  mU R                   R                  m	U Vs/ s H  n[        U5      PM     snmU " [	        T" U5      U R                   R                  T5      5      U5      u  nmUUUU	4S jnT	" UR                  UR                  5      U4$ s  snf )Nc                 Z   > T" U 5      nT" T" [        UT5      5      R                  T5      $ r5   rL   )dYsrM   r9   rD   r<   rO   s     r   rE   _list_forward.<locals>.backprop|   s+    CL		7!;<AA7KKr    )r6   r9   rO   r2   r   r8   rB   r<   )
r   rR   r#   r;   rG   rE   r9   rD   r<   rO   s
         @@@@r   r*   r*   r   s     iiG		##I!"r!s1vr"Gwr{EII,?,?,HI8TKBL L RWWbjj)833 #s   B*)NN)"typingr   r   r   r   r   r   r	   backendsr   configr   r!   r   typesr   r   r   r   r   r   rQ   r)   r   r   r   boolr   r   r'   r/   r(   r&   r*    r    r   <module>r]      s   H H H    C CJ	 7F?#
vU666:#EFG 
!"SuVV^, StTz1B S #S
t
$(
48

4>
* t~ ~ 
	4>uT4Z( >t > > 	+ 	+%/	+;?	+
:x 	+ &,8<
68@4 4&*46:4
4>4r    