
    i
                     V    d dl mZmZmZmZ ddlmZ ddlmZ ee	e
f   Z G d d      Zy)    )AnyDictOptionalTuple   )FloatsXd)get_array_modulec                   Z   e Zd ZU dZi Zeeef   ed<   i Z	eeef   ed<   e
e   ed<   i i fdddeeef   deeef   fd	Zed
eedf   fd       Zed
eedf   fd       Zdeded
efdZdeded
efdZdeded
efdZdeded
efdZdededed
dfdZdededed
dfdZdededed
dfdZy)ParamServerz&Serve parameters for a single process._params_gradsproxyN)r   paramsgradsc                R    t        |      | _        t        |      | _        || _        y N)dictr   r   r   )selfr   r   r   s       m/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/backends/_param_server.py__init__zParamServer.__init__   s#     F|5k 
    return.c                 H    t        | j                  j                               S )z8Get the names of registered parameter (including unset).)tupler   keys)r   s    r   
param_keyszParamServer.param_keys   s     T\\&&())r   c                 r    t        | j                  D cg c]  } | j                  | s| c}      S c c}w r   )r   r   has_grad)r   keys     r   	grad_keyszParamServer.grad_keys"   s,    T__Lcs8KcLMMLs   44model_idnamec                 "    ||f| j                   v S r   )r   r   r!   r"   s      r   	has_paramzParamServer.has_param&   s    $4<<//r   c                 "    ||f| j                   v S r   r   r$   s      r   r   zParamServer.has_grad)   s    $4;;..r   c                     ||f}| j                   )| j                   j                  ||      | j                  |<   | j                  |   S r   )r   	get_paramr   r   r!   r"   r   s       r   r)   zParamServer.get_param,   sD    ::! $

 4 4Xt DDLL||C  r   c                 (    ||f}| j                   |   S r   r'   r*   s       r   get_gradzParamServer.get_grad2   s    {{3r   valuec                 x    | j                   | j                   j                  |||       || j                  ||f<   y r   )r   	set_paramr   r   r!   r"   r-   s       r   r/   zParamServer.set_param6   s5    ::!JJ  47).h%&r   c                 z    | j                   | j                   j                  |||       y || j                  ||f<   y r   )r   set_gradr   r0   s       r   r2   zParamServer.set_grad;   s5    ::!JJ$6,1DKK4()r   c                    ||f}| j                   | j                   j                  |||       y | j                  ||      swt        |d      r|j	                         | j
                  |<   y |j                  d   s,t        |      }|j                  |      | j
                  ||f<   y || j
                  ||f<   y | j
                  ||fxx   |z  cc<   y )NcopyC_CONTIGUOUS)	r   inc_gradr   hasattrr4   r   flagsr	   ascontiguousarray)r   r!   r"   r-   r   xps         r   r6   zParamServer.inc_gradA   s    ::!JJ$6x.uf%#(::<C [[0%e,020D0DU0KXt,-05Xt,-KK4()U2)r   )__name__
__module____qualname____doc__r   r   KeyTr   __annotations__r   r   r   r   propertyr   r   r    intstrboolr%   r   r)   r,   r/   r2   r6    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	   rB   rC   r?   r   rE   r   r   <module>rI      s*    - -  #S#XF3 F3r   