
    ֧g'                     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
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DictListOptionalSet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       U/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/jit/_decompositions.py(check_decomposition_has_type_annotationsr      s    NM

A

C&&(( G G---FEJFFafFF .--- 	...4AF44 	/....    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_matchr1   #   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   r4   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_r2   r3   s      r   decomposition_decoratorz7register_decomposition.<locals>.decomposition_decoratorF   s    *H'5:#899999 J////3qz33 0//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   rJ   s   `` r   register_decompositionrK   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)r8   tuplelistr"   numelshapeatenmeansumfloatintRuntimeErrormax)rL   rM   rN   rO   dim_inrW   subsqrX   denoms              r   var_decompositionrb   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 )NrQ   r   )rN   )rb   )rL   rc   s     r   varre      s    UX0D1FFFFr   )N)NNF)T)%r9   r   opsrV   r   r$   typingr   r   r   r   r   r	   typing_extensionsr
   torch.typesr   r   rF   r>   ScriptFunction__annotations__setr   r   r   r   r1   r:   r;   rK   re   rN   rZ   boolrb   r'    r   r   <module>ro      s[          y~   ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ' ' ' ' ' '       <> T#uy778 = = =!cee 3s8 # # #WT]]Yt__
5 
5 
5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   