Ë
    Q/æj5  ã            	       óP  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ eee ed«      eeeeef	Z deddfd„Z!d	Z"dedee   fd
„Z# G d„ de«      Z$ G d„ de jJ                  «      Z% G d„ d«      Z&de'dede'de'fd„Z(y)é    N)ÚFunctionTypeÚ
ModuleType)ÚAnyÚCallableÚDictÚNoReturnÚOptionalÚSetÚUnion)Ú
deprecated)ÚmockÚmoduleÚreturnc                 óZ  ‡ ‡‡‡—  G d„ dt         «      }dt        t        t        f   dt        t        t        f   dt
        ddfˆˆˆ ˆfd„Ši Ši Št        ‰ «      } ‰‰ ‰ d	«       ‰‰ _        ‰‰ _        t        ‰j                  «       «      ‰ _        |‰ _        |‰ _        d
‰ _        d‰ _        y)zŸ
    Converts a module-level config into a `ConfigModule()`.

    See _config_typing.pyi for instructions on how to get the converted module to typecheck.
    c                   ó    — e Zd Z eddh«      Zy)ú3install_config_module.<locals>.ConfigModuleInstanceÚ	_is_dirtyÚ_hash_digestN)Ú__name__Ú
__module__Ú__qualname__ÚsetÚ_bypass_keys© ó    ú]/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/utils/_config_module.pyÚConfigModuleInstancer      s   „ Ù˜K¨Ð8Ó9‰r   r   ÚsourceÚdestÚprefixr   Nc                 óT  •— t        | j                  j                  «       «      D �]   \  }}|j                  d«      s1t	        |t
        t        f«      st        |d«      r|j                  dk(  rŒJ|› |› �}t	        |t        «      r|‰|<   |‰|<   |‰	u sŒot        ‰	|«       Œ|t	        |t        «      rY|j                  ‰	j                  k(  sJ ‚t        ‰	|› d�«      } ‰
