
    h              
       X   S SK Jr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  \" S5      r\\\      r\r\\   r\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 jr SS\\\4   S\\   S\\   S	S4S jjrg)    )AnyCallableListOptionalSequenceTupleTypeVarcast   )registry)Model)ArrayXdListXdItemTzwith_flatten.v1layerreturnc                 H    [        SU R                   S3[        U /[        S9$ )Nzwith_flatten())layersinit)r   nameforwardr   )r   s    S/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/with_flatten.pywith_flattenr      s"    =A.dSS    modelXnestis_trainc                 l  ^ ^	^
^ T R                   S   m
[        U5      nT
" X25      u  nm	T
R                  R                  US S  Vs/ s H  n[	        U5      PM     sn5      nUR                  5       mT
R                  R                  R                  UTSS9nS[        S[        4U	U
U U4S jjnXx4$ s  snf )Nr   axisdYnestr   c                    > TR                   R                  U 5      nT" U5      nTR                   R                  R                  UTSS9nU$ )Nr    r!   )opsflattenxpsplit)r#   dYflatdXflatdXnestbackprop_layerr   r   splitss       r   backpropforward.<locals>.backprop   sE    ""6*'##FF#<r   )
r   _flattenr%   	asarray1ilencumsumr'   r(   OutTInT)r   r   r   XflatYflatxarrYnestr.   r,   r   r-   s   `        @@@r   r   r      s     ).QEUOE!%2E>
))

uSbz:z!s1vz:
;CZZ\FIILLuf15E #   ? ;s   B1nestedc                 Z    / nU  H  nUR                  U5        M     [        [        U5      $ )N)extendr
   r5   )r;   flatitems      r   r0   r0   (   s)    DD T?r   NXYc                     U R                   S   R                  Ub  [        U5      OS Ub7  U R                   S   R                  R                  R                  U5      5        g S 5        g )Nr   )r   
initializer0   r%   r'   hstack)r   r@   rA   s      r   r   r   /   sU     
LLO}$,-MQ%%a(?Cr   )NN)typingr   r   r   r   r   r   r	   r
   configr   r   r   typesr   r   r   r5   r4   InnerInT	InnerOutTr   r   boolr   r0   r    r   r   <module>rL      s   P P P   #xE?	 
"#Thuoy89 TeCJPTDT>U T $Td$'37
4>*S X  KOd (9A$	r   