
    Yh                     \   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
 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_Pc                    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       k/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/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 ]M}|dk    r|j        dk    rt          j        d           t          ||          t          ||          k    r  dS N|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)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    %0M'I
=S^^++u"%m&:&:&<&<i>N>N>P>P"Q"Q  h
  + 	 	E<#4#>#>TUUU|U++wx/G/GGGuuu H &-%
 ]**z]/J/J++uu.,2PPPr   aten_opregistryreturnc                 |     dt           t          t          f         dt           t          t          f         f fd}|S )Nr   r1   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	   
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/   r0   s      r   decomposition_decoratorz7register_decomposition.<locals>.decomposition_decoratorF   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   )r/   r0   rG   s   `` r   register_decompositionrH   B   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)r5   tuplelistr   numelshapeatenmeansumfloatintRuntimeErrormax)rI   rJ   rK   rL   dim_inrT   subsqrU   denoms              r   var_decompositionr_   c   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 )NrN   r   )rK   )r_   )rI   r`   s     r   varrb      s    UX0D1FFFFr   )N)NNF)T)$r6   r   opsrS   r   r!   typingr   r   r   typing_extensionsr   torch.typesr   r	   dictrC   r;   ScriptFunction__annotations__setr
   r   r   r   r.   r7   r8   rH   rb   rK   rP   rW   boolr_   r$    r   r   <module>rm      sI          y~   . . . . . . . . . . ' ' ' ' ' '       <> T#uy778 = = =!cee 3s8 # # #WT]]Yt__
 
 
Q Q QB ?C# #Z"#tC!99:;# xB (2r6"223# # # #B +,,  $#'	    	$s)	     	 
       -, F ())G Gv G G G G G *)G G Gr   