|||› d�«       |‰	u rt        |||«       ŒÕ||j                  |<   Œåt        d|› d|› dt        |«      › d�«      ‚ y	)
z?Walk the module structure and move everything to module._configÚ__r   Útypingú.zUnhandled config ú=z (ú)N)ÚlistÚ__dict__ÚitemsÚ
startswithÚ
isinstancer   r   Úhasattrr   ÚCONFIG_TYPESÚdelattrÚtyper   ÚSubConfigProxyÚsetattrÚAssertionError)r   r   r    ÚkeyÚvalueÚnameÚproxyÚconfigÚdefaultr   Úvisits          €€€€r   r9   z$install_config_module.<locals>.visit   s)  ø€ ô ˜vŸ™×4Ñ4Ó6Ó7ó 	X‰JˆC�à—‘˜tÔ$Ü˜e¤j´,Ð%?Ô@Ü˜E <Ô0°U×5EÑ5EÈÒ5Qàà�X˜c˜UÐ#ˆDÜ˜%¤Ô.Ø$��t‘Ø %�˜‘Ø˜6’>Ü˜F CÕ(Ü˜E¤4Ô(Ø×'Ñ'¨6¯?©?Ò:Ð:Ð:ä& v°$°°q¨zÓ:�Ù�e˜U t f¨A JÔ/Ø˜6‘>Ü˜D # uÕ-à).�D—M‘M #Ò&ä$Ð'8¸¸¸Q¸u¸gÀRÌÈUËÀ}ÐTUÐ%VÓWÐWñ1	Xr   Ú T)ÚConfigModuler   r   r/   r0   ÚstrÚ-get_assignments_with_compile_ignored_commentsÚ_configÚ_defaultr   ÚkeysÚ_allowed_keysÚ_compile_ignored_keysÚ	__class__r   r   )r   r   Úcompile_ignored_keysr7   r8   r9   s   `  @@@r   Úinstall_config_modulerE      s¼   û€ ô:œ|ô :ðXÜ”j¤$Ð&Ñ'ðXä”J¤Ð.Ñ/ðXô ðXð 
÷	Xð Xð@  €FØ €GäHÈÓPÐá	ˆ&�&˜"ÔØ€F„NØ€F„OÜ˜vŸ{™{›}Ó-€FÔØ#7€FÔ Ø+€FÔØ€FÔØ€FÕr   z@compile_ignoredc                 óö  — t        j                  | «      }t        «       }t        j                  t	        j
                  |j                  d«      «      j                  «      }d}d}|D ]ü  }|j                  t        j                  k(  rJd}|j                  j                  «       }t        |v sŒE|dk(  sJ dt        › �«       ‚||j                  d   f}Œj|j                  t        j                  k(  r|rŒŠ|j                  }Œ—|j                  t        j                  k(  sŒµ|j                  dk(  sŒÅt        |d   v r+|d   |j                  d   dz
  k(  r|j!                  |«       d}d}Œþ |dk(  sJ dt        › �«       ‚|S )Núutf-8)r:   éÿÿÿÿr:   zunconsumed r   r%   é   )ÚinspectÚ	getsourcer   ÚtokenizeÚioÚBytesIOÚencodeÚreadliner/   ÚCOMMENTÚstringÚstripÚCOMPILE_IGNORED_MARKERÚstartÚNAMEÚOPÚadd)r   Úsource_codeÚassignmentsÚtokensÚcurrent_commentÚ	prev_nameÚtokenÚmaybe_currents           r   r=   r=   Q   si  € Ü×#Ñ# FÓ+€KÜ“%€Kô ×ÑœrŸz™z¨+×*<Ñ*<¸WÓ*EÓF×OÑOÓP€FØ€OØ€Iàò ˆØ�:‰:œ×)Ñ)Ò)ØˆIØ!ŸL™L×.Ñ.Ó0ˆMÜ%¨Ò6Ø&ð +ò ð :ð !Ô!7Ð 8Ð9ó:ð ð #0°·±¸Q±Ð"?‘Ø�Z‰Zœ8Ÿ=™=Ò(ò Ø!ŸL™L‘	Ø�Z‰Zœ8Ÿ;™;Ó&¨5¯<©<¸3Ó+>ô '¨/¸!Ñ*<Ñ<Ø# AÑ&¨%¯+©+°a©.¸1Ñ*<Ò<à—‘ 	Ô*Ø"(�Ø‰Ið1ð2 ˜hÒ&ÐN¨+Ô6LÐ5MÐ(NÓNÐ&ØÐr   c            	       óÞ  ‡ — e Zd ZU eeef   ed<   eeef   ed<   ee   ed<   ee   ed<   ee   ed<   eed<   e	e
   ed<   d"d
