o
    i                     @   s   U d dl Z d dl mZ e jjZd dlZd dlZd dlmZmZm	Z	m
Z
 d dlmZ i Zeee jjf ed< e Ze
e ed< dd Zd	d
 ZdddZeejj			ddede	ee  de	e dedef
ddZeejjddededefddZdS )    N)Tensor)DictListOptionalSet)Numberdecomposition_tablefunction_name_setc                 C   s`   t j}t | }|j D ]}|j|ks J d|j d| j q|j|ks.J d| j d S )NzNo signature on param z for function z"No return annotation for function )inspect_empty	signature
parametersvalues
annotationnamereturn_annotation)finspect_emptysigparam r   h/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torch/jit/_decompositions.py(check_decomposition_has_type_annotations   s   

r   c           
      C   s   | j }|j }t|t|krdS t| | D ]=\}}tj}dD ]}|dkr2|jdkr2td t	||t	||kr@  dS q"|j
}|j
}	||krV|	|krV||	krV dS q| j|jkS )NF)r   r   r   selfz4PyTorch uses 'input' instead of 'self' on public api)r   lenzipr   r
   r   r   warningswarngetattrdefaultr   )
Zdecomposition_sigZtorch_op_sigZdecomp_paramsZ	op_paramsZdecomp_paramZop_paramr   fieldZdecomp_defaultZ
op_defaultr   r   r   signatures_match   s&   
r!   c                    s    fdd}|S )Nc                    s   d u rt t tjjsJ | jtvsJ d| j t| j tj	| }tj
|j tdD ]}tj
|j tj
|j q3|t j< | S )NzDuplicated function name    )r   
isinstancetorchZ_opsZ
OpOverload__name__r	   addjitscriptZ_CZ_jit_pass_inlinegraphrangeZ_jit_pass_peepholeZ_jit_pass_constant_propagationstrZ_schema)r   Zscripted_func_aten_opregistryr   r   decomposition_decorator<   s   
z7register_decomposition.<locals>.decomposition_decoratorr   )r.   r/   r0   r   r-   r   register_decomposition;   s   r1   Finputdim
correctionkeepdimreturnc                 C   s   |d u rg }|}t |ttfrt|dkr|  }nd}|D ]	}|| j| 9 }qt| |d}| | }|| }t|||}	|d u rIt	|d }
nt |t
rUt	|| }
nt |t	rat	|| }
ntd|	td|
 S )Nr      Tzcorrection must be int or float)r#   tuplelistr   ZnumelshapeatenmeansumfloatintRuntimeErrormax)r2   r3   r4   r5   Zdim_inr<   subsqr=   denomr   r   r   var_decompositionY   s(   


rF   Tunbiasedc                 C   s   t | |rddS ddS )Nr7   r   )r4   )rF   )r2   rG   r   r   r   var}   s   rH   )N)NNF)T)r$   r   opsr;   r
   r   typingr   r   r   r   Ztorch.typesr   r   r+   r'   ZScriptFunction__annotations__setr	   r   r!   r1   rH   r4   r?   boolrF   r   r   r   r   r   <module>   s:   
 



#