
    c,j3                     P   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	 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 j        j        f         dz  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          dz  dedz  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)TypeVar)	ParamSpec)Numberdecomposition_tablefunction_name_set_T_Preturnc                    t           j        }t          j        |           }|j                                        D ],}|j        |k    rt          d|j         d| j                   -|j        |k    rt          d| j                   d S )NzNo signature on param z for function z"No return annotation for function )	inspect_empty	signature
parametersvalues
annotationAssertionErrornamereturn_annotation)finspect_emptysigparams       Y/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/torch/jit/_decompositions.py(check_decomposition_has_type_annotationsr      s    NM

A

C&&((  },, KKK16KK   -
 --J!&JJKKK .-    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                    t           t          t          j        j                  st          dt                               | j        t          v rt          d| j                   t          	                    | j                   t          j
                            |           }t          j                            |j                   t          d          D ]J}t          j                            |j                   t          j                            |j                   K|t%          j                  <   | S )Nz'Expected aten_op to be OpOverload, got zDuplicated function name r    )r   
isinstancetorch_ops
OpOverloadr   type__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 	 I$w--II  
 :*** !IQZ!I!IJJJ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   rI   s   `` r   register_decompositionrJ   E   sO    8BF#3 R8H       2 #"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)rK   rL   rM   rN   dim_inrV   subsqrW   denoms              r   var_decompositionra   h   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 )NrP   r   )rM   )ra   )rK   rb   s     r   varrd      s    UX0D1FFFFr   )r   N)N)NNF)T)$r7   r   opsrU   r   r$   collections.abcr   typingr   typing_extensionsr   torch.typesr   r   dictrE   r=   ScriptFunction__annotations__setr	   r
   r   r   r1   r8   r9   rJ   rd   rM   rR   rY   boolra   r'    r   r   <module>rp      sW          y~   $ $ $ $ $ $       ' ' ' ' ' '       <> T#uy778 = = =!cee 3s8 # # #WT]]Yt__
L 
L 
L 
LQ Q QF <@# #Z"#3	001D8# xB (2r6"223# # # #F +,, ! $	! !!	cT	! ! 	!
 ! ! ! -,!H ())G Gv G G G G G *)G G Gr   