
    sh!                     2   S SK Jr  S SKJr  S SKJr  S SKrS SKJr  S SK	J
r  S SKJr  S SKJr  \" S	S
S/5      r\" S/ SQ5      r\R$                  R&                  r\R$                  R*                  r\R$                  R.                  rS rS r " S S\5      rg)    )
namedtuple)deepcopy)combinationsN)normalize_function)_pytree)TorchDispatchMode)tree_mapMutationop_namearg_nameAliasing)r   r   output_numberc                     [        U [        R                  5      (       a  g [        U 5      S:X  a  g[	        U 5       H$  n[        U[        R                  5      (       a  M$    g   g! [
         a     gf = f)NFr   T)
isinstancetorchTensorleniter	TypeError)iterablets     w/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/_subclasses/schema_check_mode.pyis_iterable_of_tensorsr   !   se    (ELL))x=AhAa..  
   s"   A& +A& !A& #A& &
A32A3c                    / nU  H  n[        U[        R                  5      (       a/  UR                  UR	                  5       R                  5       5        MQ  [        U5      (       a?  UR                  U Vs/ s H   o3R	                  5       R                  5       PM"     sn5        M  UR                  U5        M     U$ s  snf N)r   r   r   appenddetachcloner   )argsinputsargr   s       r   clone_inputsr"   0   s    Fc5<<((MM#**,,,./#C((MMs;s!88:++-s;<MM#  M	 <s   5'B<
c                   4    \ rS rSrSS jrS rS rS	S jrSrg)
SchemaCheckMode>   Nc                 .    / U l         / U l        / U l        g r   )opsmutatedaliasingselfs    r   __init__SchemaCheckMode.__init__?   s         c                     U R                   R                  5         U R                  R                  5         U R                  R                  5         g r   )r'   clearr(   r)   r*   s    r   reset_cacheSchemaCheckMode.reset_cacheG   s0    r.   c                 .    [        U R                  SS06  g )Nsep,)printr'   r*   s    r   display_opsSchemaCheckMode.display_opsL   s    txx!S!r.   c                 
  ^^ S mU4S jmS nS nS nS nU R                   R                  UR                  R                  5        [	        XUSS9R
                  n	[        [        U	R                  5       [        U	R                  5       5      5      5      n
U
 Vs0 s H  o[        XzR                  U5      5      _M     nnU	 VVs0 s H?  nU[        R                  " U	R                  U5      5       Vs/ s H
  o" U5      PM     sn_MA     nnnU" U0 UD6nU	 Vs0 s H  o[        XyR                  U5      5      _M     nn[        U[         5      (       a  UOU4n[        UU5      n[#        UR                  5      nUR%                  U	5        ['        [)        UR                  R*                  5      5       GH  nUR                  R*                  U   nU" UR                  5      nUR                  U5      c  MC  UR                  U5      nUR                  U5      nUR                  U5      n['        [)        U5      5       GH  nS	nU" UU   U5      (       a  UR                  R                  U;  a  UR-                  [/        [0        R2                  U5      [/        [0        R4                  U5      5      (       d  [7        S
U S35      eU R8                  R                  [;        UR                  R                  USU 35      5        UUU   L d  M  [        U[<        R>                  5      (       d  M  URA                  [/        [0        R4                  U5      5      (       a  GM   U[<        R                   RB                  RD                  RF                  [<        R                   RB                  RH                  RF                  4;  d  GM  [7        S[K        U5       SU 35      e   [M        U4S j[        [        R                  " U5      [        R                  " U5      U5       5       5      (       d  GMy  URA                  [/        [0        R4                  U5      5      (       d  [7        S
U S35      eU RN                  R                  [Q        UR                  R                  U5      5        GM     [S        ['        [)        UR                  RT                  5      5      S5       Hu  u  nnU" UU   UU   5      (       d  M  UR-                  [/        [0        R2                  U5      [/        [0        R2                  U5      5      (       a  Me  [7        SU SU S35      e   U$ s  snf s  snf s  snnf s  snf )Nc                 z    U R                   (       a  [        R                  " X5      $ [        R                  " XSS9$ )NT)	equal_nan)is_quantizedr   equalallclose)lhsrhss     r   bitwise_equal9SchemaCheckMode.__torch_dispatch__.<locals>.bitwise_equalP   s-     {{3,,~~c$??r.   c                   > [        U 5      [        R                  :H  =(       a    [        U5      [        R                  :H  nU(       a  U R                  [        R                  :w  a  UR                  [        R                  :w  ay  U R                  5       UR                  5       :H  =(       aL    T" X5      =(       a=    US   UR                  5       :H  =(       a     US   UR                  5       R                  :H  (       + $ g)Nr      F)	typer   r   layout
sparse_csrsizestride_typed_storage_cdata)beforeaftermdare_tensorsrA   s       r   has_mutated7SchemaCheckMode.__torch_dispatch__.<locals>.has_mutatedX   s    v,%,,6V4;%,,;VKMMU%5%55LLE$4$44 KKMUZZ\1 ?%f4?1/? 1!5!5!7!>!>>	  r.   c                      [         R                  R                  X5      $ ! [         a+  n[	        U5      R                  S5      (       a   S nAgUeS nAff = f)NzCannot inspect value of type F)r   _C	_overlaps	Exceptionstr
startswith)r?   r@   	exceptions      r   has_aliased7SchemaCheckMode.__torch_dispatch__.<locals>.has_aliasedg   sJ    $xx))#33 $y>,,-LMM #O	$s   ! 
AAAAc                     U S:w  a  U $ S$ )Nr+   input )names    r   standardize_name<SchemaCheckMode.__torch_dispatch__.<locals>.standardize_namep   s    6>46w6r.   c                     [        U [        R                  5      (       a*  [        U 5      [        R                  :X  d   U R                  $ U $ ! [
         a    U s $ f = fr   )r   r   r   rE   elemAttributeError)es    r   unwrap2SchemaCheckMode.__torch_dispatch__.<locals>.unwraps   sM    !U\\**47ell3J66M H & Hs   A AAc                    [        U [        R                  5      (       a  [        U 5      [        R                  :X  d@   U R                  n[        UR                  5       5      UR                  5       R                  4$ U R                  [        R                  :w  a3  [        U R                  5       5      U R                  5       R                  4$ g ! [         a     g f = fr   )r   r   r   rE   rb   r   rI   rJ   rK   rc   rF   rG   )rd   currents     r   parse_metadata:SchemaCheckMode.__torch_dispatch__.<locals>.parse_metadata{   s    !U\\**Aw%,,.$"#&&$W^^%56#224;;   XX!1!11$QXXZ0!2B2B2D2K2KLL * $#$s   >C 
CCT)normalize_to_only_use_kwargs)zaten::_unsafe_viewzaten::unsafe_splitz	Argument z0 is not defined to alias output but was aliasingoutput_zoDispatcher operators below autograd are not allowed to directly return inputs.
However, we found that `outputs[z] is c              3   <   >#    U  H  u  pnT" XU5      v   M     g 7fr   r]   ).0abcrP   s       r   	<genexpr>5SchemaCheckMode.__torch_dispatch__.<locals>.<genexpr>   s*      $a  a(($s   z* is not defined as mutable but was mutated   zOutputs z and z alias unexpectedly)+r'   r   _schemar^   r   kwargsdictzipkeysr"   valuesr	   getpytreetree_leavesr   tuple
SchemaInfoadd_argument_valuesranger   	argumentsmay_contain_aliasSchemaArgumentSchemaArgTypeoutputr\   RuntimeErrorr)   r   r   r   
is_mutableatenliftdefault
lift_freshrV   anyr(   r
   r   returns)r+   functypesr   rv   rY   r_   re   ri   pre_argumentsc_p_argsr^   cloned_argumentsro   cloned_metadataoutr   	tuple_outschema_infoir!   rL   rN   rM   j
unsafe_opsrA   rP   s                             @@r   __torch_dispatch__"SchemaCheckMode.__torch_dispatch__O   s   	@		$	7		  	))* +T

& 	 M..0,}?S?S?U2VWXCK
CK4(6<<#5668 	 
 &	
 & +1+=+=m>O>OPT>U+V+Vaq!+V  &	 	 
 D#F#HU
HU(6#4#4T#:;; 	 
 &c511Cv	VY/	 .''6 s4<<1123A,,((+C#CHH-D}}T".)--d3$((.!d+s9~.A!MJ#IaL%88 LL--Z?*<<*=+?+?C*=+>+>B    #/"+D61a b#  !MM00 ():):DGA3- P 	!,E5<<1P1P*55*=+>+>B   "!IINN//77!IINN55==+  #/%!!$QdV!7# 5 />  #&**62F4F4Fu4Mr$   '11&}':':A>  +'v-WX  ++HT\\5F5F,MNg 4l !s4<<+?+?'@!A1EDAq9Q<166"44"=#7#7;"=#7#7;  '!E!<O'PQQ F 
g


s$   $U.U3UU$U%U)r)   r(   r'   )returnN)r]   N)	__name__
__module____qualname____firstlineno__r,   r1   r7   r   __static_attributes__r]   r.   r   r$   r$   >   s    
"Wr.   r$   )collectionsr   copyr   	itertoolsr   r   torch.fx.operator_schemasr   torch.utilsr   r|   torch.utils._python_dispatchr   torch.utils._pytreer	   r
   r   rS   _SchemaArgumentr   _SchemaArgTyper   _SchemaInfor   r   r"   r$   r]   r.   r   <module>r      s    #  "  8 ) : ( j9j"9:j"JK ))''XX!!
h' hr.   