
    Ph?                         d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	Z	d dl
mZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ erd dlmZ eZd	 Zd
 Zd ZdddZ G d d      Z d dl!m"Z# y)    N)ContextManagerListOptionalTupleTYPE_CHECKING)_unwrap_functional_tensor_wrap_functional_tensorcurrent_levelpeek_interpreter_stackTransformType)Source)StorageWeakRef)is_traceable_wrapper_subclasstransform_subclass)	WeakIdRef)SymbolicContextc                 :    	 | j                   S # t        $ r Y yw xY w)NF)is_leafRuntimeErrorts    gC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_subclasses/meta_utils.pysafe_is_leafr      s#    yy s    	c                     t        j                         5  t        j                  dd       | j                  cd d d        S # 1 sw Y   y xY w)NignorezThe .grad attribute of a Tensor)warningscatch_warningsfilterwarningsgradr   s    r   	safe_gradr    '   s2    		 	 	"*KLvv 
#	"	"s   "AA
c                 &    | |k(  sJ |  d|        y )Nz !=  )abs     r   	assert_eqr%   -   s    6 aSQC= 6    Fskip_symbolicc                (      fd ||      S )Nc                     | j                   |j                          s | j                  |j                          | j                  |j                          | j                  |j                          | j                  d u |j                  d u         | j
                  |j
                          | j                         |j                                 | j                         |j                                 | j                         |j                                 t        |       d ut        |      d u       t        |        t        |       t        |             | j
                  rp | j                         |j                                 | j                         |j                                 | j                         |j                                y sJ | j                         |j                                 | j                         |j                                 | j                         |j                                | j                         r | j                   |j                          y y N)dtypeshaperequires_gradr   grad_fn	is_sparseis_inferenceis_conjis_negr    	dense_dim
