
    i^              
           d dl mZmZmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZmZmZmZmZ  e	       Zeeef   Z edeeeeef         Z ej0                  d	      d
eeef   deeef   fd       Zdeeef   dededeeef   fdZ	 	 ddeeef   dee   dee   ddfdZd Zdeeef   dedefdZd
eeef   dededeeef   fdZd
eeef   dededeeef   fdZ d
eeef   dededeeef   fdZ!y)    )CallableListOptionalTupleTypeVarUnioncast   )NumpyOps)registry)Model)Array2dInts1dList2dListXdPaddedRaggedSeqT)boundzwith_ragged.v1layerreturnc                 N    t        d| j                   dt        t        | g      S )Nzwith_ragged())initlayers)r   nameforwardr   )r   s    i/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/with_ragged.pywith_raggedr      s"    <

|1-wT5'RR    modelXseqis_trainc           
         | j                   d   }t        |t              r$t        t        t
        t        f    |||            S t        |t              r(t        t        t
        t        f   t        |||            S t        |      r6t        t        t
        t        f   t        |t        t        |      |            S t        t        t
        t        f   t        |t        t        |      |            S )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x+@AA	D&	!E$.)?5$+QRR		$.!5$z4"8(C
 	

 $.!=T48H(#S
 	
r    NXYc                     | j                   d   j                  |t        | |      nd |t        | |             y d        y )Nr   )r+   r,   )r   
initialize_get_ragged)r!   r+   r,   s      r   r   r   '   sJ    
 
LLO#$=+eQ
d#$=+eQ
  6:  r    c                 B    t        | t              xr t        |       dk(  S )Nr
   )r%   tuplelen)seqs    r   r'   r'   2   s    c5!3c#h!m3r    r3   c                 h   t        |t              r|S t        |t              r| j                  j	                  |      }| j                  j                  |D cg c]  }t        |       c}      }| j                  j                  |      }t        | j                  j                  |      |      S t        |      rt        | S t        t        |      }| j                  j                  |D cg c]  }t        |       c}      }t        | j                  j                  |      |      S c c}w c c}w 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&=!s1v&=>IIe$eii''.88		s|&#&
))%%z&B!s1v&BCeii''
3W== '> 'Cs   D*,D/c                      | t        | |      \  }dt        dt        ffd}|j                  |j                  f|fS )NdYr   c                 P     t        |        }|j                  |j                  fS r5   )r   datar<   )r@   dXrget_dXrs     r   backpropz _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                   	
 | j                   j                  
| j                   j                  | j                   j                  | j                   j                   |      }t
        j                  |D cg c]  }t        |       c}      	 | t         |      | j                   j                  	            |      \  }dt        f	
fd} 
 |j                  |j                              |fS c c}w )NdYpc                 v      |             } t        |            }  |j                              S r5   r   rB   )	rI   	flattenedrC   r9   rD   r<   list2paddedr7   	unflattens	      r   rE   z!_padded_forward.<locals>.backpropg   s9    K,-	fY019SXXw788r    )r6   rM   r7   rN   r9   	NUMPY_OPSr8   r2   r   r   rB   r<   )r   rG   r#   Xsr;   rF   rE   r9   rD   r<   rM   r7   rN   s          @@@@@@r   r&   r&   R   s     ))''K))''K		##IiiG
 
RB !!2"6a3q6"67Gwr{EII,?,?,HI8TKB9f 9 9 	Ibggrzz23  #7s   :C>rP   c                 V  	 | j                   j                  | j                   j                  	|D cg c]  }t        |       c} | t	         |      | j                   j                              |      \  }	fd} 	|j                  |j                        |fS c c}w )Nc                 Z     |       }  t        |            j                        S r5   rK   )dYsrL   r9   rD   r<   rN   s     r   rE   z_list_forward.<locals>.backprop|   s+    CL		7!;<AA7KKr    )r6   r9   rN   r2   r   r8   rB   r<   )
r   rP   r#   r;   rF   rE   r9   rD   r<   rN   s
         @@@@r   r*   r*   r   s     iiG		##I!"!s1v"Gwr{EII,?,?,HI8TKB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   rO   r)   r   r   r   boolr   r   r'   r/   r(   r&   r*    r    r   <module>rZ      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    