o
    h                     @   sR  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	 d dl
mZ d dlmZ i Zeee jjf ed< e Zee ed< e	dZed	Zd
d Zdd Z	dde jjdeeee jjf  deeeef geeef f f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)CallableOptionalTypeVar)	ParamSpec)Numberdecomposition_tablefunction_name_set_T_Pc                 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   m/var/www/html/construction_image-detection-poc/venv/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   )
decomposition_sigtorch_op_sigdecomp_params	op_paramsdecomp_paramop_paramr   fielddecomp_default
op_defaultr   r   r   signatures_match#   s&   
r+   aten_opregistryreturnc                    s,   dt ttf dt ttf f fdd}|S )Nr   r.   c                    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torch_ops
OpOverload__name__r	   addjitscript_C_jit_pass_inlinegraphrange_jit_pass_peephole_jit_pass_constant_propagationstr_schema)r   scripted_func_r,   r-   r   r   decomposition_decoratorF   s   
z7register_decomposition.<locals>.decomposition_decorator)r   r   r
   )r,   r-   rC   r   rB   r   register_decompositionB   s   (rD   Finputdim
correctionkeepdimc                 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)r0   tuplelistr   numelshapeatenmeansumfloatintRuntimeErrormax)rE   rF   rG   rH   dim_inrO   subsqrP   denomr   r   r   var_decompositionc   s(   


rZ   Tunbiasedc                 C   s   t | |rddS ddS )NrI   r   )rG   )rZ   )rE   r[   r   r   r   var   s   r\   )N)NNF)T)$r1   r   opsrN   r   r   typingr   r   r   typing_extensionsr   torch.typesr   r   dictr>   r6   ScriptFunction__annotations__setr	   r
   r   r   r+   r2   r3   rD   r\   rG   rK   rR   boolrZ   r!   r   r   r   r   <module>   sN   
!

!

#