
    '}h                        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 Zd Zdd	Z eej.                  j0                        	 	 	 dd
ede	ee      de	e   dedef
d       Z eej.                  j8                        dd
ededefd       Zy)    N)Tensor)DictListOptionalSet)Numberdecomposition_tablefunction_name_setc                 2   t         j                  }t        j                  |       }|j                  j	                         D ]2  }|j
                  |k7  rJ d|j                   d| j                           |j                  |k7  sJ d| j                          y )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params       X/var/www/html/test/engine/venv/lib/python3.12/site-packages/torch/jit/_decompositions.py(check_decomposition_has_type_annotationsr      s    NNM


A
C&&( G-	G#EJJ<~affXF	G-G 	.5	+AFF845.    c                    | j                   }|j                   }t        |      t        |      k7  ryt        |j                         |j                               D ]  \  }}t        j
                  }dD ]G  }|dk(  r$|j                  dk(  rt        j                  d       t        ||      t        ||      k7  sF  y |j                  }|j                  }	||k7  s|	|k7  s||	k7  s y | 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_defaults
             r   signatures_matchr,      s    %00M''I
=S^+"%m&:&:&<i>N>N>P"Q h
  + 	E<#4#4#>TU|U+wx/GG	 &--%%
 ]*z]/J+'* ..,2P2PPPr   c                       fd}|S )Nc                 r   t         t        t        j                  j                        sJ | j
                  t        vsJ d| j
                          t        j                  | j
                         t        j                  j                  |       }t        j                  j                  |j                         t        d      D ]T  }t        j                  j                  |j                         t        j                  j                  |j                         V |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_aten_opregistrys      r   decomposition_decoratorz7register_decomposition.<locals>.decomposition_decorator<   s    *H'5::#8#8999 JJ//	4&qzzl3	4/ajj)		((+!!-"5"56q 	IAHH''(;(;<HH33M4G4GH	I *7W__%&r    )rB   rC   rD   s   `` r   register_decompositionrF   ;   s    . #"r   inputdim
correctionkeepdimreturnc                    |g }|}t        |t        t        f      rt        |      dk(  r| j	                         }nd}|D ]  }|| j
                  |   z  } t        j                  | |d      }| |z
  }||z  }t        j                  |||      }	|t        |dz
        }
nIt        |t              rt        ||z
        }
n*t        |t              rt        |      |z
  }
nt        d      |	t        d|
      z  S )Nr      Tzcorrection must be int or float)r0   tuplelistr   numelshapeatenmeansumfloatintRuntimeErrormax)rG   rH   rI   rJ   dim_inrS   subsqrT   denoms              r   var_decompositionr^   Y   s     {#t}%#c(a-KKM 	$EU##A	$ 99UC&D
$,C	sB
((2sG
$Ca!ej#&!j.)E
E*!Hz)E@AAQr   unbiasedc                 .    t        | |rd      S d      S )NrM   r   )rI   )r^   )rG   r_   s     r   varra   }   s    UXFF1FFr   )N)NNF)T)r1   r   opsrR   r   r   typingr   r   r   r   torch.typesr   r	   r>   r6   ScriptFunction__annotations__setr
   r   r,   rF   ra   rI   rV   boolr^   r"   rE   r   r   <module>ri      s    yy~~   , , ;= T#uyy7778 =!e 3s8 #
5Q>#< ++,  $#'	  	$s)	     	 
   - F (()Gv G G G *Gr   