
    %Vji!                     
   d dl mZ d dlmZ d dlm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  ed	d
dg          Z edg d          Zej        j        Zej        j        Zej        j        Zd Zd Z G d de          ZdS )    )
namedtuple)deepcopy)combinationsN)normalize_function)_pytree)TorchDispatchMode)tree_mapMutationop_namearg_nameAliasing)r   r   output_numberc                     t          | t          j                  rdS 	 t          |           dk    rdS t	          |           D ]}t          |t          j                  s dS  n# t
          $ r Y dS w xY wdS )NFr   T)
isinstancetorchTensorleniter	TypeError)iterablets     ]/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_subclasses/schema_check_mode.pyis_iterable_of_tensorsr   !   s    (EL)) ux==A5h 	 	Aa.. uu	    uu4s   A# ,A# !A# #
A10A1c                 D   g }| D ]}t          |t          j                  r:|                    |                                                                           Vt          |          r |                    d |D                        |                    |           |S )Nc                 Z    g | ](}|                                                                 )S  )detachclone).0r   s     r   
<listcomp>z clone_inputs.<locals>.<listcomp>7   s,    ;;;!188::++--;;;    )r   r   r   appendr   r   r   )argsinputsargs      r   clone_inputsr&   0   s    F  c5<(( 	MM#**,,,,..////#C(( 	MM;;s;;;<<<<MM#Mr!   c                   *    e Zd ZddZd Zd Zd	dZdS )
SchemaCheckModereturnNc                 0    g | _         g | _        g | _        d S N)opsmutatedaliasingselfs    r   __init__zSchemaCheckMode.__init__?   s     r!   c                     | j                                          | j                                         | j                                         d S r+   )r,   clearr-   r.   r/   s    r   reset_cachezSchemaCheckMode.reset_cacheG   sB    r!   c                 (    t          | j        ddi d S )Nsep,)printr,   r/   s    r   display_opszSchemaCheckMode.display_opsL   s    tx!S!!!!!r!   r   c           
      x	   d fdd }d }d d | j                             |j        j                   t	          |||d          j        t          t                                          t          
                                                              fd	D             }fd
D             } ||i |}	fdD             }
t          |	t                    r|	n|	f}t          |          }t          |j                  }|                               t!          t#          |j        j                            D ]}|j        j        |         } ||j                  }|
                    |          ||                    |          }|                    |          }|
                    |          }t!          t#          |                    D ]_}d} |||         |          r|j        j        |vr|                    t+          t,          j        |          t+          t,          j        |                    st3          d| d          | j                            t7          |j        j        |d|                      |||         u rt          |t8          j                  r|                    t+          t,          j        |                    sZ|t8          j         j        j         j!        t8          j         j        j"        j!        fvr"t3          dtG          |           d|           atI          fdt          tK          j&        |          tK          j&        |          |          D                       rr|                    t+          t,          j        |                    st3          d| d          | j'                            tQ          |j        j        |                     tS          t!          t#          |j        j*                            d          D ]y\  }} |||         ||                   r\|                    t+          t,          j        |          t+          t,          j        |                    st3          d| d| d          z|	S )Nc                 h    | j         rt          j        | |          S t          j        | |d          S )NT)	equal_nan)is_quantizedr   equalallclose)lhsrhss     r   bitwise_equalz9SchemaCheckMode.__torch_dispatch__.<locals>.bitwise_equalP   s9     @ {3,,,~c3$????r!   c                    t          |           t          j        k    ot          |          t          j        k    }|r| j        t          j        k    r|j        t          j        k    rx|                                 |                                k    oL | |          o@|d         |                                k    o"|d         |                                j        k     S dS )Nr      F)	typer   r   layout