„Zdededd	fˆ fd„Zdedefd„Zdedd	fd„Zde
fd„Zdeeef   fd„Zdefd„Zde
fd„Z ede¬«      deeef   fd„«       Zdeeef   fd„Zdee
eeef   f   dd	fd„Zdeeef   fd„Z	 	 d#de	eeeeef   f      dedeeef   ddfd„Zd eeef   defd!„Zˆ xZS )$r;   r?   r>   rA   r   rB   r   r   r   Nc                 ó(   — t        dt        › d�«      ‚)Nzuse z-.install_config_module(sys.modules[__name__]))ÚNotImplementedErrorr   ©Úselfs    r   Ú__init__zConfigModule.__init__‡   s   € Ü!Ø”8�*ÐIÐJó
ð 	
r   r5   r4   c                 ó´   •— || j                   v rt        ‰| �	  ||«       y || j                  vrt	        | j
                  › d|› d�«      ‚|| j                  |<   y ©Nr$   z does not exist)r   ÚsuperÚ__setattr__rA   ÚAttributeErrorr   r>   )rd   r5   r4   rC   s      €r   ri   zConfigModule.__setattr__Œ   sX   ø€ Ø�4×$Ñ$Ñ$Ü‰GÑ  eÕ,Ø˜×+Ñ+Ñ+Ü  D§M¡M ?°!°D°6¸Ð!IÓJÐJà!&ˆD�L‰L˜Òr   c                 ó|   — 	 | j                   |   S # t        $ r!}t        | j                  › d|› d�«      |‚d }~ww xY wrg   )r>   ÚKeyErrorrj   r   )rd   r5   Úes      r   Ú__getattr__zConfigModule.__getattr__”   sH   € ð	RØ—<‘< Ñ%Ð%øÜò 	Rä  D§M¡M ?°!°D°6¸Ð!IÓJÐPQÐQûð	Rús   ‚ ‘	;š6¶;c                 ó   — | j                   |= y ©N©r>   ©rd   r5   s     r   Ú__delattr__zConfigModule.__delattr__›   s   € ð �L‰L˜Ñr   c                 óª   — t        | j                  «      }|j                  dd«      D ]  }|j                  |«       Œ t	        j
                  |d¬«      S )z Convert config to a pickled blobÚ_save_config_ignorer   é   )Úprotocol)Údictr>   ÚgetÚpopÚpickleÚdumps©rd   r7   r3   s      r   Úsave_configzConfigModule.save_config    sG   € ä�d—l‘lÓ#ˆØ—:‘:Ð3°RÓ8ò 	ˆCØ�J‰J�s�Oð	ä�|‰|˜F¨QÔ/Ð/r   c                 óÌ   ‡— i }t        | j                  «      D ]H  Š‰j                  d«      rŒt        ˆfd„| j                  d   D «       «      rŒ7| j                  ‰   |‰<   ŒJ |S )z!Convert config to portable formatÚ_c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrp   )r*   )Ú.0rm   r3   s     €r   ú	<genexpr>z4ConfigModule.save_config_portable.<locals>.<genexpr>­   s   øè ø€ ò Ø&'�—‘˜q×!ñùs   ƒÚ_cache_config_ignore_prefix)Úsortedr>   r*   Úanyr}   s     @r   Úsave_config_portablez!ConfigModule.save_config_portable§   sl   ø€ à!#ˆÜ˜$Ÿ,™,Ó'ò 	,ˆCØ�~‰~˜cÔ"ØÜó Ø+/¯<©<Ð8UÑ+Vôô ð ØŸ,™, sÑ+ˆF�3ŠKð	,ð ˆr   c                 ót  — g }| j                   }| j                  j                  «       D ]}  \  }}|| j                  j                  dd«      v r.|| j                  |   k7  rt        j                  d|› d|› �«       ŒR|| j                  |   k(  rŒe|j                  |› d|› d|›�«       Œ dj                  |«      S )z•Convert config to Python statements that replicate current config.
        This does NOT include config settings that are at default values.
        ru   r   zSkipping serialization of z value r$   z = ú
)	r   r>   r)   ry   r?   ÚwarningsÚwarnÚappendÚjoin)rd   ÚlinesÚmodÚkÚvs        r   Úcodegen_configzConfigModule.codegen_config´   s¼   € ð ˆØ�m‰mˆØ—L‘L×&Ñ&Ó(ò 	/‰DˆAˆqØ�D—L‘L×$Ñ$Ð%:¸BÓ?Ñ?Ø˜Ÿ™ aÑ(Ò(Ü—M‘MÐ$>¸q¸cÀÈÈÐ"LÔMØØ�D—M‘M !Ñ$Ò$ØØ�L‰L˜C˜5  !  C¨ uÐ-Õ.ð	/ð �y‰y˜ÓÐr   c                 óŒ  — | j                   s| j                  €›| j                  j                  «       D ��ci c]  \  }}|| j                  vr||“Œ }}}t        t        |j                  «       «      «      }t        j                  |j                  d«      «      j                  «       | _        d| _         | j                  S c c}}w )z/Hashes the configs that are not compile_ignoredrG   F)r   r   r>   r)   rB   Úreprr…   ÚhashlibÚmd5rO   Údigest)rd   r�   r‘   Údict_to_hashÚstring_to_hashs        r   Úget_hashzConfigModule.get_hashÄ   s­   € à�>Š>˜T×.Ñ.Ð6ð !ŸL™L×.Ñ.Ó0÷á�A�qØ˜D×6Ñ6Ñ6ð �1‘ðˆLñ ô
 "¤&¨×);Ñ);Ó)=Ó">Ó?ˆNÜ '§¡¨N×,AÑ,AÀ'Ó,JÓ K× RÑ RÓ TˆDÔØ"ˆDŒNØ× Ñ Ð ùós   ¶C z�`config.to_dict()` has been deprecated. It may no longer change the underlying config. use `config.shallow_copy_dict()` or `config.get_config_copy()` instead)Úcategoryc                 ó"   — | j                  «       S rp   )Úshallow_copy_dictrc   s    r   Úto_dictzConfigModule.to_dictÑ   s   € ð ×%Ñ%Ó'Ð'r   c                 ó   — i | j                   ¥S rp   rq   rc   s    r   r�   zConfigModule.shallow_copy_dictÙ   s   € Ø�$—,‘,ÐÐr   Úmaybe_pickled_configc                 óŠ   — t        |t        «      st        j                  |«      }n|}| j                  j                  |«       y)zARestore from a prior call to save_config() or shallow_copy_dict()N)r+   rx   r{   Úloadsr>   Úupdate)rd   r    r7   s      r   Úload_configzConfigModule.load_configÜ   s3   € äÐ.´Ô5Ü—\‘\Ð"6Ó7‰Fà)ˆFØ�‰×Ñ˜FÕ#r   c                 ó@   — t        j                  | j                  «      S rp   )ÚcopyÚdeepcopyr>   rc   s    r   Úget_config_copyzConfigModule.get_config_copyä   s   € Ü�}‰}˜TŸ\™\Ó*Ð*r   Úarg1Úarg2ÚkwargsÚContextDecoratorc                 ó  ‡‡‡‡— |�1|�t        |t        «      sJ ‚||iŠnt        |t        «      sJ ‚|Š|rJ ‚|Š|�J ‚t        ‰t        «      sJ dt        ‰«      › �«       ‚i Š| ŠdŠ G ˆˆˆˆfd„dt        «      } |«       S )a”  
        Decorator and/or context manager to make temporary changes to a config.

        As a decorator:

            @config.patch("name", val)
            @config.patch(name1=val1, name2=val2)
            @config.patch({"name1": val1, "name2", val2})
            def foo(...):
                ...

        As a context manager:

            with config.patch("name", val):
                ...
        zexpected `dict` got Fc                   ó.   •— e Zd Zdˆ ˆˆˆfd„Zˆˆˆfd„Zy)ú'ConfigModule.patch.<locals>.ConfigPatchNc                 ó¼   •— ‰rJ ‚‰j                  «       D ]"  }‰j                  |   ‰|<   |‰j                  vŠŒ$ ‰j                  j                  ‰«       ‰‰_        y rp   )r@   r>   rB   r£   r   )rd   r3   Úchangesr7   ÚdirtyÚpriors     €€€€r   Ú	__enter__z1ConfigModule.patch.<locals>.ConfigPatch.__enter__  s`   ø€ Ù Ð �yà"Ÿ<™<›>ò D�Cà!'§¡°Ñ!4�E˜#‘JØ v×'CÑ'CÐC‘EðDð —‘×%Ñ% gÔ.Ø#(�Õ r   c                 ój   •— ‰j                   j                  ‰«       ‰‰_        ‰j                  «        y rp   )r>   r£   r   Úclear)rd   Úexc_typeÚexc_valÚexc_tbr7   r²   r³   s       €€€r   Ú__exit__z0ConfigModule.patch.<locals>.ConfigPatch.__exit__  s&   ø€ à—‘×%Ñ% eÔ,Ø#(�Ô Ø—‘•r   ©r   N)r   r   r   r´   rº   )r±   r7   r²   r³   s   €€€€r   ÚConfigPatchr¯     s   ø„ ÷)ð )÷r   r¼   )r+   r<   rx   r/   r¬   )	rd   r©   rª   r«   r¼   r±   r7   r²   r³   s	        @@@@r   ÚpatchzConfigModule.patchç   s¤   û€ ð. ÐØÐÜ! $¬Ô,Ð,Ð,à ˜,‘ä! $¬Ô-Ð-Ð-à�ÙÐ�:ð ˆGØ�<Ð�<Ü˜'¤4Ô(ÐPÐ,@ÄÀgÃÀÐ*PÓPÐ(Ø "ˆØˆØˆ÷	ñ 	Ô*ô 	ñ" ‹}Ðr   r±   c                 óF   ‡‡— | j                   Šdt        g df   fˆˆfd„}|S )aV  
        A lower-overhead version of patch() for things on the critical path.

        Usage:

            # do this off the critical path
            change_fn = config.make_closure_patcher(foo=True)

            ...

            revert = change_fn()
            try:
              ...
            finally:
                revert()

        r   Nc                  ól   •‡— ‰D � ci c]  } | ‰|    “Œ
 c} Š‰j                  ‰«       dˆˆfd„}|S c c} w )Nc                  ó(   •— ‰ j                  ‰«       y rp   ©r£   )r7   r³   s   €€r   ÚrevertzBConfigModule._make_closure_patcher.<locals>.change.<locals>.revert<  s   ø€ Ø—‘˜eÕ$r   r»   rÁ   )r�   rÂ   r³   r±   r7   s     @€€r   Úchangez2ConfigModule._make_closure_patcher.<locals>.change8  s8   ù€ Ø+2Ö3 a�Q˜˜q™	‘\Ò3ˆEØ�M‰M˜'Ô"ö%ð ˆMùò 4s   ‡1)r>   r   )rd   r±   rÃ   r7   s    ` @r   Ú_make_closure_patcherz"ConfigModule._make_closure_patcher$  s*   ù€ ð$ —‘ˆð	œ  T Ñ*ö 	ð ˆr   r»   )NN)r   r   r   r   r<   r   Ú__annotations__r
   Úboolr	   Úbytesre   Úobjectri   rn   rs   r~   r‡   r’   rš   r   ÚFutureWarningrž   r�   r   r¤   r¨   r½   rÄ   Ú__classcell__©rC   s   @r   r;   r;   w   s½  ø… ð
 �3˜�8‰nÓð �#�s�(‰^ÓØ�s‘8ÓØ�c‘(ÓØ˜s™8Ó#ØƒOØ˜5‘/Ó!ó