sparse_dimis_coalescedstridestorage_offset_is_view_base)m1m2r%   gor(   s     r   r=   zassert_metadata_eq.<locals>.go2   s   "((BHH%bhh)"""B$4$45"**bjj)"**$bjjD&89",,-"//#R__%67"**,

-"))+ryy{+)B-t+Yr]$-FGR=$y}im,<<bllnblln5bmmor}}7boo'):; "))+ryy{3"++-r/@/@/BCbkkmR[[]3{{}288RXX& r&   r"   )r%   r;   r<   r(   r=   s   `  `@r   assert_metadata_eqr>   1   s    ': b":r&   c                   n    e Zd Zd Zd Zd Zd Zd Zd Zdd ddfd	e	e
   d
e	d   fdZ	 dd ddddZy)MetaConverterc                     i | _         t        j                         | _        g | _        d| _        d| _        d| _        d| _        d | _	        d| _
        y )N   r   )storage_memoweakrefWeakValueDictionarytensor_memomaybe_storages_to_deletecheck_expired_frequencycheck_expired_counthitmissdel_hookarg_cntselfs    r   __init__zMetaConverter.__init__Z   sO    8?8S8S8U(*%'*$#$ 	r&   c                 B    | j                   dkD  xr | j                  dk(  S )Nr   )rJ   rK   rN   s    r   
successfulzMetaConverter.successfule   s    xx!|.		Q.r&   c                 D   g }g }| j                   D ]5  }|j                         s|j                  |       %|j                  |       7 |D ]  }| j                  j	                  |d          || _         t        | j                  t        | j                               | _        y r+   )rG   expiredappendrC   popmaxrH   len)rO   new_listor_to_deleteobjs       r   check_for_expired_weak_storagesz-MetaConverter.check_for_expired_weak_storagesh   s    00C;;=c"%%c*	 1
 "C!!#t, "(.% (+((#d.K.K*L(
$r&   c                 L    | j                   j                  t        |      d       S r+   )rF   getr   )rO   r   s     r   get_tensor_memozMetaConverter.get_tensor_memo|   s    ##IaL$77r&   c                 
   t        j                  |       |j                  s|j                  rd nt	        |j                               t        |      fd}t        j                  ||       || j                  <   y )Nc                              } | y | j                   j                  d        r-j                         r| j                  j                  d        y | j                  j                         y y r+   )rF   rV   rT   rC   rG   rU   )self_refself_weak_reftensor_ref_keyweak_sts    r   del_tenz.MetaConverter.set_tensor_memo.<locals>.del_ten   sl    $H  $$^T:7??,%%))'48$ 1188A %r&   )	rD   refr0   	is_mkldnnr   _typed_storager   finalizerF   )rO   r   vrf   rc   rd   re   s       @@@r   set_tensor_memozMetaConverter.set_tensor_memo   si      D);;!++G$Q%5%5%78G"1	B* 	G$+,(r&   c                     t              }|| j                  vr& |fd      j                         | j                  |<   | j                  |   S )Nc                  l    t        j                   j                         t         j                  d      S Nmeta)r,   device)torchemptysizeuint8)ss   r   <lambda>z,MetaConverter.meta_storage.<locals>.<lambda>   s    AFFHEKKOr&   )r   rC   untyped_storage)rO   rv   callbackswrs    `  r   meta_storagezMetaConverter.meta_storage   sS    
 Qd'''%-O&o c"   %%r&   Nc                      |        S r+   r"   r   s    r   rw   zMetaConverter.<lambda>       13r&   sourcesymbolic_contextr   c                 f  "#$%&'() ddl m# $ddlm}  |dt	        | j
                               t        j                  j                         j                  t        j                  j                  j                        rJ | j                  }| xj                  dz  c_        t        j                  }j                  }dt         t         t"        df   t         t"        df   t"        f   f#fd)| xj$                  dz  c_        | j$                  | j&                  k\  r| j)                          d| _        | j+                        	at        j,                  j/                               5  j0                  rt3              }	 fd	      }
t3        |
      sJ d
       |
j5                  j7                                j8                  rd|
_        j8                  r|	st        j:                         5  |
j=                         }
|
j5                  j7                                d d d        nj>                  rt3              }	 )      \  '(} '(fd      }
t3        |
      sJ d
       j8                  rd|
_        j8                  rQ|	sNt        j:                         5  |
j=                         }
d d d        njA                         rjA                         sJ ddlm!" ddl"m#}m$} rojJ                  scjL                  jJ                  sM ||jN                  gjL                  jQ                         z  d gjL                  jQ                         z        }nd }| jS                  jL                   "d      |      }d }t        j                  jU                  t        j                  j                  jV                        }t        j                  jY                  t        j                  j                  jV                  d       	 |jZ                  jZ                  k(  rn ||jZ                  jZ                        rt        j\                  |      }nN |jZ                  |jZ                        rt        j^                  |      }n|ja                  jZ                        })fd}t3              rHt        jb                         5   |       5   ||      }
d d d        d d d        j8                  
_        njL                  j8                  j8                  k(  r7t        j:                         5   |       5   ||      }
d d d        d d d        nj8                  sJ t        jb                         5  |ja                  |jd                        }d d d        j8                  _        t        j:                         5   |       5   ||      }
d d d        d d d        t        j                  jf                  ji                  
t        j                  jf                  jk                               t        j                  jY                  t        j                  j                  jV                  |       n]t3              }	jJ                  s )      \  '(})fd%tm              rddlm!" jJ                  rYddlm7}m8} js                         \  }}i }d }|D ]F  $tu        $      &|$tw        &#      r&jx                  jz                  nd } "$%&fd      |$<   H tw        |t|              sJ d|v sJ tw        j~                  d   t        j                        sJ |u rj~                  d   |d<   n{j~                  d   j                  j                         J j                  j                  j~                  d    ||j                  d            j~                  d         |d<   t              j                  ||      }
n t        "%fd      }
n '(fd      }
t3        |
      sJ d
       j8                  rPj8                  |
_        |	s=t        j:                         5  |
j=                  t        j                        }
d d d        t        j                  j                  j                        rt        cd d d        S j                         }t        |      }|| j                  vrP|
jJ                  s&|
j                         (k(  r1|
j                         k(  r|
j                         | j                  |<   n}| j                  |      }t        j                         }ddl mS}mT}   | |
      }!|! ||!      }|5  t        jb                         5  |
j                  |'(       d d d        d d d        t              1ddlm!" | jS                  t               "d            |
_W        t        j                  j                  |
j                                t        j                  j                  |
j                                d d d        t        t        
d        | j                  |
       | j+                        S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   3xY w# 1 sw Y   8xY w# t        j                  jY                  t        j                  j                  jV                  |       w xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   !xY w)!Nr   )
FakeTensor)ConstantSource__meta_utils_unknown_tensor   return.c                 <   gt        |       rG| j                  j                  u r/| j                         | j	                         | j                         fS j                  | |      S J | j                         | j	                         | j                         fS )N)r   )
isinstance	fake_mode	shape_envrt   r7   r8   ,create_symbolic_sizes_strides_storage_offset)r   srcr   r   r   s     r    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset   s     $a,1F1F)1S FFHahhj!2B2B2DEE$QQ
 *: R   (///FFHahhj!*:*:*<==r&   c                      t         j                  j                  j                   j	                          j                          j                   j                  t         j                  d      S )Nrp   )r,   layoutrq   )	rr   opsaten_sparse_coo_tensor_with_dimsr5   r4   r-   r,   
sparse_coor   s   r   rw   z+MetaConverter.meta_tensor.<locals>.<lambda>  sJ    		 K KLLNKKMGG"#''#(#3#3#) !L !r&   z)the callback you passed in doesn't detachTc                  J    t        j                   j                  d      S ro   rr   empty_stridedr,   sizesstridesr   s   r   rw   z+MetaConverter.meta_tensor.<locals>.<lambda>*  s     3 3!7!''&!r&   )
AttrSource)
DimDynamicStatelessSymbolicContext)dynamic_sizesconstraint_sizesr:   )r~   r   c                 `    t        j                  |       xr t        j                  |       |k(  S r+   )utilsis_complex_dtypecorresponding_real_dtype)complex_dtype
real_dtypes     r   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_rP  s0    !22=A * % > >} M)!*r&   Fc                 ~    |j                   r|j                  |       S  |      \  }}}| j                  |||      S r+   )	is_nested_view_func_unsafe
as_strided)baser   r   r   r8   r~   r   s        r   _view_from_basez2MetaConverter.meta_tensor.<locals>._view_from_base  sK     {{ ()':':4'@ @ %EQ$O	!"$)$+$2'+ug~'V Vr&   c                 d     | |      \  }}}t        j                  ||| j                  d      S ro   r   )inner_t	inner_srcinner_sizesinner_stridesinner_storage_offsetr   s        r   empty_createz/MetaConverter.meta_tensor.<locals>.empty_create  s@    
 =WiP	')0$22')")--#)	  r&   )TensorPropertyTensorPropertySourcec                  $                   S r+   r"   r   attrr   r   r~   s   r   rw   z+MetaConverter.meta_tensor.<locals>.<lambda>  s    L(/FD1I-&r&   ragged_size)hintc                 &       fd      S )Nc                  $                   S r+   r"   r   s   r   rw   z=MetaConverter.meta_tensor.<locals>.<lambda>.<locals>.<lambda>  s    L(/(264(@-&r&   r"   )r   r   r   ry   r   r~   s   ``r   rw   z+MetaConverter.meta_tensor.<locals>.<lambda>  s    h%&7"r&   c                  J    t        j                   j                  d      S ro   r   r   s   r   rw   z+MetaConverter.meta_tensor.<locals>.<lambda>  s     E$7$7 % '&'gg'-	%r&   )memory_format)ry   )in_kernel_invocation_managermaybe_get_fake_moder   r'   )_torch._subclasses.fake_tensorr   torch._dynamo.sourcer   rX   rF   rr   _C_dispatch_tls_local_exclude_sethasDispatchKeyPythonrM   
contextlibnullcontextsuppress_guardsr   intrI   rH   r\   r_   inference_moder1   r0   r   _coalesced_r6   r.   enable_gradclonerh   r9   r   %torch.fx.experimental.symbolic_shapesr   r   r   r:   STATICdimmeta_tensor&_dispatch_tls_is_dispatch_key_excludedADInplaceOrView'_dispatch_tls_set_dispatch_key_excludedr,   view_as_realview_as_complexviewno_gradr-   	_autograd_set_creation_meta_get_creation_metar   r   r   __tensor_flatten__getattrr   r   r   dict_sizeSymIntnodesingleton_intcreate_symintnodecreate_symbolSIZEtype__tensor_unflatten__r   preserve_format
_functorchis_functorch_wrapped_tensorNotImplementedrx   r   rC   r7   r8   r{   r   r   set_r    r   	_set_conjr2   _set_negr3   r>   r%   rl   )*rO   r   r   ry   r~   r   r   rM   maybe_suppressr   r_storage_offsetr   r   base_symbolic_contextr   r   old_excluder   midr8   r   r   attrsctxtransformed_tensors_dictorig_shape_envrv   rz   r_smaybe_fake_mgrr   r   mb_fake_moder   r   r   r   r   r   r   r   s*    `````                            @@@@@@@@r   r   zMetaConverter.meta_tensor   s^	    	=>; $-c$2B2B.C-DEF 88;;=AAHH  ''
 	
 
 ,,4 $// &66N	>5c?E#s(OS89	>. 	  A% ##t'C'CC002'(D$"*%%ann&67;;*1oG 	A (?W,WW? MM!.."23*.w"..0 !	AMM!..*:; 10 [[*1oG6V673E7O !A
 (?W,WW?*.w"..0 !	A 10ZZ\
 ::<'<?
 !QWW=N=N0H+5+<+<*=*M.2Vaggkkm-C1-
 15-++! )&':)> , D #((("Q"Q,,<<#K HHDD,,<<eX::0 &tzz177;#(#5#5d#;D&qww

;#(#8#8#>D
 $(99QWW#5D&W, (? "'.2B$3D!$< 3C /0ooAO ww44G%*%6%6%8.:J(7a(@A ;K%8%8 () 6%*]]_*.))DJJ*?C &545OO 1%*%6%6%8.:J(7Q(?A ;K%8
 **==uxx11DDQG HH!HH00@@+
 +1oG;; =QG	!#* 5Q7 D;; *+)=)=)?JE3794-1N(-*1!T*:#1#9 ,6gz+J )0(9(9(C(C-1 %3
 BJ%&B" 8 > ). $.c4#88#8#0C#77#7#-aggaj%,,#GG#G-: 67WWQZM 2'(wwqz'D'D'F'R R'R 6?5P5P$-$;$;()
(<,2N4G4G)*%& *+ 6Q 6"M 2 !%Q < < 8#!A !3 !!"!A % (?W,WW?*+//&!&!2!2!4 %&GG%:O:OG$P	 "5 xx**FFqI-O	 87R	 ))+A(+C$"3"33HHJ'1 ! 0 0 2n D 231B1B1D))#. #//H/E* @J?U?U?W
 (;1'='3-I,-WN+U]]_FF3wG .=^ Q<+?!--!!! )&&9)9 . AF ""1aiik2!!!QXXZ0Q 8T y!QdC  A&##A&&m
 10" 10N 3C2B ;K:J%8%8 &5_ ;K:J%8%8 HH!HH00@@+b "5!4v .=_^^u
 87sT  6Bn&0k1Bn&5kEn&"C l8"k**
k4k*<Al8l
k7l'+l8l.-l8l+#
l-l+5Al8I
n&!m?96n&9B<n&5n
nn'B n&k	
n&k	n&k'"k**k4	/l87l<ll		l8l	l8l(#l++l5	0l88Am<<n&?n		n&nnn#	n&&n0c                      |        S r+   r"   r   s    r   rw   zMetaConverter.<lambda>~  r}   r&   )ry   r~   r   c          	         t        |t        j                        st        |      r|j                  j
                  dk7  rt        |j                  |j                  t        j                  t        j                  t        j                  fv |j                  |j                         xr& |j                  d uxr |j                  j                  t        j                   |      |j                  j
                  dv g      rt        j                   |      r|j                  j
                  dk7  rv|j                         rt#        d      t%               }|(|j'                         t(        j*                  k(  sJ d       |t        j,                  |       t        j.                  |      }t        j0                  j2                  j5                         5  | j7                  |||||      }d d d        t        j8                        }	t        j:                  ||	       |	S t        j<                  j?                         }
tA        ||
      }t        jB                  jD                  jG                         }|5  | j7                  |||||      }d d d        tI        tK                     S | xjL                  dz  c_&        tN        S | xjP                  dz  c_(        | j7                  |||||      }t        |      t        jR                  jT                  u rd|_+        |S t        jX                  j[                  |      r| xjL                  dz  c_&        tN        S |S # 1 sw Y   nxY w# 1 sw Y   xY w)NxlalazyzVCannot safely fakify a view because this process drops the view information right now.z@Expect st to be either None or have Functionalize transform key.)r   ry   r~   r   r   T).r   rr   Tensorr   rq   r   anyis_sparse_csrr   
sparse_csc
sparse_bsr
sparse_bscis_quantizedr9   r:   r0   _is_functional_tensorr   r   keyr   Functionalize_sync_from_functional_tensor	_dispatchpythonsuspend_functionalizationr   _to_functional_tensor_mirror_autograd_meta_tor   $_functionalization_reapply_views_tlsr   r   pyfunctorch!temporarily_pop_interpreter_stackr	   r
   rK   r   rJ   nn	Parameter	_is_param	overridesis_tensor_like)rO   r   r   ry   r~   r   stunwrap_tfake_toutreapply_views
pop_st_ctxr   s                r   __call__zMetaConverter.__call__y  s    a&*G*Jxx}}%#OOHH!1!153C3CUEUEU VVNNJJLNQWWD%8NQWW=N=N//2HHMMf-
+& ..q1ahhmmv6Mzz|*t  01B
bffh-2M2M&MZYZMzA#(#@#@#C"__33MMO%)%5%5 (*3)1'-1A &6 &F P $99&A66vsC"
 ).(U(U(W#<Q#N!,,88ZZ\ # (%)%5%5 (*3)1'-1A &6 &F (  7v}OO		Q	%%A$$'%!%5 %  7ehh000 #'AK__++A.IINI!! Ha PO$ (Zs   M2M"M"M+r+   )__name__
__module____qualname__rP   rR   r\   r_   rl   r{   r   r   r   r  r"   r&   r   r@   r@   Y   ss    	/
(8 -H
&* #'8<B'
  B' ##45B'N ^
 ^r&   r@   )$r   r   rD   typingr   r   r   r   r   rr   torch._C._functorchr   r	   r
   r   r   torch._guardsr    torch.multiprocessing.reductionsr   torch.utils._python_dispatchr   r   torch.utils.weakr   r   r   DimListr   r    r%   r>   r@   torch._prims_common_prims_commonr   r"   r&   r   <module>r,     sn       G G   ! ; ' F
! <A P~	 ~	B $r&   