
    rbi                     f   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 d dl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 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Z eej        j                  	 	 	 ddede	e e!                  de	e         de"def
d            Z# eej        j$                  ddede"defd            ZdS )    N)Tensor)Callable)OptionalTypeVar)	ParamSpec)Numberdecomposition_tablefunction_name_set_T_Preturnc                    t           j        }t          j        |           }|j                                        D ]'}|j        |k    sJ d|j         d| j                     (|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params       V/root/projects/butler/venv/lib64/python3.11/site-packages/torch/jit/_decompositions.py(check_decomposition_has_type_annotationsr      s    NM

A

C&&(( 
 
=000GUZGGqvGG 1000  M1115QV55 21111    c                    | j         }|j         }t          |          t          |          k    rdS t          |                                |                                          D ]\  }}t          j        }dD ]O}|dk    r!|j        dk    rt          j        dd           t          ||          t          ||          k    r  dS P|j
        }|j
        }	||k    r|	|k    r	||	k    r dS | j        |j        k    S )NF)r   r   r   selfz4PyTorch uses 'input' instead of 'self' on public api   )
stacklevel)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_matchr1   $   s0   %0M'I
=S^^++u"%m&:&:&<&<i>N>N>P>P"Q"Q  h
  + 	 	E<#4#>#>JWX    |U++wx/G/GGGuuu H &-%
 ]**z]/J/J++uu.,2PPPr   aten_opregistryc                 |     dt           t          t          f         dt           t          t          f         f fd}|S )Nr   r   c                 B   t           t          t          j        j                  sJ | j        t          vsJ d| j                     t                              | j                   t          j        	                    |           }t          j
                            |j                   t          d          D ]J}t          j
                            |j                   t          j
                            |j                   K|t!          j                  <   | S )NzDuplicated function name r    )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_r2   r3   s      r   decomposition_decoratorz7register_decomposition.<locals>.decomposition_decoratorI   s    *H'5:#899999 z!22224
44 322 	aj)))	((++!!-"5666q 	I 	IAH''(;<<<H33M4GHHHH)6W_%%&r   )r   r   r   )r2   r3   rH   s   `` r   register_decompositionrI   E   sO    8BF#3 R8H       . #"r   Finputdim
correctionkeepdimc                 V   |g }|}t          |t          t          f          r(t          |          dk    r|                                 }nd}|D ]}|| j        |         z  }t                              | |d          }| |z
  }||z  }t                              |||          }	|t          |dz
            }
n_t          |t                    rt          ||z
            }
n7t          |t                    rt          |          |z
  }
nt          d          |	t          d|
          z  S )Nr      Tzcorrection must be int or float)r6   tuplelistr"   numelshapeatenmeansumfloatintRuntimeErrormax)rJ   rK   rL   rM   dim_inrU   subsqrV   denoms              r   var_decompositionr`   f   s/    {#t}%% $#c((a--KKMM 	$ 	$EU##AA99UC&&D
$,C	sB
((2sG
$
$Ca!ej#&& 	B!j.))EE
E** 	B!HHz)EE@AAA Qr   Tunbiasedc                 ,    t          | |rdnd          S )NrO   r   )rL   )r`   )rJ   ra   s     r   varrc      s    UX0D1FFFFr   )r   N)N)NNF)T)%r7   r   opsrT   r   r$   collections.abcr   typingr   r   typing_extensionsr   torch.typesr   r	   dictrD   r<   ScriptFunction__annotations__setr
   r   r   r   r1   r8   r9   rI   rc   rL   rQ   rX   boolr`   r'    r   r   <module>ro      sZ          y~   $ $ $ $ $ $ $ $ $ $ $ $ $ $ ' ' ' ' ' '       <> T#uy778 = = =!cee 3s8 # # #WT]]Yt__
 
 
 
Q Q QF ?C# #Z"#tC!99:;# xB (2r6"223# # # #B +,,  $#'	! !!	$s)	!  ! 	!
 ! ! ! -,!H ())G Gv G G G G G *)G G Gr   