sparse_csrsizestride_typed_storage_cdata)beforeaftermdare_tensorsrB   s       r   has_mutatedz7SchemaCheckMode.__torch_dispatch__.<locals>.has_mutatedX   s    v,,%,6V4;;%,;VK
MU%555LE$444 KKMMUZZ\\1 ?%fe44?1/? 1!5!5!7!7!>>	  5r!   c                     	 t           j                            | |          S # t          $ r/}t	          |                              d          rY d }~dS |d }~ww xY w)NzCannot inspect value of type F)r   _C	_overlaps	Exceptionstr
startswith)r@   rA   	exceptions      r   has_aliasedz7SchemaCheckMode.__torch_dispatch__.<locals>.has_aliasedg   sm    $x))#s333 $ $ $y>>,,-LMM $ 55555#O	$s   " 
A"AAAc                     | dk    r| ndS )Nr0   inputr   )names    r   standardize_namez<SchemaCheckMode.__torch_dispatch__.<locals>.standardize_namep   s    6>>44w6r!   c                     t          | t          j                  r7t          |           t          j        k    s	 | j        S # t
          $ r | cY S w xY w| S r+   )r   r   r   rE   elemAttributeError)es    r   unwrapz2SchemaCheckMode.__torch_dispatch__.<locals>.unwraps   s]    !U\** 477el3J3J6M%   HHHHs   A   AAc                    t          | t          j                  rt          |           t          j        k    sS	 | j        }t          |                                          |                                j        fS # t          $ r Y d S w xY w| j
        t          j        k    r:t          |                                           |                                 j        fS d S r+   )r   r   r   rE   r^   r   rI   rJ   rK   r_   rF   rG   )r`   currents     r   parse_metadataz:SchemaCheckMode.__torch_dispatch__.<locals>.parse_metadata{   s    !U\** MAww%,..$"#&$W^^%5%566#2244;   * $ $ $#tt$ X!111$QXXZZ00!2B2B2D2D2KLL4s   A A: :
BBT)normalize_to_only_use_kwargsc           	      X    i | ]&}|t                              |                    'S r   r	   get)r   r[   c_p_argsra   s     r   
<dictcomp>z6SchemaCheckMode.__torch_dispatch__.<locals>.<dictcomp>   s>     
 
 
;?D(68<<#5#566
 
 
r!   c           	      x    i | ]6}|fd t          j                            |                    D             7S )c                 &    g | ]} |          S r   r   )r   ard   s     r   r    zASchemaCheckMode.__torch_dispatch__.<locals>.<dictcomp>.<listcomp>   s0       &'q!!  r!   )pytreetree_leavesrh   )r   r[   rd   pre_argumentss     r   rj   z6SchemaCheckMode.__torch_dispatch__.<locals>.<dictcomp>   sk     
 
 
      +1+=m>O>OPT>U>U+V+V  
 
 
r!   c           	      X    i | ]&}|t                              |                    'S r   rg   )r   r[   rp   ra   s     r   rj   z6SchemaCheckMode.__torch_dispatch__.<locals>.<dictcomp>   s@     
 
 
@DD(6=#4#4T#:#:;;
 
 
r!   )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   :   K   | ]\  }}} |||          V  d S r+   r   )r   rm   bcrP   s       r   	<genexpr>z5SchemaCheckMode.__torch_dispatch__.<locals>.<genexpr>   sK        1a  K1a((     r!   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   tupler	   
SchemaInfoadd_argument_valuesranger   	argumentsrh   may_contain_aliasSchemaArgumentSchemaArgTypeoutputrZ   RuntimeErrorr.   r   r   r   
is_mutableatenliftdefault
lift_freshrU   anyrn   ro   r-   r
   r   returns)r0   functypesr#   ry   rX   r\   cloned_argumentscloned_metadataoutr   	tuple_outschema_infoir%   r[   rL   rN   rM   j
unsafe_opsrB   ri   rP   rd   rp   ra   s                        @@@@@@r   __torch_dispatch__z"SchemaCheckMode.__torch_dispatch__O   s   	@ 	@ 	@	 	 	 	 		$ 	$ 	$	7 	7 	7	 	 		 	 	  	)*** +$T
 
 

 	 M..00,}?S?S?U?U2V2VWWXX
 
 
 
 
CK
 
 

 
 
 
 
 &	
 
 
 dD#F##
 
 
 
 
HU
 
 
	 &c511=CCv	VY//	 ..''666 s4<12233 3	O 3	OA,(+C##CH--D}}T"".)--d33$((..!d++s9~~..  A!MJ#IaL%88 L-Z??*<<*=+?CC*=+>BB    
 #/ bD b b b# #  !M00 ():D-A-- P P   	!,,E5<1P1P,*55*=+>BB    
"!IN/7!IN5=+   #/!7!$Q!7 !7.2!7 !7# # 
     #&*622F4Fu4M4Mr$ $     O '11&}':A>>  O +XXXX   ++HT\5F,M,MNNN !s4<+?'@'@!A!A1EE 	R 	RDAq{9Q<166 R"44"=#7;;"=#7;;  R ''P!'P'P!'P'P'PQQQ
r!   )r)   N)r   N)__name__
__module____qualname__r1   r4   r9   r   r   r!   r   r(   r(   >   s`             
" " "W W W W W Wr!   r(   )collectionsr   copyr   	itertoolsr   r   torch.fx.operator_schemasr   torch.utilsr   rn   torch.utils._python_dispatchr   torch.utils._pytreer	   r
   r   rR   _SchemaArgumentr   _SchemaArgTyper   _SchemaInfor   r   r&   r(   r   r!   r   <module>r      s;   # " " " " "       " " " " " "  8 8 8 8 8 8 ) ) ) ) ) ) : : : : : : ( ( ( ( ( ( :j9j"9:::j"J"J"JKK )'X!
    h h h h h' h h h h hr!   