
    [Th4j                       % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKJr  SSKJrJrJrJr  SSKJr  SSKrSSKrSSKrSSKJr  SSKJrJrJrJr  SSK J!r!  SS	K"J#r#  SS
K$J%r%J&r&  \(       a  SSK'r'SSK(J)r)  SSK*J+r+J,r,   " S S\-5      r.\R^                  " \05      r1Sr2\Rf                  " SS9 " S S5      5       r4\Rf                   " S S5      5       r5Sq6S\7S'   Sq8S\7S'   \Rf                  " SS9 " S S5      5       r9\" S5      r: " S S\Rv                  5      r<\<Rz                  r> " S S\Rv                  5      r?\?Rz                  r@\Rf                   " S  S!5      5       rAS"S#.         S1S$ jjrBS"S#.         S1S% jjrCS2S& jrDS3S' jrES4S( jrFS5S) jrGS6S* jrHS7S+ jrIS8S, jrJS9S- jrKS:S. jrLS:S/ jrMS8S0 jrNg);a  
Profile Guided Optimization (PGO) implementation for Dynamo.

This module provides functionality for caching and managing code state profiles
that guide optimization decisions in Dynamo. It implements both local and remote
caching mechanisms for storing profile information across runs, handles profile
merging across distributed ranks, and manages the lifecycle of profile data
during compilation. The profiles track dynamic vs static properties of tensors
and help Dynamo make better specialization decisions.
    )annotationsN)defaultdict)OptionalTYPE_CHECKINGTypeVarUnion)Self)CompileEventLoggerdynamo_timedset_feature_use	warn_once)	is_fbcode)trace_structured_artifact)CacheArtifactManagerCacheArtifactType)InstructionTranslator)
JsonDataTyRemoteCachec                      \ rS rSrSrg)ReservedWorkflowIdUserError0    N)__name__
__module____qualname____firstlineno____static_attributes__r       I/var/www/auris/envauris/lib/python3.13/site-packages/torch/_dynamo/pgo.pyr   r   0   s    r   r   
   T)frozenc                  H    \ rS rSr% S\S'   S\S'   S\S'   \S
S j5       rSrg	)CodeIdk   strfilenameintfirstlinenonamec                X    [        U R                  U R                  U R                  5      $ N)r#   co_filenameco_firstlinenoco_name)codes    r   makeCodeId.makeq   s!    d&&(;(;T\\JJr   r   N)r/   ztypes.CodeTypereturnr#   )r   r   r   r   __annotations__staticmethodr0   r   r   r   r   r#   r#   k   s&    M
IK Kr   r#   c                  B    \ rS rSr% \R
                  " S S9rS\S'   Srg)	CodeStatev   c                      [        [        5      $ r+   )r   FrameStateSizeEntryr   r   r   <lambda>CodeState.<lambda>y   s
    ,? @r   )default_factoryz%defaultdict[str, FrameStateSizeEntry]automatic_dynamicr   N)	r   r   r   r   dataclassesfieldr=   r3   r   r   r   r   r6   r6   v   s    ?J?P?P@@< r   r6   z(Optional[defaultdict[CodeId, CodeState]]_INIT_CODE_STATE_CODE_STATEc                  $    \ rS rSr% SrS\S'   Srg)InferStride   a(  
Denotes the quantity stride[dim] * size[dim], which is what the stride would
be for the next physical dimension that results in a contiguous layout.

For example, given size = [2, 3], stride = [3, 1], we can replace this with
stride = [InferStride(1), 1], because InferStride(1) = stride[1] * size[1] = 1 * 3 = 3

Indirecting the representation in this way is important for the join operation
on strides as if we join [2, 3][3, 1] and [2, 4][4, 1],
we don't want [2, None][None, 1] which would get eventually symbolized into
[2, s0][s1, 1] (notice that the relationship between s0 and s1 is broken).
If we instead rewrite the expressions as InferStride so we have [2, 3][InferStride(1), 1]
and [2, 4][InferStride(1), 1] we now join to [2, None][InferStride(1), 1] will
result in [2, s0][s0, 1], as desired.
r'   dimr   N)r   r   r   r   __doc__r3   r   r   r   r   rC   rC      s      
Hr   rC   _Tc                      \ rS rSrSrSrSrg)	AutoUnset   z
The identity element of our semilattice, a generic "don't know" element that
is always subsumed when we get more information.
r   r   Nr   r   r   r   rF   tokenr   r   r   r   rI   rI          
 Er   rI   c                      \ rS rSrSrSrSrg)AutoDynamic   zv
