
    
iF                     v   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 j6                  j8                  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<                  jH                        ddede"defd       Zy)    N)Tensor)Callable)OptionalTypeVar)	ParamSpec)Numberdecomposition_tablefunction_name_set_T_Preturnc                 B   t         j                  }t        j                  |       }|j                  j	                         D ]6  }|j
                  |k(  st        d|j                   d| j                          |j                  |k(  rt        d| j                         y )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       j/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/jit/_decompositions.py(check_decomposition_has_type_annotationsr      s    NNM


A
C&&( }, (N166(K  -A!&&JKK .    c                    | j                   }|j                   }t        |      t        |      k7  ryt        |j                         |j                               D ]  \  }}t        j
                  }dD ]I  }|dk(  r&|j                  dk(  rt        j                  dd       t        ||      t        ||      k7  sH  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   )
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_matchr2   $   s   %00M''I
=S^+"%m&:&:&<i>N>N>P"Q h
  + 	E<#4#4#>JWX |U+wx/GG	 &--%%
 ]*z]/J++. ..,2P2PPPr   aten_opregistryc                 d     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                  | 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'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_r3   r4   s      r   decomposition_decoratorz7register_decomposition.<locals>.decomposition_decoratorI   s    *H'5::#8#89 9$w-I 
 ::** #<QZZL!IJJajj)		((+!!-"5"56q 	IAHH''(;(;<HH33M4G4GH	I *7W__%&r   )r   r   r   )r3   r4   rJ   s   `` r   register_decompositionrK   E   s0    8BF#3 R8H 2 #"r   inputdim
correctionkeepdimc                    |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)r7   tuplelistr#   numelshapeatenmeansumfloatintRuntimeErrormax)rL   rM   rN   rO   dim_inrW   subsqrX   denoms              r   var_decompositionrb   h   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 )NrQ   r   )rN   )rb   )rL   rc   s     r   varre      s    UXFF1FFr   )r   N)N)NNF)T)%r8   r   opsrV   r   r%   collections.abcr   typingr   r   typing_extensionsr   torch.typesr   r	   dictrF   r>   ScriptFunction__annotations__setr
   r   r   r   r2   r9   r:   rK   re   rN   rS   rZ   boolrb   r(    r   r   <module>rq      s     yy~~   $ $ '  <> T#uyy7778 =!e 3s8 #T]t_
LQF ?C#ZZ""#tC!9!99:;# xB (2r6"223#F ++,  $#'	!!	$s)	!  ! 	!
 ! -!H (()Gv G G G *Gr   