
    h              
          S SK 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\S9r\" S\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g)    )CallableListOptionalTupleTypeVarcast   )registry)Model)Array2dArray3dInT)boundOutTzwith_reshape.v1layerreturnc           	      P    [        SU R                   S3[        [        U /SSS.S9$ )z2Reshape data on the way into and out from a layer.zwith_reshape()N)nOnI)initlayersdims)r   nameforwardr   )r   s    S/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/with_reshape.pywith_reshaper      s4     


|1%w%     modelXis_trainc                   ^ ^	^
^^ T R                   S   nUR                  m
[        T
S S 5      UR                  S5      /-   nUR                  S   mUR                  S   mT R                  R                  USUR                  S   45      nU" XRS9u  nm	T R                  R                  " U/UQ76 nS[        S[        4U	U
U UU4S	 jjn[        [        U5      U4$ )
Nr   r      r	   )r!   dYr   c                    > TR                   R                  U TT-  S5      nT" TR                   R                  " U/TQ76 5      $ )Nr#   )opsreshape2reshape3)r%   reshapedY2d_backpropinitial_shaper   nBnTs     r   backpropforward.<locals>.backprop!   s>    99%%b"r'26EII..xH-HIIr   )	r   shapelistget_dimr'   reshaper)   r   r   )r   r    r!   r   final_shapeX2dY2dYr/   r+   r,   r-   r.   s   `        @@@@r   r   r      s    LLOEGGM}Sb)*emmD.A-BBK	
B	
B
))

AAGGAJ/
0Cc5C		3--AJS JS J J Q<!!r   Nr8   c           	      B   U R                   S   nUc  Uc  UR                  5         S nS nUb9  [        [        U R                  R                  USUR                  S   45      5      nUb9  [        [        U R                  R                  USUR                  S   45      5      nUR                  XES9  UR                  S5      (       a!  U R                  SUR                  S5      5        UR                  S5      (       a"  U R                  SUR                  S5      5        g g )Nr   r#   )r    r8   r   r   )
r   
initializer   r   r'   r4   r1   has_dimset_dimr3   )r   r    r8   r   r6   r7   s         r   r   r   (   s     LLOEyQY!C!C}7EII--a"aggbk1BCD}7EII--a"aggbk1BCD	s"}}TdEMM$/0}}TdEMM$/0 r   )NN)typingr   r   r   r   r   r   configr
   r   r   typesr   r   r   r   r   r   boolr   r    r   r   <module>rB      s    A A   $e7#vW% 
"#dDj) eCHo  $"5c? "s "d "uS(]?S "$ QU1c?1'01<DW<M1	1r   