ð
' ð '¨Fð '°tõ 'ðR ð R¨ó Rð ð ¨ó ð
0˜Uó 0ð d¨3°¨8¡nó ð  ó  ð !˜%ó !ñ ð	Ràôð
(˜˜c 3˜h™ò (óð
(ð  4¨¨S¨¡>ó  ð$°°e¸TÀ#ÀsÀ(¹^Ð6KÑ0Lð $ÐQUó $ð+  c¨3 h¡ó +ð
 6:Øñ;à�u˜S $ s¨C x¡.Ð0Ñ1Ñ2ð;ð ð;ð �s˜C�x‘.ð	;ð
 
ó;ðz¨t°C¸°H©~ð À#÷ r   r;   c                   óL   ‡ — e Zd ZdZdd„Zdefd„Zdeegef   defˆ fd„Z	ˆ xZ
S )r¬   z[
    Same as contextlib.ContextDecorator, but with support for
    `unittest.TestCase`
    r   c                 ó   — t        d«      ‚©NÚNYI©rb   rc   s    r   r´   zContextDecorator.__enter__J  ó   € Ü! %Ó(Ð(r   c                 ó   — t        d«      ‚rÎ   rÐ   )rd   r·   r¸   r¹   s       r   rº   zContextDecorator.__exit__M  rÑ   r   Úfuncc                 óü   •‡ — t        |t        «      r\t        |t        j                  «      rB G ˆ fd„d|«      }|j
                  |_        |j                  |_        |j                  |_        |S t        ‰‰ �%  |«      S )Nc                   óF   •‡ — e Zd Zedˆ ˆfd„«       Zedˆ ˆfd„«       Zˆ xZS )ú,ContextDecorator.__call__.<locals>._TestCasec                 ó†   •— ‰j                  «        	 t        ‰| �	  «        y # t        $ r ‰j	                  d d d «       ‚ w xY wrp   )r´   rh   Ú
setUpClassÚ	Exceptionrº   ©ÚclsrC   rd   s    €€r   rØ   z7ContextDecorator.__call__.<locals>._TestCase.setUpClassT  s?   ø€ à—N‘NÔ$ðÜ™Ñ*Õ,øÜ$ò ØŸ™ d¨D°$Ô7Øðús	   “" ¢A c                 óz   •— 	 t         ‰| �  «        ‰j                  d d d «       y # ‰j                  d d d «       w xY wrp   )rh   ÚtearDownClassrº   rÚ   s    €€r   rÝ   z:ContextDecorator.__call__.<locals>._TestCase.tearDownClass]  s4   ø€ ð8Ü™Ñ-Ô/àŸ™ d¨D°$Õ7ø˜Ÿ™ d¨D°$Õ7ús   ƒ% ¥:r»   )r   r   r   ÚclassmethodrØ   rÝ   rÊ   )rC   rd   s   @€r   Ú	_TestCaserÖ   S  s)   ù„ Øõó ðð õ8ó ô8r   rß   )
r+   r/   Ú
issubclassÚunittestÚTestCaser   r   r   rh   Ú__call__)rd   rÓ   rß   rC   s   `  €r   rã   zContextDecorator.__call__P  sf   ù€ Ü�dœDÔ!¤j°´x×7HÑ7HÔ&Iö8˜Dô 8ð" "&§¡ˆIÔØ%)×%6Ñ%6ˆIÔ"Ø#'§?¡?ˆIÔ àÐä‰wÑ Ó%Ð%r   r»   )r   r   r   Ú__doc__r´   r   rº   r   r   rã   rÊ   rË   s   @r   r¬   r¬   D  s<   ø„ ñó
)ð)°Xó )ð&˜X s e¨S jÑ1ð &°c÷ &ñ &r   r¬   c                   ó`   ‡ — e Zd ZdZdedefˆ fd„Zdededdfd	„Zdedefd
„Z	deddfd„Z
ˆ xZS )r0   zn
    Shim to redirect to main config.
    `config.triton.cudagraphs` maps to _config["triton.cudagraphs"]
    r7   r    c                 óF   •— t         ‰| �  d|«       t         ‰| �  d|«       y )Nr>   Ú_prefix)rh   ri   )rd   r7   r    rC   s      €r   re   zSubConfigProxy.__init__s  s!   ø€ ä‰Ñ˜I vÔ.Ü‰Ñ˜I vÕ.r   r5   r4   r   Nc                 óT   — | j                   j                  | j                  |z   |«      S rp   )r>   ri   rç   )rd   r5   r4   s      r   ri   zSubConfigProxy.__setattr__x  s"   € Ø�|‰|×'Ñ'¨¯©°tÑ(;¸UÓCÐCr   c                 óR   — | j                   j                  | j                  |z   «      S rp   )r>   rn   rç   rr   s     r   rn   zSubConfigProxy.__getattr__{  ó    € Ø�|‰|×'Ñ'¨¯©°tÑ(;Ó<Ð<r   c                 óR   — | j                   j                  | j                  |z   «      S rp   )r>   rs   rç   rr   s     r   rs   zSubConfigProxy.__delattr__~  rê   r   )r   r   r   rä   rÈ   r<   re   ri   r   rn   rs   rÊ   rË   s   @r   r0   r0   m  s_   ø„ ñð
