
    h
              	       H   S SK JrJrJr  SSKJr  SSKJr  SSKJ	r	  \" S5      r
\" S5      r\R                  " S5      S	\S
\\
\4   4S j5       rS\\
\4   S\
S\4S jr SS\\
\4   S\\
   S\\   S
S4S jjrS\\
\4   4S jrSS.S\\	\	4   S
\\	\	4   4S jjrSS jrg)    )CallableOptionalTypeVar   )registry)Model)Floats2dInTOutTzresizable.v1resize_layerreturnc                     [        SU R                   S3[        [        U /SU0U R                   Vs0 s H  o"U R                  U5      _M     snS9$ s  snf )z:Container that holds one layer that can change dimensions.z
resizable()r   )initlayersattrsdims)r   nameforwardr   	dim_namesmaybe_get_dim)layerr   r   s      P/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/resizable.py	resizabler      s^     
UZZL"w|,:?//J/$E''--/J  Ks   AmodelXis_trainc                 b   ^ U R                   S   nU" XS9u  nmS[        S[        4U4S jjnXE4$ )Nr   )r   dYr   c                    > T" U 5      $ N )r   callbacks    r   backpropforward.<locals>.backprop   s    |    )r   r   r
   )r   r   r   r   Yr$   r#   s         @r   r   r      s;    LLOE-KAxT c  ;r&   Nr'   c                 D    U R                   S   nUR                  X5        g )Nr   )r   
initialize)r   r   r'   r   s       r   r   r   "   s     LLOE	Qr&   c                 j    U R                   S   nU R                  S   " X!5      nX0R                   S'   U $ )Nr   r   )r   r   )r   new_nO	old_layer	new_layers       r   resize_modelr.   )   s2    QIN+I>ILLOLr&   )fill_defaultsr   c                &   U R                   (       a   eU R                  (       a   eU R                  (       a   eU R                  S5      c  U R	                  SU5        U $ XR                  S5      :X  a  U $ U R                  S5      c  U R	                  SUSS9  U $ U R                   Vs0 s H  o3U R                  U5      _M     nnXS'   [        U R                  U R                  UU R                   Vs0 s H  o3S_M     snU R                  U R                  0 U R                  S9nUR                  5         U R                   H@  nU R!                  U5      (       d  M  U(       d  SOUR#                  US5      n[%        X0XVS9  MB     U$ s  snf s  snf )	zVCreate a resized copy of a layer that has parameters W and b and dimensions nO and nI.nONnIT)force)r   paramsr   r   refsopsr   )filler)r   	ref_namesshimshas_dimset_dimget_dimr   r   r   r   _funcparam_namesr   r   r6   r)   	has_paramget_resize_parameter)r   r+   r/   r   r   r-   r7   s          r   resize_linear_weightedrB   0   sd    ||{{? }}T"dF#	==&	&	t		$dF$/8=H%%%d++DHJ+0

','8'89'8td
'89ZZkkII	,I !!??4  +Q1B1B41KFd9D " # I :s   )F	4Fc                     UR                  U 5      nUR                  U 5      nXTS [        U5      & X4[        U5      S & UR                  X5        g r!   )	get_paramlen	set_param)r   r   r-   r7   largersmallers         r   rA   rA   V   sJ      &Food#G$>S\#3w<>%r&   )NN)r   )typingr   r   r   configr   r   r   typesr	   r
   r   r   r   boolr   r   r.   rB   rA   r"   r&   r   <module>rM      s   . .   env 
 	8 	c4i0@ 	 !	5d#  t  KOd (9A$	c4i(  @D#8#$#
8X#L&r&   