The top element of our (bounded) semilattice, whenever you merge this with
any other element you always get it again
r   r   NrK   r   r   r   rO   rO      rM   r   rO   c                  V   \ rS rSr% \R
                  " \S9rS\S'   \R
                  " \S9r	S\S'   \R
                  " \S9r
S\S'   SS	 jrSS
 jrSS jrSS jr\SS j5       r\SS j5       r\      SS j5       r\SS j5       r\SS j5       r\      SS j5       rSS jrSrg) r9      )defaultz"Union[int, AutoDynamic, AutoUnset]scalarzBUnion[AutoDynamic, AutoUnset, tuple[Union[int, AutoDynamic], ...]]sizezOUnion[AutoDynamic, AutoUnset, tuple[Union[int, AutoDynamic, InferStride], ...]]stridec                  ^ SS jmS	U4S jjnU R                   [        L a6  U R                  [        L a#  U R                  [        L a  gSU R                   3$ U R                  [        L af  [	        U R                   [
        5      (       aG  [	        U R                  [
        5      (       a(  SU" U R                   5       SU" U R                  5       3$ g)
Nc                    U [         L a  gU [        L a  g[        U [        5      (       a  SU R                   S3$ [        U 5      $ )N?z
auto unsetzS())auto_dynamic
auto_unset
isinstancerC   rE   r%   )ss    r   render_single1FrameStateSizeEntry.render.<locals>.render_single   s?    L j#A{++AEE7!}$1vr   c                F   > SSR                  U4S jU  5       5      -   S-   $ )N[z, c              3  4   >#    U  H  nT" U5      v   M     g 7fr+   r   ).0r^   r_   s     r   	<genexpr>CFrameStateSizeEntry.render.<locals>.render_tuple.<locals>.<genexpr>   s     "@R=#3#3Rs   ])join)ssr_   s    r   render_tuple0FrameStateSizeEntry.render.<locals>.render_tuple   s"    "@R"@@@3FFr   zfully dynamic scalar or tensorzscalar ztensor size=z stride=zunusual {repr(self)})r^   z/Union[int, AutoDynamic, AutoUnset, InferStride]r2   r%   )ri   z0tuple[Union[int, AutoDynamic, InferStride], ...]r2   r%   )rU   r[   rV   rT   r]   tuple)selfrj   r_   s     @r   renderFrameStateSizeEntry.render   s    			G 99$)D{{l*7 ..[[L($))U++
4;;0N0N%l499&=%>h|TXT_T_G`Fabb &r   c                   [        U R                  [        R                  5      (       a   U R                  5       e[        U R                  [
        5      (       a9  U R                   H)  n[        U[        R                  5      (       d  M$   U5       e   [        U R                  [
        5      (       a:  U R                   H)  n[        U[        R                  5      (       d  M$   U5       e   g g r+   )r]   rT   torchSymIntrU   rl   rV   )rm   r^   s1s      r   __post_init__!FrameStateSizeEntry.__post_init__   s    dkk5<<88E$++E8dii''YY%a66996 dkk5))kk%b%,,77;;7 " *r   c                |    U R                   [        L a  gU R                   [        L a  gU R                   U   [        L $ )NTF)rU   r[   r\   rm   rE   s     r   is_size_dynamic#FrameStateSizeEntry.is_size_dynamic   s3    99$99
"yy~--r   c                    [        U R                  [        5      (       a!  [        S U R                   5       5      (       d  gU R                  [
        L a  gU R                  [        L a  gU R                  U   [
        L $ )Nc              3  D   #    U  H  n[        U5      [        L v   M     g 7fr+   )typer'   )rd   r^   s     r   re   8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>   s     0SAaCs    FT)r]   rU   rl   allrV   r[   r\   rw   s     r   is_stride_dynamic%FrameStateSizeEntry.is_stride_dynamic   s^    " tyy%((S0S0S-S-S;;,&;;*${{3<//r   c                &    [        S U  5       5      $ )Nc              3  p   #    U  H,  n[        U[        R                  5      (       a  [        OUv   M.     g 7fr+   )r]   rq   rr   r[   )rd   xs     r   re   4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>  s'     TQSAZ5<<%@%@\aGQSs   46)rl   )xss    r   _munge_symint!FrameStateSizeEntry._munge_symint  s    TQSTTTr   c                (    [        U[        [        S9$ NrT   rU   rV   )r9   r[   )clsr   s     r   make_scalarFrameStateSizeEntry.make_scalar  s    "!,|TTr   c                \    [        [        U R                  U5      U R                  U5      S9$ r   )r9   r[   r   )r   rU   rV   s      r   make_tensorFrameStateSizeEntry.make_tensor  s0     #""4($$V,
 	
r   c                F    [        [        U R                  U5      [        S9$ r   )r9   r\   r   )r   rU   s     r   	make_sizeFrameStateSizeEntry.make_size  s#    """4(
 	
r   c                l    U [         L a  U$ U[         L a  U $ U [        L d  U[        L d  X:w  a  [        $ U $ r+   )r\   r[   )r   ys     r   _merge_atomFrameStateSizeEntry._merge_atom  s8    
?H
?H\ 1QVr   c                   ^  U[         L a  U$ U[         L a  U$ U[        L d	  U[        L a  [        $ [        U5      [        U5      :w  a  [        $ [        U 4S j[	        X5       5       5      $ )Nc              3  J   >#    U  H  u  pTR                  X5      v   M     g 7fr+   )r   )rd   r   r   r   s      r   re   6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>6  s     C{tqS__Q**{s    #)r\   r[   lenrl   zip)r   r   yss   `  r   _merge_atom_tup#FrameStateSizeEntry._merge_atom_tup(  s_     II|!3r7c"gCs2{CCCr   c                   U R                  U R                  UR                  5      U l        U R                  U R                  UR                  5      U l        U R                  U R                  UR                  5      U l        U $ r+   )r   rT   r   rU   rV   )rm   others     r   __ior__FrameStateSizeEntry.__ior__8  s[    &&t{{ELLA((EJJ?	**4;;Er   r   N)r2   r%   r2   None)rE   r'   r2   bool)r   tuple[int, ...]r2   z#tuple[Union[AutoDynamic, int], ...])r   r'   r2   r9   )rU   r   rV   r   r2   r9   )rU   r   r2   r9   )r   rG   r   rG   r2   zUnion[AutoDynamic, _T])r   -Union[AutoDynamic, AutoUnset, tuple[_T, ...]]r   r   r2   zAUnion[AutoDynamic, AutoUnset, tuple[Union[AutoDynamic, _T], ...]])r   r	   r2   r	   )r   r   r   r   r>   r?   r\   rT   r3   rU   rV   rn   rt   rx   r   r4   r   classmethodr   r   r   r   r   r   r   r   r   r   r9   r9      s#   1<1B1B:1VF.V 	*- 	
L 
 	*-   .&:<.04 U U U U 
"
,;
	
 
 
 
   D9D :D 
K	D Dr   r9   Fis_unspecialized_nn_modulec          
     >  ^^^
 [         R                  U R                  5      n[        5       U   nTUR                  ;   nUR                  T   n[
        R
                  " U5      m
UT-  nU(       a  T
R                  UR                  :w  a  [        R                  STTR                  T
R                  5        [        R                  " STSS[        T
R                  5      [        TR                  5      S.5        U(       a  [        R                  ST5         S         SUUU
4S jjjnU(       a  T
R                  UR                  :w  a  [        T
R                  [        5      (       a  [        TR                  [        5      (       a  [!        T
R                  5      [!        TR                  5      :w  a  U" SS	S
5        Oa[#        [!        TR                  5      5       H4  n	T
R                  U	   TR                  U	   :w  d  M%  U" SSU	 S3SU	5        M6     O
U" SSS5        U(       a  T
R$                  UR$                  :w  a  [        T
R$                  [        5      (       a  [        TR$                  [        5      (       a  [!        T
R$                  5      [!        TR$                  5      :w  a  U" SS	S
5        U$ [#        [!        TR$                  5      5       H4  n	T
R$                  U	   TR$                  U	   :w  d  M%  U" SSU	 S3SU	5        M6      U$ U" SSS5        U$ )Nz%automatic dynamic int %s val %s != %sr=   rT   zscalar changer)   dim_changedreasoncachednewz%s is converted to a symbolic integer. It is an attribute of a user defined nn module class. If you wish to keep it static, you can mark the nn module class as `torch._dynamo.mark_static`.c           
       > Uc  [        TU 5      O[        TU 5      U   nUc  [        TU 5      O[        TU 5      U   n[        R                  SU TUUU5        [        R                  " STUc  SOUU[        U5      [        U5      S.5        g )Nz#automatic dynamic %s %s %s %s != %sr=   r~   r   )getattrlogdebugr
   instantr%   )	tup_nameshort_reasonlong_reasoni	entry_tupold_entry_tupentryr)   	old_entrys	         r   log_tup)update_automatic_dynamic.<locals>.log_tuph  s     )*	GE8$wuh7OPQ7R 	
 y Ix(H-a0 	
 			1	
 	""()	uq%m,9~		
r   rU   rE   zdimensionality changezsize(rZ   zsize changer   rV   zstride(zstride changer+   )
r   r%   r   r%   r   r%   r   zOptional[int]r2   r   )r#   r0   f_codeget_code_stater=   copyrT   r   r   r
   r   r%   inforU   r]   rl   r   rangerV   )txr)   r   r   code_idframe_state	is_update	mut_entryr   r   r   s    ``       @r   update_automatic_dynamicr   ?  s    kk"))$G "7+K555I--d3I		)$II Y%%)9)99		3LL		
 	""')i../5<<(		
 &HHK 	 PT

%(
7:
?L
	
 
> Y^^y~~5inne,,EJJ1N1N9>>"c%**o5'>?s5::/A ~~a(EJJqM9%s!mQG 0 FGW-Y%%)9)99i&&..:ellE3R3R9##$ELL(99%)@A  s5<<01A ''*ell1o=GA3a./1M 2  Hgw/r   c                  U R                   =nc  [        U UUUS9$ UR                  c  X$R                  R                  U'   U$ S nUR                   H-  nXR                  ;   d  M  [        U UUR                  U   US9nM/     Uc   eU$ )Nr   )distributed_stater   
all_stateslocal_stater=   )r   r)   r   r   stres	sub_states          r   process_automatic_dynamicr     s     """+''A	
 	
 
	 27((. I222.//5/I	 ' 
r   c                 V   [         R                  R                  R                  (       a  [	        S5        g S n [
        R                  " 5       (       a/  [
        R                  " 5       (       a  [
        R                  " 5       n [         R                  R                  R                  n[         R                  R                  R                  =nb+  UR                  S5      (       a  [        S5      eU SU  SU 3$ [         R                  R                  5       =nb  Uu  pESU SU SU  SU 3$ g )NzHdynamo_pgo force disabled by torch._inductor.config.force_disable_cacheszmast:ztorch.compiler.config.job_id with prefix 'mast:' is reserved for automatically generated job id associated with a specific MAST job name and version.:)rq   	_inductorconfigforce_disable_cachesr   distis_availableis_initializedget_rankcompilercache_key_tagjob_id
startswithr   _utils_internalget_mast_job_name_version)ranktagrname_versionmast_job_namemast_job_versions         r   get_cache_keyr     s   22V	
  Dt2244}}
..


-
-C ^^"")))6<<  -$ 
 AdV1SE""--GGIIV*6'}oQ'7&8$qFFr   c                   [         R                  R                  R                  (       d  [        R                  S5        g SSKJn  [        R                  " SSSU  S35      n[        R                  R                  U" 5       SU5      $ )	Nz'automatic_dynamic_local_pgo not enabledr   )	cache_dirz[<>:"/\\|?*]_code_state_z.pkldynamo)rq   _dynamor   automatic_dynamic_local_pgor   r   %torch._inductor.runtime.runtime_utilsr   resubospathrh   )	cache_keyr   code_state_keys      r   code_state_pathr     s\    ==;;		;<?VVOSK	{$2OPN77<<	X~>>r   c                    [         R                  R                  R                  (       a  g[         R                  R                  R
                  =n b  U $ [        5       (       d  g[         R                  R                  5       (       a  g SSK	J
n  U[         R                  R                  S5      :  $ ! [         a     gf = f)NFr   )REMOTE_CACHE_VERSIONz'pytorch/remote_cache:dynamo_pgo_version)rq   r   r   r   r   automatic_dynamic_remote_pgor   r   is_fb_unit_testtorch._inductor.fb.remote_cacher   ModuleNotFoundErrorjustknobs_getval_int)r   r   s     r   "should_use_remote_dynamo_pgo_cacher     s    22]]!!>>>K;;,,..H  5#8#8#M#M1$    s   	B1 1
B>=B>c                 T    SSK Jn   [        5       (       d  g U " S[        5       SS5      $ )Nr   create_cachez
dynamo-pgoFbRemoteDynamoPGOCacheRemoteDynamoPGOCache)torch._inductor.remote_cacher  r   r   r  s    r   get_remote_cacher    s,    9-// 	 r   c                N    SR                  S U R                  5        5       5      $ )N
c              3     #    U  Ha  u  pUR                    S UR                   S UR                   S3SR                  S UR                  R                  5        5       5      -   v   Mc     g7f)r   z:
r	  c              3  R   #    U  H  u  pS U SUR                  5        3v   M     g7f)z  z: N)rn   )rd   srcfss      r   re   .render_code_state.<locals>.<genexpr>.<genexpr>$  s)      
5P'#bR		}%5Ps   %'N)r&   r(   r)   rh   r=   items)rd   kvs      r   re   $render_code_state.<locals>.<genexpr>"  si      
 DA	 ::,aaxs3
)) 
565H5H5N5N5P
 
	
 s   A)A+)rh   r  )css    r   render_code_stater  !  s(    99 
 HHJ  r   c            	     (  ^	 [         b  [         $ [        [        5      q [        5       n U c  [         $ SU	4S jjn[	        U 5      m	T	b  [
        R                  R                  T	5      (       a  [        S=nSS9   [        R                  " X S9  [        T	S5       n UR                  5       n[        R                  " U5      q [        R                  " X#R                  5       S9  [         R"                  " [$        R&                  X5        U" S5      sS S S 5        sS S S 5        $ [/        5       nUGb	  [        S=nSS9   [        R                  " X S9   UR1                  U 5      nUb   [3        U[4        5      (       d   eUS   n[3        U[6        5      (       d   e[8        R:                  " U5      n[        R                  " U[=        U5      S9  [        R                  " U5      q [         R"                  " [$        R&                  X5        U" S5      sS S S 5        $ [*        R?                  SU 5         S S S 5        [*        R?                  S5        [         c   e[         $ ! [(         a    [*        R-                  S	T	SS
9   Of = f S S S 5        O! , (       d  f       O= fS S S 5        GM  ! , (       d  f       GN= f! [(         a    [*        R-                  SU SS
9   Nf = f! [(         a    [*        R-                  SU SS
9   Nf = f! , (       d  f       N= f)Nc                   > [        [        [        5      (       d   e[        R	                  STU [        [        5      5        [        SU  S3SS 5        [        SS5        [        R                  " [        5      q
[        $ )Nz$get_code_state %s hit %s, %d entriesget__code_statestringc                      [        [        5      $ r+   r  rA   r   r   r   r:   -get_code_state.<locals>.hit.<locals>.<lambda>>  
    %k2r   pgoT)r]   rA   r   r   r   r   r   r   r   deepcopyr@   )tyr   s    r   hitget_code_state.<locals>.hit7  si    +{33337r3{CST!2$k"2	

 	t$==5r   zpgo.get_local_code_stateTlog_pt2_compile_eventr   rbcache_size_byteslocalz&get_code_state failed while reading %s)exc_infozpgo.get_remote_code_statedataremotez1get_code_state failed parsing remote result on %sz get_code_state remote miss on %sz'get_code_state failed remote read on %szget_code_state using default)r   r%   r2   defaultdict[CodeId, CodeState]) rA   r   r6   r   r   r   r   existsr   r
   pt2_compileopenreadpickleloadstellr   record_artifactr   PGO	Exceptionr   warningr  getr]   dictr%   base64	b64decoder   r   )
r   r!  r)   fcontentremote_cache
cache_datar+  payloadr   s
            @r   r   r   +  s    i(KI 9%DBGGNN400..Dd
 **4E dD!Q(ffhG"(,,w"7K&224&&(S )88)--y w< "!
 
, $%L//Dt
 **4EL)--i8
 )-)*d;;;;)&1)$4444"("2"24"8*66 3w< '-ll7&; -<<-119  #8}A
 
D HH?KE
H HH+,"""i ! KK@$QU    "!!
 
 
 
\ % O%%) $   =ySW  
 
s   7!J'JAI",J	J';LK"L&A=J9#,LLI>;J=I>>J	J'
J	J''
J69KLKLL =L?L  L
Lc                     [         c  [        R                  S5        g [         [        :X  a  [        R                  S5        g [	        5       n U c  [        R                  S5        g [        U 5        [        U 5        g )Nz1put_code_state: never initialized, will not writez#put_code_state: no change, skippingz&put_code_state: no cache key, skipping)rA   r   r   r@   r   put_local_code_stateput_remote_code_stater%  s    r   put_code_staterE    s^    DE&&67I9:#)$r   c                   [        U 5      nUc  g US-   nUS-   nSSKJn  [        R                  " [        R
                  R                  U5      SS9  U" U[        S9   [        US5       nUR                  U5        UR                  5       nS S S 5        [        R                  " X25        S S S 5        UW4$ ! , (       d  f       N0= f! , (       d  f       UW4$ = f)	Nz.tmpz.lockr   )FileLockT)exist_ok)timeoutwb)r   torch.utils._filelockrG  r   makedirsr   dirnameLOCK_TIMEOUTr0  writer4  replace)r   pickled_coder   tmp_path	lock_pathrG  r=  rU   s           r   write_local_implrT    s    9%D|
 f}HwI /KK%5	)\	2(D!QGGL!668D " 	

8"	 
3
 :	 "! 
3	2
 :s$   C*"B6C6
C	 C
Cc                   [        S=nSS9   [        R                  " XS9  [        c   e[        R
                  " [        5      n[        R                  " [        R                  X5        [        X5      nUc  [        R                  S5         S S S 5        g Uu  pE[        R                  " XS9  [        R                  SU[        [        5      5        [        SS	S
 5        S S S 5        g ! , (       d  f       g = f)Nzpgo.put_local_code_stateTr#  r%  z$put_code_state: local cache disabledr'  z*put_code_state: wrote local %s, %d entriesrC  r  c                      [        [        5      $ r+   r  r   r   r   r:   &put_local_code_state.<locals>.<lambda>  r  r   )r   r
   r/  rA   r2  dumpsr   r5  r   r6  rT  r   r   r   r   )r   r)   rQ  metar   rU   s         r   rC  rC    s    	88dPT	U&&tA&&&||K0,,!!9	
  	8<HH;< 
V	U 
&&tC=tSEUV!"2	
% 
V	U	Us   BC*A
C**
C8c                &   [        S=nSS9   [        R                  " XS9  [        c   e[	        5       nUc  [
        R                  S5         S S S 5        g [        R                  " [        5      n[        R                  " U[        U5      S9  S[        R                  " U5      R                  S5      0nUR                  X5        [
        R                  S	U [        [        5      5        [        S
SS 5        S S S 5        g ! , (       d  f       g = f)Nzpgo.put_remote_code_stateTr#  r%  z%put_code_state: remote cache disabledr'  r+  asciiz+put_code_state: wrote remote %s, %d entriesrD  r  c                      [        [        5      $ r+   r  r   r   r   r:   'put_remote_code_state.<locals>.<lambda>  r  r   )r   r
   r/  rA   r  r   r   r2  rX  r   r;  	b64encodedecodeputr   )r   r)   r?  r>  r@  s        r   rD  rD    s    	99dQU	V&&tA&&&')HH<= 
W	V ,,{+&&tc'lKF$$W-44W="

 	/99c+FV	
 	"#2	
) 
W	V	Vs   ADB"D
Dc                     S q S qg r+   )rA   r@   r   r   r   reset_code_staterb    s    Kr   )
r   r   r)   r%   r   r9   r   r   r2   r9   )r2   Optional[str])r   r%   r2   rc  )r2   r   )r2   z!Optional[RemoteCache[JsonDataTy]])r  r-  r2   r%   )r2   r-  r   )r   r%   rQ  bytesr2   zOptional[tuple[str, int]])r   r%   r2   r   )OrF   
__future__r   r;  r   r>   enumloggingr   r2  r   collectionsr   typingr   r   r   r   typing_extensionsr	   torch._dynamo.configrq   torch._utils_internaltorch.compiler.configtorch.distributeddistributedr   torch._dynamo.utilsr
   r   r   r   torch._environmentr   torch._logging._internalr   torch.compiler._cacher   r   typestorch._dynamo.symbolic_convertr   r  r   r   
ValueErrorr   	getLoggerr   r   rN  	dataclassr#   r6   r@   r3   rA   rC   rG   EnumrI   rL   r\   rO   r[   r9   r   r   r   r   r   r  r  r   rE  rT  rC  rD  rb  r   r   r   <module>rz     s"  	 #      	  	 # : : "       ) > I DD	* 	 !j d#K K $K    >B : A8<5 < d#  $( T]		  __
$))     J J Jd (-^^
^ ^
 !%^ ^L (-++
+ +
 !%+ +\F?.[|%$2
4
:r   