/˜vð /¨sõ /ð
D ð D¨Fð D°tó Dð= ð =¨ó =ð= ð =¨÷ =r   r0   Úobjr5   r4   c                 óˆ   — t        | t        «      r| j                  ||«      S t        j                  j	                  | ||«      S )z@
    Workaround `mock.patch.object` issue with ConfigModule
    )r+   r;   r½   r   rÈ   )rì   r5   r4   s      r   Úpatch_objectrî   ‚  s8   € ô �#”|Ô$Ø�y‰y˜˜uÓ%Ð%Ü�:‰:×Ñ˜S $¨Ó.Ð.r   ))Ú
contextlibr¦   r•   rJ   rM   r{   rL   rá   rŠ   Útypesr   r   r#   r   r   r   r   r	   r
   r   Útyping_extensionsr   r   ÚintÚfloatrÆ   r/   r<   r'   r   Útuplerx   r-   rE   rT   r=   r;   r¬   r0   rÈ   rî   r   r   r   ú<module>rõ      sÑ   ðÛ Û Û Û Û 	Û Û Û Û ß *ß F× FÑ FÝ (Ý ð �U˜D¡$ t£*¨c°4¸¸eÀTÐJ€ð6 *ð 6°ó 6ðr ,Ð ð#¸*ð #ÈÈSÉó #ôLJ�:ô JôZ&&�z×2Ñ2ô &&÷R=ñ =ð*/�fð / Cð /°ð /¸6ô /r   