
    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mZmZmZmZmZ ddlmZ eeeeef   Z edeeeeeef         Z e	j.                  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edefdZdededefdZd
eeef   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 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   )registry)Model)Array2dFloats3dInts1dList2dPaddedRagged)is_xp_arraySeqT)boundzwith_padded.v1layerreturnc                     t        d| j                   dt        t        | g| j                  D ci c]  }|| j                  |       c}      S c c}w )Nzwith_padded())initlayersdims)r   nameforwardr   	dim_namesmaybe_get_dim)r   r   s     i/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/layers/with_padded.pywith_paddedr"      sR    
uzzl!$w:?//J$dE''--J 
 Ks   AmodelXseqis_trainc           
      h   | 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        |      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   _ragged_forward_is_padded_data_tuple_forward
PaddedDatar   _array_forwardr   _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
 	
 
T	$.!>%h9Mx#X
 	
 $.!=VT8JH#U
 	
    NXYc                     | j                   d   j                  |t        | |      nd |t        | |             y d        y )Nr   )r/   r0   )r   
initialize_get_padded)r#   r/   r0   s      r!   r   r   .   sJ     
LLO#$=+eQ
d#$=+eQ
  6:  r.   seqc                 x    t        | t              xr) t        |       dk(  xr t        t	        t
        |             S )N   )r'   tuplelenallmapr   )r4   s    r!   r)   r)   7   s-    c5!Rc#h!mRCS<Q8RRr.   c                    t        |t              r|S t        |t              rI| j                  j	                  | j                  j                  |j                  |j                              S t        |      rt        | S t        |      rt        t        |      }| j                  j                  |j                  d   g|j                  d   z        }| j                  j                  |j                  d   g|j                  d   z        }| j                  j                  j                  |j                  d         }t        ||||      S t        |t               sJ |       | j                  j	                  |      S )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   ;   s3   #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&;<lIw@@#t$)c)$yy$$S))r.   c                    	 t        | |      } | ||      \  }|j                  	|j                  |j                  dt        dt        f	fd}t        t        |j                        |fS )NdYr   c                 H    t        |       } |      }|j                  S N)r   r@   )rK   dYpdXpget_dXprI   rA   rH   s      r!   backpropz _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   sl     
UA	BH%KBIjjGjjGX (  
 "''"H,,r.   c                      | t        | |      \  }fd}t        t        |j                        |j                  |j
                  |j                  f|fS )Nc                 |     t        |        }|j                  |j                  |j                  |j                  fS rM   )r   r@   rH   rA   rI   )rK   rO   rP   s     r!   rQ   z _tuple_forward.<locals>.backpropd   s0    fbk"#--ckkBBr.   )r   r	   r   r@   rH   rA   rI   )r   r/   r%   rS   rQ   rP   s        @r!   r*   r*   _   sL     
H-KBC 277#R\\2::rzzJHTTr.   Xrc                   	
 | j                   j                  | j                   j                  	| j                   j                  
| j                   j                   |   
|j
                  |j                              |      \  }dt        f	
fd}  	|            }t        ||j                        |fS )NdYrc                          | j                   | j                                                }t        || j                        S rM   )r@   rA   r   )rX   	flattenedflattenrP   r>   padded2listr?   s     r!   rQ   z!_ragged_forward.<locals>.backpropy   sA    Ichh,L MNO
	 i--r.   )r=   r>   r\   r?   r[   r@   rA   r   )r   rV   r%   rS   rQ   rZ   r[   rP   r>   r\   r?   s         @@@@@r!   r(   r(   k   s     ))''K))''K		##IiiG
 Ibggrzz$BCXNKB.f . . B(I)RZZ((22r.   Xsc                     | j                   j                  | j                   j                   |  |      |      \  }fd} |      |fS )Nc                 ,       |                   S rM    )dYsrP   r>   r\   s    r!   rQ   z_list_forward.<locals>.backprop   s    7;s#3455r.   )r=   r>   r\   )r   r]   r%   rS   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-   r`   r.   r!   <module>rg      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.   