
    h
                     V    S SK JrJrJrJr  SSKJr  SSKJr  \\	\
4   r " S S5      rg)    )AnyDictOptionalTuple   )FloatsXd)get_array_modulec                   z   \ rS rSr% Sr0 r\\\4   \	S'   0 r
\\\4   \	S'   \\   \	S'   0 0 4SS.S\\\4   S	\\\4   4S
 jjjr\S\\S4   4S j5       r\S\\S4   4S j5       rS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\SS4S jrS\S\S\SS4S jrS\S\S\SS4S jrSrg)ParamServer	   z&Serve parameters for a single process._params_gradsproxyN)r   paramsgradsc                P    [        U5      U l        [        U5      U l        X0l        g N)dictr   r   r   )selfr   r   r   s       V/home/james-whalen/.local/lib/python3.13/site-packages/thinc/backends/_param_server.py__init__ParamServer.__init__   s!     F|5k 
    return.c                 H    [        U R                  R                  5       5      $ )z8Get the names of registered parameter (including unset).)tupler   keys)r   s    r   
param_keysParamServer.param_keys   s     T\\&&())r   c                     [        U R                   Vs/ s H  oR                  " U6 (       d  M  UPM     sn5      $ s  snf r   )r   r   has_grad)r   keys     r   	grad_keysParamServer.grad_keys"   s,    T__L_cs8Kc_LMMLs   <<model_idnamec                 "    X4U R                   ;   $ r   )r   r   r%   r&   s      r   	has_paramParamServer.has_param&   s    4<<//r   c                 "    X4U R                   ;   $ r   r   r(   s      r   r!   ParamServer.has_grad)   s    4;;..r   c                     X4nU R                   b(  U R                   R                  X5      U R                  U'   U R                  U   $ r   )r   	get_paramr   r   r%   r&   r"   s       r   r/   ParamServer.get_param,   s@    ::! $

 4 4X DDLL||C  r   c                 &    X4nU R                   U   $ r   r,   r0   s       r   get_gradParamServer.get_grad2   s    {{3r   valuec                 t    U R                   b  U R                   R                  XU5        X0R                  X4'   g r   )r   	set_paramr   r   r%   r&   r5   s       r   r7   ParamServer.set_param6   s/    ::!JJ  7).h%&r   c                 v    U R                   b  U R                   R                  XU5        g X0R                  X4'   g r   )r   set_gradr   r8   s       r   r;   ParamServer.set_grad;   s/    ::!JJ6,1KK()r   c                    X4nU R                   b  U R                   R                  XU5        g U R                  X5      (       d~  [        US5      (       a  UR	                  5       U R
                  U'   g UR                  S   (       d+  [        U5      nUR                  U5      U R
                  X4'   g X0R
                  X4'   g U R
                  X4==   U-  ss'   g )NcopyC_CONTIGUOUS)	r   inc_gradr!   hasattrr>   r   flagsr	   ascontiguousarray)r   r%   r&   r5   r"   xps         r   r@   ParamServer.inc_gradA   s    ::!JJ6x..uf%%#(::<C [[0%e,020D0DU0KX,-05X,-KK()U2)r   )r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r   KeyTr   __annotations__r   r   r   r   propertyr   r   r#   intstrboolr)   r!   r/   r3   r7   r;   r@   __static_attributes__ r   r   r   r   	   s   0$&GT$.!&#%FDx %C= (*&(
 T8^$ D(N# *E$), * * N5s+ N N0# 0S 0T 0/ /C /D /!# !S !X !   C  H  /# /S / /d /
2 2C 2 2T 23 3C 3 3T 3r   r   N)typingr   r   r   r   typesr   utilr	   rN   rO   rK   r   rR   r   r   <module>rV      s*    - -  #S#XF3 F3r   