o
    iS                     @   s8  d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZmZ d dlmZ ddlmZ ddlmZ erJdd	lmZ g d
ZdedefddZ	ddedededgdf fddZdd Zde	eeee f  fddZ			ddedede	eeee f  dedgdf fddZ dS )    N)TYPE_CHECKINGCallableDictListOptionalSetType)with_nvtx_range)Modelwrap_model_recursive)use_nvtx_range   )Warnings)registry)Language)
pipepredictset_annotationsupdaterehearseget_loss
initializebegin_updatefinish_updater   forward_colorbackprop_colorc                 C   s^   dd | j D }t }|D ]}|j D ]}t||v rq|t| t|||d qq| S )Nc                 S   s$   g | ]\}}t |d r|jr|qS )is_trainable)hasattrr   ).0_r    r    F/home/ubuntu/.local/lib/python3.10/site-packages/spacy/ml/callbacks.py
<listcomp>"   s    z*models_with_nvtx_range.<locals>.<listcomp>r   r   )
componentssetmodelwalkidaddr	   )nlpr   r   pipesseen_modelsr   noder    r    r!   models_with_nvtx_range!   s   r.   returnr   c                 C   s   t jt| |dS )Nr#   )	functoolspartialr.   r#   r    r    r!   create_models_with_nvtx_range5   s
   r3   c                 O   sb   t |tjr||i |S t| j d|j  ||i |W  d    S 1 s*w   Y  d S )N )
isinstancer1   r2   r   name__name__)selffuncargskwargsr    r    r!   "nvtx_range_wrapper_for_pipe_method?   s
   $r<   additional_pipe_functionsc                 C   s   | j D ]s\}}|r||jg }ng }t| D ]^}t||d }|d u r4||v r3ttjj	||jd qt
tt||}zt||_W n   ttjj	||jd Y qzt||| W q tyu   ttjj	||jd Y qw q| S )N)methodr   )r$   getr6   %DEFAULT_NVTX_ANNOTATABLE_PIPE_METHODSgetattrwarningswarnr   W121formatr1   r2   types
MethodTyper<   inspect	signature__signature__W122setattrAttributeError)r*   r=   r   r   extra_funcsr6   r9   wrapped_funcr    r    r!   pipes_with_nvtx_rangeG   s:   rP   c                    s    fdd}|S )Nc                    s   t | } t|  } | S )N)r.   rP   )r*   r=   r   r   r    r!   inneru   s   
z6create_models_and_pipes_with_nvtx_range.<locals>.innerr    )r   r   r=   rR   r    rQ   r!   'create_models_and_pipes_with_nvtx_rangep   s   rS   )r/   r/   )r/   r/   N)!r1   rH   rF   rB   typingr   r   r   r   r   r   r   thinc.layersr	   thinc.modelr
   r   
thinc.utilr   errorsr   utilr   languager   r@   intr.   r3   r<   strrP   rS   r    r    r    r!   <module>   sL    $


*