Ë
    ÌÓ^j-™  ã                   óŽ  — 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	Z	d dl
mZ d dlmZ d dlmZ d dlmZmZ d dl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'eee  e!d«      e"e%fZ( ed	eez  e z  e"z  e#z  e$z  e%z  e&z  dz  ¬
«      Z) e*«       Z+ ed¬«       G d„ dee)   «      «       Z,erAe+dddddddfde)e*z  de"dz  de"e#e"   z  dz  de"e#e"   z  dz  de!dz  de"dz  de de"dz  de)fd„Z-nCe+dddddddfde)e*z  de"dz  de"e#e"   z  dz  de"e#e"   z  dz  de!dz  de"dz  de de"dz  de,e)   fd„Z-de"de e"z  dz  fd„Z.deddfd„Z/dZ0dede$e"   fd „Z1e%e%e"d!f   e%e"d!f   e f   Z2e G d"„ d#«      «       Z3 G d$„ d%e«      Z4 G d&„ d'e jj                  «      Z5 G d(„ d)«      Z6d,de"dede dz  fd*„Z7d+„ Z8y)-é    N)ÚCallable)Ú
ContextVar)Ú	dataclass)ÚFunctionTypeÚ
ModuleType)ÚAnyÚGenericÚNoReturnÚOptionalÚTYPE_CHECKINGÚTypeVar)Ú
deprecated)Újustknobs_checkÚT)ÚboundT)Úkw_onlyc                   óô   — e Zd ZU dZeez  ed<   dZedz  ed<   dZ	e
e   dz  ed<   dZe
e   dz  ed<   dZedz  ed<   dZedz  ed<   d	Zeed
<   dZedz  ed<   dd„Zedee
e   z  dz  de
e   dz  fd„«       Zy)Ú_Configa+  Represents a config with richer behaviour than just a default value.
    ::
        i.e.
        foo = Config(justknob="//foo:bar", default=False)
        install_config_module(...)

    This configs must be installed with install_config_module to be used

    Precedence Order:
        alias: If set, the directly use the value of the alias.
        env_name_force: If set, this environment variable has precedence over
            everything after this.
            If multiple env variables are given, the precedence order is from
            left to right.
        user_override: If a user sets a value (i.e. foo.bar=True), that
            has precedence over everything after this.  User overrides are thread-local.
        env_name_default: If set, this environment variable will override everything
            after this.
            If multiple env variables are given, the precedence order is from
            left to right.
        justknob: If this pytorch installation supports justknobs, that will
            override defaults, but will not override the user_override precedence.
        default: This value is the lowest precedence, and will be used if nothing is
            set.

    Environment Variables:
        These are interpreted to be either "0" or "1" to represent true and false.

    Arguments:
        justknob: the name of the feature / JK. In OSS this is unused.
        default: is the value to default this knob to in OSS.
        alias: The alias config to read instead.
        env_name_force: The environment variable, or list of, to read that is a FORCE
            environment variable. I.e. it overrides everything except for alias.
        env_name_default: The environment variable, or list of, to read that changes the
            default behaviour. I.e. user overrides take preference.
    ÚdefaultNÚjustknobÚenv_name_defaultÚenv_name_forceÚ
value_typeÚaliasFr   Údeprecation_messageÚreturnc                 ó0  — t         j                  | j                  «      | _        t         j                  | j                  «      | _        | j                  �B| j
                  t        us$| j                  €| j                  €| j                  �t        d«      ‚y y )Nztif alias is set, none of {default, justknob,                         env_name_default and env_name_force} can be set)	r   Ú string_or_list_of_string_to_listr   r   r   r   Ú_UNSET_SENTINELr   ÚAssertionError©Úselfs    úe/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/utils/_config_module.pyÚ__post_init__z_Config.__post_init__V   s“   € Ü '× HÑ HØ×!Ñ!ó!
ˆÔô &×FÑFØ×Ñó
ˆÔð �:‰:Ð!à—‘¤OÑ3Ø—=‘=Ð,Ø×(Ñ(Ð4Ø×&Ñ&Ð2ä$ðIóð ð 3ð "ó    Úvalc                 ó€   — | €y t        | t        «      r| gS t        | t        «      st        dt	        | «      › �«      ‚| S )Nzval is not a list, got )Ú
isinstanceÚstrÚlistr    Útype)r&   s    r#   r   z(_Config.string_or_list_of_string_to_listj   sC   € ð ˆ;ØÜ�cœ3ÔØ�5ˆLÜ˜#œtÔ$Ü Ð#:¼4À»9¸+Ð!FÓGÐGØˆ
r%   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚobjectÚ__annotations__r   r)   r   r*   r   r   r+   r   r   Úboolr   r$   Ústaticmethodr   © r%   r#   r   r   $   s½   … ñ$ðL �‰ZÓØ€Hˆc�D‰jÓØ)-Ð�d˜3‘i $Ñ&Ó-Ø'+€N�D˜‘I Ñ$Ó+Ø"€J��t‘Ó"Ø€Eˆ3�‰:Óà€J�ÓØ&*Ð˜˜t™Ó*óð( ð	Ø�4˜‘9‰_˜tÑ#ð	à	ˆc‰�TÑ	ò	ó ñ	r%   r   Fr   r   r   r   r   r   r   r   r   c                  ó   — y ©Nr5   ©r   r   r   r   r   r   r   r   s           r#   ÚConfigr9   }   s   € ð r%   c           
      ó(   — t        | |||||||¬«      S )Nr8   )r   r8   s           r#   r9   r9   ‹   s)   € ô ØØØ-Ø)Ø!Øà!Ø 3ô

ð 
	
r%   Únamec                 ó\   — t         j                  j                  | «      }|dk(  ry|dk(  ry|S ©NÚ1TÚ0F©ÚosÚenvironÚget)r;   Úvalues     r#   Ú_read_env_variablerE   £   s-   € Ü�J‰J�N‰N˜4Ó €EØ�‚|ØØ�‚|ØØ€Lr%   Úmodulec                 óÌ  ‡ ‡‡—  G d„ dt         «      }dt        t        z  dt        t        z  dt        ddfˆˆ ˆfd„Ši Št        ‰ «      } ‰‰ ‰ d	«       ‰‰ _        |‰ _        |‰ _        t        ‰ j                  › d
�d¬«      ‰ _        t        ‰ j                  › d�d¬«      ‰ _        t        ‰ j                  › d�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h d£Zy)ú3install_config_module.<locals>.ConfigModuleInstance>   r2   Ú_hash_cache_varÚ_hash_dirty_varÚ_get_dict_cache_varÚ_get_dict_dirty_keys_varN)r-   r.   r/   Ú_bypass_keysr5   r%   r#   ÚConfigModuleInstancerI   ³   s	   „ ò
‰r%   rO   ÚsourceÚdestÚprefixr   Nc                 óþ  •— t        j                  | «      }t        | j                  j	                  «       «      D �]À  \  }}|j                  d«      slt        |t        t        f«      sVt        |d«      r*|j                  dk(  s;|j                  j                  d«      s t        |t        «      rt        |t        «      rŒ…|› |› �}|j                  |d«      }t        |t        «      r,t!        t        ||¬«      |«      ‰	|<   |‰
u sŒÌt#        ‰
|«       ŒÙt        |t        «      r8|�|j$                  €||_        t!        ||«      ‰	|<   |‰
u s�Œt#        ‰
|«       �Œ!t        |t        «      rt|j                  ‰
j&                  k7  rt)        d|› d‰
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.   Útypingzcollections.abcN)r   r   zsubconfig class z must be defined in module ú.zUnhandled config ú=z (ú))ÚinspectÚget_annotationsr*   Ú__dict__ÚitemsÚ
startswithr(   r   r   Úhasattrr.   r+   Ú
issubclassr   rC   ÚCONFIG_TYPESÚ_ConfigEntryÚdelattrr   r-   r    ÚSubConfigProxyÚsetattr)rP   rQ   rR   Ú
type_hintsÚkeyrD   r;   Úannotated_typeÚproxyÚconfigrF   Úvisits            €€€r#   rj   z$install_config_module.<locals>.visit½   sâ  ø€ ô ×,Ñ,¨VÓ4ˆ
Ü˜vŸ™×4Ñ4Ó6Ó7ó -	X‰JˆC�à—‘˜tÔ$Ü˜e¤j´,Ð%?Ô@ä˜E <Ô0à×(Ñ(¨HÒ4Ø ×+Ñ+×6Ñ6Ð7HÔIô ˜u¤dÔ+´
¸5Ä'Ô0Jàà�X˜c˜UÐ#ˆDØ'Ÿ^™^¨C°Ó6ˆNÜ˜%¤Ô.Ü+Ü E°nÔEÀtó ��t‘ð ˜6’>Ü˜F CÕ(Ü˜E¤7Ô+Ø!Ð-°%×2BÑ2BÐ2JØ'5�EÔ$ä+¨E°4Ó8��t‘à˜6“>Ü˜F CÖ(Ü˜E¤4Ô(Ø×#Ñ# v§¡Ò6Ü(Ø*¨5¨'Ð1LÈVÏ_É_ÐL]Ð^óð ô ' 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ñ[-	Xr%   Ú z._hash_dirtyT©r   z._hash_cachez._get_dict_dirty_keysz._get_dict_cache)ÚConfigModuler   r+   rc   r)   Ú-get_assignments_with_compile_ignored_commentsÚ_configÚ_compile_ignored_keysÚ	__class__r   r-   rK   rJ   rM   rL   )rF   rO   Úcompile_ignored_keysri   rj   s   `  @@r#   Úinstall_config_modulers   ¬   sù   ú€ ô
œ|ô 
ð4XÜœTÑ!ð4Xäœ>Ñ)ð4Xô ð4Xð 
÷	4Xðl ')€FäHÈÓPÐá	ˆ&�&˜"ÔØ€F„NØ#7€FÔ Ø+€FÔÜ'¨6¯?©?Ð*;¸<Ð(HÐRVÔW€FÔÜ'Ø�?‰?Ð
˜<Ð(°$ô€FÔô '1Ø�?‰?Ð
Ð0Ð1¸4ô'€FÔ#ô ",Ø�?‰?Ð
Ð+Ð,°dô"€FÕr%   z@compile_ignoredc                 ó
  — t        j                  | «      }t        «       }t        j                  t	        j
                  |j                  d«      «      j                  «      }d}d}|D �]  }|j                  t        j                  k(  rNd}|j                  j                  «       }t        |v sŒF|dk7  rt        dt        › �«      ‚||j                  d   f}Œo|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k7  rt        dt        › �«      ‚|S )Núutf-8)rk   éÿÿÿÿrk   zunconsumed r   rW   é   )rY   Ú	getsourceÚsetÚtokenizeÚioÚBytesIOÚencodeÚreadliner+   ÚCOMMENTÚstringÚstripÚCOMPILE_IGNORED_MARKERr    ÚstartÚNAMEÚOPÚadd)rF   Úsource_codeÚassignmentsÚtokensÚcurrent_commentÚ	prev_nameÚtokenÚmaybe_currents           r#   rn   rn     sY  € Ü×#Ñ# FÓ+€KÜ“%€Kô ×ÑœrŸz™z¨+×*<Ñ*<¸WÓ*EÓF×OÑOÓP€FØ€OØ€Iàó ˆØ�:‰:œ×)Ñ)Ò)ØˆIØ!ŸL™L×.Ñ.Ó0ˆMÜ%¨Ò6Ø" hÒ.Ü(¨;Ô7MÐ6NÐ)OÓPÐPØ"/°·±¸Q±Ð"?‘Ø�Z‰Zœ8Ÿ=™=Ò(ò Ø!ŸL™L‘	Ø�Z‰Zœ8Ÿ;™;Ó&¨5¯<©<¸3Ó+>ô '¨/¸!Ñ*<Ñ<Ø# AÑ&¨%¯+©+°a©.¸1Ñ*<Ò<à—‘ 	Ô*Ø"(�ØŠIð-ð. ˜(Ò"Ü˜{Ô+AÐ*BÐCÓDÐDØÐr%   .c                   óÈ   — e Zd ZU eed<   eed<   ee   ed<   dZe	dz  ed<   e
Zeed<   e
Zeed<   dZeed	<   dZe	dz  ed
<   dZeed<   dZe	dz  ed<   dZeed<   dede	ddfd„Zy)ra   r   r   Úuser_overrideNr   Úenv_value_forceÚenv_value_defaultFÚhider   r   r   Ú_deprecation_warnedri   r;   r   c                 óŒ  — |j                   | _         |j                  �|j                  nt        | j                   «      | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        d| _        t        |t        ¬«      | _
        |j                  �'|j                  D ]  }t        |«      x}€Œ|| _         n |j                  �'|j                  D ]  }t        |«      x}€Œ|| _         n | j                  �?| j                   �3t!        | j                   t"        «      st%        d| j                   › d�«      ‚| j                  �c|j                  €|j                  �J| j                  t"        t&        t(        t"           t(        t&           fvrt%        d| j                  › d�«      ‚y y y )NFrl   z!justknobs only support booleans, z is not a booleanz<envvar configs only support (optional) booleans or strings, z is neither)r   r   r+   r   r   r   r   r“   r   r   r�   r   rE   r‘   r   r�   r(   r3   r    r)   r   )r"   ri   r;   r&   Ú	env_values        r#   Ú__init__z_ConfigEntry.__init__S  s´  € Ø—~‘~ˆŒà!'×!2Ñ!2Ð!>ˆF×ÒÄDÈÏÉÓDVð 	Œð Ÿ™ˆŒØ—\‘\ˆŒ
à ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ø#(ˆÔ ä'¨´oÔFˆÔØ×"Ñ"Ð.Ø×.Ñ.ò �Ü!3°CÓ!8Ð8�IÑEØ-6�DÔ*Ùðð × Ñ Ð,Ø×,Ñ,ò �Ü!3°CÓ!8Ð8�IÑEØ+4�DÔ(Ùðð �=‰=Ð$¨¯©Ð)AÜ˜dŸl™l¬DÔ1Ü$Ø7¸¿¹°~ÐEVÐWóð ð �?‰?Ð&Ø×#Ñ#Ð/°6×3HÑ3HÐ3Tà�‰ÜÜÜœ‘Üœ‘ð	'ñ ô %ØRÐSW×SbÑSbÐRcÐcnÐoóð ðð 4Uð 'r%   )r-   r.   r/   r   r2   r+   r   r1   r   r)   r   r�   r‘   r’   r3   r   r   r   r“   r   r–   r5   r%   r#   ra   ra   3  s—   … ð ƒLàÓð ˜fÑ%Ó%à€Hˆc�D‰jÓà*€O�SÓ*Ø,Ð�sÓ,ð €Dˆ$ÓØ€Eˆ3�‰:Óà€J�ÓØ&*Ð˜˜t™Ó*Ø %Ð˜Ó%ð)˜wð )¨cð )°dô )r%   ra   c                   ó  ‡ — e Zd ZU eeef   ed<   ee   ed<   ee   ed<   ee	   ed<   ee
dz     ed<   eee   dz     ed<   eeeeeef   f      ed<   d9d
„Zdeded	df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d	eeef   dz  fd„Zded	efd„Zdeded	dfd„ZdZded	dfd„Zded	e	fd„Z	 	 	 	 d:dee   dz  dee   dz  de	de	d	eeef   f
d„Zd ed	efd!„Zd	e
fd"„Zd#dd$œd%e	de	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% e#d,e$¬*«      d	eeef   fd-„«       Z&d.e
eeef   z  d	dfd/„Z'd	eeef   fd0„Z(d	eeef   fd1„Z)	 	 d;d2eeeef   z  dz  d3ed4eeef   d	d5fd6„Z*d7eeef   d	efd8„Z+ˆ xZ,S )<rm   ro   rN   rp   rK   NrJ   rM   rL   r   c                 ó(   — t        dt        › d�«      ‚)Nzuse z-.install_config_module(sys.modules[__name__]))ÚNotImplementedErrorr-   r!   s    r#   r–   zConfigModule.__init__‘  s   € Ü!Ø”8�*ÐIÐJó
ð 	
r%   r;   ri   c                 óè   — |j                   rf|j                  sYddl}| j                  › d|› d�}|j                  r|d|j                  › �z  }|dz  }|j                  |t        d¬«       d	|_        yyy)
z;Issue deprecation warning for config if not already warned.r   NrV   z is deprecatedz and z4. It will be removed in a future version of PyTorch.é   )Ú
stacklevelT)r   r“   Úwarningsr-   r   ÚwarnÚFutureWarning)r"   r;   ri   r�   Úmsgs        r#   Ú_warn_if_deprecatedz ConfigModule._warn_if_deprecated–  s{   € à×Ò V×%?Ò%?Ûà—]‘]�O 1 T F¨.Ð9ˆCØ×)Ò)Ø˜˜v×9Ñ9Ð:Ð;Ñ;�ØÐIÑIˆCØ�M‰M˜#œ}¸ˆMÔ;Ø)-ˆFÕ&ð &@Ðr%   rD   c                 ó²  •— || j                   v rt        ‰| �	  ||«       y || j                  vrt	        | j
                  › d|› d�«      ‚| j                  |   }| j                  ||«       |j                  �| j                  ||«       y |j                  j                  |«       | j                  j                  d«       | j                  |«       d|_        y )NrV   ú does not existTF)rN   ÚsuperÚ__setattr__ro   ÚAttributeErrorr-   r¡   r   Ú_set_alias_valr�   ry   rK   Ú_mark_get_dict_dirtyr’   )r"   r;   rD   ri   rq   s       €r#   r¥   zConfigModule.__setattr__¢  s¿   ø€ Ø�4×$Ñ$Ñ$Ü‰GÑ  eÕ,Ø˜Ÿ™Ñ%Ü  D§M¡M ?°!°D°6¸Ð!IÓJÐJð —\‘\ $Ñ'ˆFØ×$Ñ$ T¨6Ô2à�|‰|Ð'Ø×#Ñ# F¨EÕ2à×$Ñ$×(Ñ(¨Ô/Ø×$Ñ$×(Ñ(¨Ô.Ø×)Ñ)¨$Ô/Ø#�•r%   c                 ó.  — 	 | j                   |   }|j                  rt        | j                  › d|› d�«      ‚| j	                  ||«       | j                  |«      }|t        ur|S |j                  t        ur|j                  S |j                  j                  «       }|t        ur|S |j                  t        ur|j                  S |j                  �!t        |j                  |j                  ¬«      S t        |j                  t        «      sR|j                  j!                  t#        j$                  |j                  «      «       |j                  j                  «       S |j                  S # t&        $ r!}t        | j                  › d|› d�«      |‚d }~ww xY w)NrV   r£   ©r;   r   )ro   r’   r¦   r-   r¡   Ú_get_alias_valr   r�   r�   rC   r‘   r   r   r   r(   Ú_IMMUTABLE_CONFIG_TYPESry   ÚcopyÚdeepcopyÚKeyError)r"   r;   ri   Ú	alias_valr�   Úes         r#   Ú__getattr__zConfigModule.__getattr__´  s`  € ð$	RØ—\‘\ $Ñ'ˆFà�{Š{Ü$¨¯© °a¸°v¸_Ð%MÓNÐNð ×$Ñ$ T¨6Ô2à×+Ñ+¨FÓ3ˆIØ¤Ñ/Ø Ð à×%Ñ%¬_Ñ<Ø×-Ñ-Ð-à"×0Ñ0×4Ñ4Ó6ˆMØ¤OÑ3Ø$Ð$à×'Ñ'¬Ñ>Ø×/Ñ/Ð/à�‰Ð*ä&¨F¯O©OÀVÇ^Á^ÔTÐTô ˜fŸn™nÔ.EÔFØ×$Ñ$×(Ñ(¬¯©°v·~±~Ó)FÔGØ×+Ñ+×/Ñ/Ó1Ð1Ø—>‘>Ð!øäò 	Rä  D§M¡M ?°!°D°6¸Ð!IÓJÐPQÐQûð	Rús=   ‚A"E* Á%E* Â#E* Â'E* Ã,E* Ã2A+E* ÅE* Å*	FÅ3FÆFc                 óÜ   — | j                   j                  d«       | j                  |«       | j                  |   j                  j                  t
        «       d| j                  |   _        y ©NT)rK   ry   r¨   ro   r�   r   r’   ©r"   r;   s     r#   Ú__delattr__zConfigModule.__delattr__Û  sT   € Ø×Ñ× Ñ  Ô&Ø×!Ñ! $Ô'ð 	�‰�TÑ×(Ñ(×,Ñ,¬_Ô=Ø"&ˆ�‰�TÑÕr%   Úentryc                 óÀ   — |j                   }|€y |j                  dd«      \  }}	 t        j                  |«      }||fS # t        $ r}t        d|› d�«      |‚d }~ww xY w)NrV   rw   zconfig alias r£   )r   ÚrsplitÚ	importlibÚimport_moduleÚImportErrorr¦   )r"   r·   r   Úmodule_nameÚconstant_namerF   r±   s          r#   Ú_get_alias_module_and_namez'ConfigModule._get_alias_module_and_nameã  sw   € ð —‘ˆØˆ=ØØ%*§\¡\°#°qÓ%9Ñ"ˆ�]ð	PÜ×,Ñ,¨[Ó9ˆFð �}Ð$Ð$øô ò 	PÜ  =°°°Ð!GÓHÈaÐOûð	Pús   ¦? ¿	AÁAÁAc                 óZ   — | j                  |«      }|€t        S |\  }}t        ||«      }|S r7   )r¿   r   Úgetattr)r"   r·   ÚdatarF   r¾   Úconstant_values         r#   r«   zConfigModule._get_alias_valð  s9   € Ø×.Ñ.¨uÓ5ˆØˆ<Ü"Ð"Ø $Ñˆ�Ü  ¨Ó7ˆØÐr%   r&   c                 ód   — | j                  |«      }|€t        d«      ‚|\  }}t        |||«       y )Nz6alias data should not be None when setting alias value)r¿   r    rd   )r"   r·   r&   rÂ   rF   r¾   s         r#   r§   zConfigModule._set_alias_valø  s?   € Ø×.Ñ.¨uÓ5ˆØˆ<Ü ØHóð ð !%Ñˆ�Ü�˜ sÕ+r%   é   c                 óÈ   — | j                   j                  «       }|€y |j                  |«       t        |«      | j                  kD  r| j                   j                  d «       y y r7   )rM   rC   r†   ÚlenÚ_GET_DICT_DIRTY_KEYS_CAPry   )r"   r;   Údirtys      r#   r¨   z!ConfigModule._mark_get_dict_dirty  sT   € Ø×-Ñ-×1Ñ1Ó3ˆØˆ=ØØ�	‰	�$ŒÜˆu‹:˜×5Ñ5Ò5Ø×)Ñ)×-Ñ-¨dÕ3ð 6r%   c                 ó²  — | j                   |   }|j                  t        u xs |j                  |j                  k(  }|j                  t        u xs |j                  |j                  k(  }|j
                  j                  «       t        u }t        |j                  t        «      s+|xs' |j
                  j                  «       |j                  k(  }|xr |xr |S )z‡
        Returns true if the config is at its default value.
        configs overridden by the env are not considered default.
        )	ro   r‘   r   r   r�   r�   rC   r(   r¬   )r"   r;   Ú
config_valÚnot_set_env_defaultÚnot_set_env_forceÚunsets         r#   Ú_is_defaultzConfigModule._is_default  sÒ   € ð
 —\‘\ $Ñ'ˆ
ð
 ×(Ñ(¬OÐ;ò BØ×+Ñ+¨z×/AÑ/AÑAð 	ð
 ×&Ñ&¬/Ð9ò @Ø×)Ñ)¨Z×-?Ñ-?Ñ?ð 	ð
 ×(Ñ(×,Ñ,Ó.´/ÐAˆä˜*×,Ñ,Ô.EÔFØÒQ˜Z×5Ñ5×9Ñ9Ó;¸z×?QÑ?QÑQˆEØÒBÐ,ÒBÐ1BÐBr%   FÚignored_keysÚignored_prefixesÚskip_defaultÚreadonly_valuesc                 óø  ‡— d\  }}|rt        |«      nd|rt        |«      nd|f}| j                  j                  «       }|rž|€i }| j                  j                  |«       | j                  j                  «       }	|j                  |«      }
|
�|	�|	}t        |
«      }nB|	€@i }| j                  j                  |«       | j                  j                  t        «       «       |€| j                  j                  «       }|€i }|D �]`  Š| j                  ‰   }|j                  �|j                  ‰d«       Œ2|r‰|v r|j                  ‰d«       ŒK|r't        ˆfd„|D «       «      r|j                  ‰d«       Œt|r$| j                  ‰«      r|j                  ‰d«       Œš|j                  j                  «       }|j                  t        ur|j                  }nd|t        ur|}nY|j                  t        ur|j                  }n:|j                   �"t#        |j                   |j$                  ¬«      }n|j$                  }t'        |t(        «      st+        j,                  |«      }||‰<   �Œc |r||vrt        |«      ||<   |S )a¡  Export a dictionary of current configuration keys and values.

        This function is design to provide a single point which handles
        accessing config options and exporting them into a dictionary.
        This is used by a number of different user facing export methods
        which all have slightly different semantics re: how and what to
        skip.
        If a config is aliased, it skips this config.

        Arguments:
            ignored_keys are keys that should not be exported.
            ignored_prefixes are prefixes that if a key matches should
                not be exported
            skip_default does two things. One if a key has not been modified
                it skips it.
            readonly_values when True, enables caching of the result.
                The caller owns the returned dict but must not mutate
                its values. When False (default), no caching is used.
        ©NNr5   Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr7   )r]   )Ú.0rR   rf   s     €r#   ú	<genexpr>z)ConfigModule._get_dict.<locals>.<genexpr>g  s   øè ø€ ÒM°&�s—~‘~ f×-ÑMùs   ƒrª   )ÚtuplerL   rC   ry   rM   Údictro   Úkeysr   ÚpopÚanyrÏ   r�   r�   r   r‘   r   r   r   r(   r¬   r­   r®   )r"   rÐ   rÑ   rÒ   rÓ   Úkeys_to_updateri   Ú	cache_keyÚcacheÚ
dirty_keysÚcachedr·   r�   r&   rf   s                 @r#   Ú	_get_dictzConfigModule._get_dict#  sT  ø€ ð6 ",Ñˆ˜á#/ŒE�,Ô°RÙ'7ŒEÐ"Ô#¸RØð
ˆ	ð ×(Ñ(×,Ñ,Ó.ˆÙØˆ}Ø�Ø×(Ñ(×,Ñ,¨UÔ3Ø×6Ñ6×:Ñ:Ó<ˆJØ—Y‘Y˜yÓ)ˆFØÐ! jÐ&<ð ",�Ü˜f›‘ØÐ#à�Ø×(Ñ(×,Ñ,¨UÔ3Ø×-Ñ-×1Ñ1´#³%Ô8ð Ð!Ø!Ÿ\™\×.Ñ.Ó0ˆNØˆ>ØˆFà!ó 	ˆCØ—L‘L Ñ%ˆEØ�{‰{Ð&Ø—
‘
˜3 Ô%ØÙ  |Ñ 3Ø—
‘
˜3 Ô%ØÙÜÓMÐ<LÔMÔMØ—J‘J˜s DÔ)ØÙ × 0Ñ 0°Ô 5Ø—
‘
˜3 Ô%Øð "×/Ñ/×3Ñ3Ó5ˆMØ×$Ñ$¬OÑ;Ø×+Ñ+‘Ø¤oÑ5Ø#‘Ø×(Ñ(´Ñ?Ø×-Ñ-‘Ø—‘Ð+Ü%¨5¯>©>À5Ç=Á=ÔQ‘à—m‘m�Ü˜cÔ#:Ô;Ü—m‘m CÓ(�ØˆF�3‹Kð?	ñB ˜y°Ñ5Ü# F›|ˆE�)ÑØˆr%   Úconfig_namec                 ó4   — | j                   |   j                  S r7   )ro   r   )r"   rä   s     r#   Úget_typezConfigModule.get_typeƒ  s   € Ø�|‰|˜KÑ(×3Ñ3Ð3r%   c                 ól   — t        | dg «      }t        j                  | j                  |d¬«      d¬«      S )z Convert config to a pickled blobÚ_save_config_ignoreT©rÐ   rÓ   é   )Úprotocol)rÁ   ÚpickleÚdumpsrã   )r"   rÐ   s     r#   Úsave_configzConfigModule.save_config†  s5   € ä˜tÐ%:¸BÓ?ˆÜ�|‰|Ø�N‰N¨ÀdˆNÓKØô
ð 	
r%   T)Úignore_private_configsrÓ   rï   c                óL  — g }|r|j                  d«       |j                  t        | dg «      «       | j                  ||¬«      }t        | dg «      }|rP|D ]K  }||v sŒ||   €Œ ||   «       }t	        |d«      r|j                  «       ||<   Œ8t        d|› d||   › d�«      ‚ |S )	z!Convert config to portable formatÚ_Ú_cache_config_ignore_prefix)rÑ   rÓ   Ú_cache_config_factory_keysÚuuidzConfig 'z' is set to zO which does not implement uuid(). Implement uuid() for cache key participation.)ÚappendÚextendrÁ   rã   r^   rô   ÚRuntimeError)r"   rï   rÓ   Úprefixesri   Úfactory_keysrf   Úinstances           r#   Úsave_config_portablez!ConfigModule.save_config_portableŽ  sÏ   € ð ˆÙ!Ø�O‰O˜CÔ Ø�‰œ Ð&CÀRÓHÔIØ—‘Ø%°ð  ó 
ˆô ˜tÐ%AÀ2ÓFˆÙØ#ò 
�Ø˜&’= V¨C¡[Ñ%<Ø*˜v c™{›}�HÜ˜x¨Ô0Ø&.§m¡m£o˜˜sšä*Ø& s e¨<¸¸s¹°}ð E-ð .óð ð
ð ˆr%   c                 óú  ‡‡‡	‡
‡— t        «       Š
dt        dt        dt        fd„Šdt        ddfˆˆ
fd„Šdt        t         z  dt        t           fˆfd„Šdt
        dt        fd	„Š	dt        fˆˆˆ	ˆfd
„}g }| j                  }| j                  t        | dg «      dd¬«      j                  «       D ]  \  }}|j                   ||||«      «       Œ  ‰
D ]  }|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.
        ÚfuncÚadd_dotr   c                 óD   — | j                   }|dk(  rd}|r
|dk7  r|dz  }|S )NÚbuiltinsrk   rV   )r.   )rý   rþ   r½   s      r#   Úget_module_namez4ConfigModule.codegen_config.<locals>.get_module_name°  s2   € ØŸ/™/ˆKØ˜jÒ(Ø �Ù˜;¨"Ò,Ø˜sÑ"�ØÐr%   Nc                 ó@   •—  ‰| d«      }|r‰j                  |«       y y )NF)r†   )rý   r½   r  Úimportss     €€r#   Ú
add_importz/ConfigModule.codegen_config.<locals>.add_import¸  s#   ø€ Ù)¨$°Ó6ˆKÙØ—‘˜KÕ(ð r%   Úvc                 óX   •— | D �cg c]  } ‰|d«      › |j                   › �‘Œ c}S c c}w r´   )r-   )r  Úitemr  s     €r#   Úlist_of_callables_to_stringz@ConfigModule.codegen_config.<locals>.list_of_callables_to_string½  s,   ø€ ØPQÖRÈ‘ t¨TÓ2Ð3°D·M±M°?ÒCÒRÐRùÒRs   †'c                 óP   — t        | «      xr t        | d«      xr t        | d«      S )Nr.   r-   )Úcallabler^   )r  s    r#   Úimportable_callablez8ConfigModule.codegen_config.<locals>.importable_callableÀ  s$   € ä˜A“;ÒV¤7¨1¨lÓ#;ÒVÄÈÈ:Ó@VÐVr%   c                 ó\  •—  ‰|«      r% ‰|«       | › d|› d ‰|d«      › |j                   › �S t        |t        t        f«      r_t	        ˆfd„|D «       «      rK|D ]
  } ‰|«       Œ  ‰|«      }t        |t        «      r
| › d|› d|› �S | › d|› ddj                  |«      › d�S | › d|› d|›�S )að  
            Return a string version of the config line.
            Handle v when v is a callable, or a list/dict of callables. Add import statements for callables if necessary.
            We assume that the value of a single config won't be a mix of callables and non-callables.

            Example output:
                import logging
                import _warnings
                torch._dynamo.config.reorderable_logging_functions = { _warnings.warn, logging.warn, print }
            rV   z = Tc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr7   r5   )r×   r  r  s     €r#   rØ   zGConfigModule.codegen_config.<locals>.get_config_line.<locals>.<genexpr>Ò  s   øè ø€ ò 4Ø.2Ñ# D×)ñ4ùs   ƒz = { z, z })r-   r(   r*   ry   ÚallÚjoin)	ÚmodÚkr  r  Úv_listr  r  r  r  s	        €€€€r#   Úget_config_linez4ConfigModule.codegen_config.<locals>.get_config_lineÄ  sÛ   ø€ ñ # 1Ô%Ù˜1”Ø˜˜a ˜s #¡o°a¸Ó&>Ð%?ÀÇ
Á
¸|ÐLÐLÜ˜A¤¤c˜{Ô+´ó 4Ø67ô4ô 1ð ò %�DÙ˜tÕ$ð%á4°QÓ7�Ü˜a¤Ô&Ø!˜U ! A 3 c¨&¨Ð2Ð2à!˜U ! A 3 f¨T¯Y©Y°vÓ->Ð,?¸sÐCÐCà˜˜a ˜s # a UÐ+Ð+r%   rè   T)rÐ   rÒ   rÓ   r   zimport ú
)ry   r   r3   r)   r*   r   r-   rã   rÁ   r\   rõ   Úinsertr  )r"   r  Úlinesr  r  r  Úimport_namer  r  r  r  r  s          @@@@@r#   Úcodegen_configzConfigModule.codegen_config¨  s  ü€ ô “%ˆð	¤(ð 	´Tð 	¼có 	ð	)œXð 	)¨$ö 	)ð
	S¬4´#©:ð 	S¼$¼s¹)õ 	Sð	W¤3ð 	W¬4ó 	Wð	,¬#÷ 	,ð 	,ð6 ˆØ�m‰mˆØ—N‘NÜ  Ð'<¸bÓAØØ ð #ó 
÷ ‰%‹'ò		5‰DˆAˆqð
 �L‰L™¨¨a°Ó3Õ4ð	5ð #ò 	5ˆKØ�L‰L˜˜g k ]Ð3Õ4ð	5à�y‰y˜ÓÐr%   c                 ó  — | j                   j                  «       s| j                  j                  «       €°| j                  t	        | j
                  «      d¬«      }t        t        |j                  «       «      «      }| j                  j                  t        j                  |j                  d«      d¬«      j                  «       «       | j                   j                  d«       | j                  j                  «       }|€t        d«      ‚|S )z/Hashes the configs that are not compile_ignoredTré   ru   F)Úusedforsecurityz6_hash_cache_var should not be None after recomputation)rK   rC   rJ   rã   r*   rp   ÚreprÚsortedr\   ry   ÚhashlibÚmd5r}   Údigestr    )r"   Údict_to_hashÚstring_to_hashÚresults       r#   Úget_hashzConfigModule.get_hashë  sâ   € à×Ñ×#Ñ#Ô%¨×)=Ñ)=×)AÑ)AÓ)CÐ)KØŸ>™>Ü! $×"<Ñ"<Ó=Ètð *ó ˆLô "¤&¨×);Ñ);Ó)=Ó">Ó?ˆNØ× Ñ ×$Ñ$Ü—‘Ø"×)Ñ)¨'Ó2ÀEôç‘&“(ôð
 × Ñ ×$Ñ$ UÔ+Ø×%Ñ%×)Ñ)Ó+ˆØˆ>Ü ØHóð ð ˆr%   zÒ`config.to_dict()` has been deprecated. It no longer changes the underlying config. use `config.get_config_copy()` instead if you just want a copy of the config, or config.load_config if you need mutable access)Úcategoryc                 ó"   — | j                  «       S r7   ©Úget_config_copyr!   s    r#   Úto_dictzConfigModule.to_dictÿ  ó   € ð ×#Ñ#Ó%Ð%r%   zÜ`config.shallow_copy_dict()` has been deprecated. It no longer changes the underlying config. use `config.get_config_copy()` instead if you just want a copy of the config, or config.load_config if you need mutable accessc                 ó"   — | j                  «       S r7   r&  r!   s    r#   Úshallow_copy_dictzConfigModule.shallow_copy_dict  r)  r%   Úmaybe_pickled_configc                 óæ   — t        |t        «      st        j                  |«      }n|}|j	                  «       D ]6  \  }}|| j
                  v rt        | ||«       Œ"ddlm}  |d|› d|› d�«       Œ8 y)zARestore from a prior call to save_config() or shallow_copy_dict()r   )Ú	warn_oncezkey z with value z! is not understood by this configN)	r(   rÚ   rì   Úloadsr\   ro   rd   Útorch._dynamo.utilsr.  )r"   r,  ri   r  r  r.  s         r#   Úload_configzConfigModule.load_config  so   € äÐ.´Ô5Ü—\‘\Ð"6Ó7‰Fà)ˆFØ—L‘L“Nò 	V‰DˆAˆqØ�D—L‘LÑ Ü˜˜a Õ#å9á˜D   <°¨sÐ2SÐTÕUñ	Vr%   c                 ó"   — | j                  «       S r7   )rã   r!   s    r#   r'  zConfigModule.get_config_copy  s   € Ø�~‰~ÓÐr%   c                 ó<   — | j                  t        | dg «      ¬«      S )Nrè   )rÐ   )rã   rÁ   r!   s    r#   Úget_serializable_config_copyz)ConfigModule.get_serializable_config_copy"  s   € Ø�~‰~¬7°4Ð9NÐPRÓ+Sˆ~ÓTÐTr%   Úarg1Úarg2ÚkwargsÚContextDecoratorc                 óD  ‡‡— |�L|� t        |t        «      st        d«      ‚||iŠnt        |t        «      st        d«      ‚|Š|rt        d«      ‚|Š|�t        d«      ‚t        ‰t        «      st        dt	        ‰«      › �«      ‚| Š G ˆˆfd„dt
        «      } |«       S )aÂ  
        Decorator and/or context manager to make temporary changes to a config.  Note that patched settings are thread-local.

        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):
                ...
        zGfirst argument must be a string when passing 2 positional args to patchzKfirst argument must be a dict when passing a single positional arg to patchz:cannot pass both positional and keyword arguments to patchzLsecond positional argument is only valid when first argument is a key stringzexpected `dict` got c                   ó2   •— e Zd Zdˆ ˆfd„Zdˆfd„Zˆfd„Zy)ú'ConfigModule.patch.<locals>.ConfigPatchNc                 ój   •— ‰| _         t        ‰j                  › dt        | «      › d�d¬«      | _        y )Nz.ConfigPatch[ú]r5   rl   )Úchangesr   r-   ÚidÚ_prior)r"   r>  ri   s    €€r#   r–   z0ConfigModule.patch.<locals>.ConfigPatch.__init__[  s3   ø€ Ø&�”ÜFPØ—‘Ð' }´R¸³X°J¸aÐ@ØôG�•r%   c                 ó„  •— i }| j                   D ]  }‰j                  |«      ||<   Œ | j                  j                  «       }| j                  j	                  g |¢|‘­«       	 | j                   j                  «       D ]  \  }}‰j                  ||«       Œ y # t        $ r | j                  j	                  |«       ‚ w xY wr7   )r>  r²   r@  rC   ry   r\   r¥   Ú	Exception)r"   Úpriorrf   Úprior_stackr  r  ri   s         €r#   Ú	__enter__z1ConfigModule.patch.<locals>.ConfigPatch.__enter__b  s³   ø€ Ø(*�ØŸ<™<ò 9�Cà!'×!3Ñ!3°CÓ!8�E˜#’Jð9ð #Ÿk™kŸo™oÓ/�Ø—‘—‘Ð 5 +Ð 5¨uÑ 5Ô6ðØ $§¡× 2Ñ 2Ó 4ò 1™˜˜1Ø×*Ñ*¨1¨aÕ0ñ1øä ò Ø—K‘K—O‘O KÔ0Øðús   Á$4B Â&B?c                 óî   •— | j                   j                  «       }|st        d«      ‚|d   }| j                   j                  |d d «       |j	                  «       D ]  \  }}‰j                  ||«       Œ y )Nz2prior should not be empty when exiting ConfigPatchrv   )r@  rC   r    ry   r\   r¥   )	r"   Úexc_typeÚexc_valÚexc_tbrD  rC  r  r  ri   s	           €r#   Ú__exit__z0ConfigModule.patch.<locals>.ConfigPatch.__exit__p  sq   ø€ Ø"Ÿk™kŸo™oÓ/�Ù"Ü(ØLóð ð $ B™�Ø—‘—‘ ¨C¨RÐ 0Ô1Ø!ŸK™K›Mò -‘D�A�qØ×&Ñ& q¨!Õ,ñ-r%   r,   )r-   r.   r/   r–   rE  rJ  )r>  ri   s   €€r#   ÚConfigPatchr;  Z  s   ø„ öõõ	-r%   rK  )r(   r)   r    rÚ   r+   r8  )r"   r5  r6  r7  rK  r>  ri   s        @@r#   ÚpatchzConfigModule.patch%  sÇ   ù€ ð. ÐØÐÜ! $¬Ô,Ü(Øaóð ð   ˜,‘ä! $¬Ô-Ü(Øeóð ð �ÙÜ$ØPóð ð
 ˆGØÐÜ$Øbóð ô ˜'¤4Ô(Ü Ð#7¼¸W»°Ð!GÓHÐHØˆ÷	-Ô*ô 	-ñB ‹}Ðr%   r>  c                 óJ   ‡ ‡‡— ‰ 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                  ó@  •‡— ‰D � ci c]   } | ‰|    j                   j                  «       “Œ" c} Š‰j                  «       D ]O  \  } }‰|    j                   j                  |«       ‰j                  j                  d«       ‰j                  | «       ŒQ dˆˆˆfd„}|S c c} w )NTc                  óÊ   •— ‰j                  «       D ]O  \  } }‰|    j                  j                  |«       ‰j                  j                  d«       ‰j	                  | «       ŒQ y r´   )r\   r�   ry   rK   r¨   )r  r  ri   rC  r"   s     €€€r#   ÚrevertzBConfigModule._make_closure_patcher.<locals>.change.<locals>.revert˜  sV   ø€ Ø!ŸK™K›Mò 1‘D�A�qØ˜1‘I×+Ñ+×/Ñ/°Ô2Ø×(Ñ(×,Ñ,¨TÔ2Ø×-Ñ-¨aÕ0ñ1r%   r,   )r�   rC   r\   ry   rK   r¨   )r  r  rP  rC  r>  ri   r"   s      @€€€r#   Úchangez2ConfigModule._make_closure_patcher.<locals>.change‘  s�   ù€ Ø?FÖG¸!�Q˜˜q™	×/Ñ/×3Ñ3Ó5Ñ5ÒGˆEØŸ™›ò -‘��1Ø�q‘	×'Ñ'×+Ñ+¨AÔ.Ø×$Ñ$×(Ñ(¨Ô.Ø×)Ñ)¨!Õ,ð-÷
1ð ˆMùò Hs   ‡%B)ro   r   )r"   r>  rQ  ri   s   `` @r#   Ú_make_closure_patcherz"ConfigModule._make_closure_patcher}  s*   ú€ ð$ —‘ˆð	œ  T Ñ*÷ 	ð ˆr%   r,   )NNFFrÕ   )-r-   r.   r/   rÚ   r)   ra   r2   ry   r   r3   ÚbytesÚ_GetDictCacheKeyr   r–   r¡   r1   r¥   r²   r¶   rÙ   r   r¿   r«   r§   rÈ   r¨   rÏ   r*   rã   r+   ræ   rî   rû   r  r#  r   rŸ   r(  r+  r1  r'  r4  rL  rR  Ú__classcell__©rq   s   @r#   rm   rm     sC  ø… ð �#�|Ð#Ñ$Ó$Ø�c‘(ÓØ˜s™8Ó#Ø Ñ%Ó%Ø ¨¡Ñ-Ó-ð
 )¨¨S©°D©Ñ9Ó9Ø# DÐ)9¸4ÀÀSÀ¹>Ð)IÑ$JÑKÓKó
ð

.¨ð 
.°\ð 
.Àdó 
.ð$ ð $¨Fð $°tõ $ð$%R ð %R¨ó %RðN' ð '¨ó 'ð%Ø!ð%à	ˆz˜3ˆÑ	 $Ñ	&ó%ð Lð °Só ð, Lð ,°sð ,¸tó ,ð  "Ðð4¨ð 4°ó 4ðC ð C¨ó Cð4 *.Ø-1Ø"Ø %ñ^à˜3‘i $Ñ&ð^ð ˜s™) dÑ*ð^ð ð	^ð
 ð^ð 
ˆc�3ˆh‰ó^ð@4 Cð 4¨Dó 4ð
˜Uó 
ð 15ÈeòØ)-ðØGKðà	ˆc�3ˆh‰óð4A  ó A ðF˜%ó ñ( ð	8ð ô	ð&˜˜c 3˜h™ò &óð&ñ ð	8ð ô	ð& 4¨¨S¨¡>ò &óð&ðV°¸¸SÀ#¸X¹Ñ0Fð VÈ4ó Vð   c¨3 h¡ó  ðU¨d°3¸°8©nó Uð
 -1ØñVà�D˜˜c˜‘NÑ" TÑ)ðVð ðVð �s˜C�x‘.ð	Vð
 
óVðp#¨t°C¸°H©~ð #À#÷ #r%   rm   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 )r8  z[
    Same as contextlib.ContextDecorator, but with support for
    `unittest.TestCase`
    r   c                 ó   — t        d«      ‚©NÚNYI©r™   r!   s    r#   rE  zContextDecorator.__enter__©  ó   € Ü! %Ó(Ð(r%   c                 ó   — t        d«      ‚rY  r[  )r"   rG  rH  rI  s       r#   rJ  zContextDecorator.__exit__¬  r\  r%   rý   c                 óü   •‡ — 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r7   )rE  r¤   Ú
setUpClassrB  rJ  ©Úclsrq   r"   s    €€r#   rb  z7ContextDecorator.__call__.<locals>._TestCase.setUpClass³  s?   ø€ à—N‘NÔ$ðÜ™Ñ*Õ,øÜ$ò ØŸ™ d¨D°$Ô7Øðús	   “" ¢A c                 óz   •— 	 t         ‰| �  «        ‰j                  d d d «       y # ‰j                  d d d «       w xY wr7   )r¤   ÚtearDownClassrJ  rc  s    €€r#   rf  z:ContextDecorator.__call__.<locals>._TestCase.tearDownClass¼  s4   ø€ ð8Ü™Ñ-Ô/àŸ™ d¨D°$Õ7ø˜Ÿ™ d¨D°$Õ7ús   ƒ% ¥:r,   )r-   r.   r/   Úclassmethodrb  rf  rU  )rq   r"   s   @€r#   Ú	_TestCaser`  ²  s)   ù„ Øõó ðð õ8ó ô8r%   rh  )
r(   r+   r_   ÚunittestÚTestCaser-   r/   r.   r¤   Ú__call__)r"   rý   rh  rq   s   `  €r#   rk  zContextDecorator.__call__¯  sf   ù€ Ü�dœDÔ!¤j°´x×7HÑ7HÔ&Iö8˜Dô 8ð" "&§¡ˆIÔØ%)×%6Ñ%6ˆIÔ"Ø#'§?¡?ˆIÔ àÐä‰wÑ Ó%Ð%r%   r,   )r-   r.   r/   r0   rE  r
   rJ  r   r   rk  rU  rV  s   @r#   r8  r8  £  s<   ø„ ñó
)ð)°Xó )ð&˜X s e¨S jÑ1ð &°c÷ &ñ &r%   r8  c                   ód   ‡ — e Zd ZdZdededd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 )rc   zn
    Shim to redirect to main config.
    `config.triton.cudagraphs` maps to _config["triton.cudagraphs"]
    ri   rR   r   Nc                 óF   •— t         ‰| �  d|«       t         ‰| �  d|«       y )Nro   Ú_prefix)r¤   r¥   )r"   ri   rR   rq   s      €r#   r–   zSubConfigProxy.__init__Ò  s!   ø€ ä‰Ñ˜I vÔ.Ü‰Ñ˜I vÕ.r%   r;   rD   c                 óT   — | j                   j                  | j                  |z   |«      S r7   )ro   r¥   rn  )r"   r;   rD   s      r#   r¥   zSubConfigProxy.__setattr__×  s"   € Ø�|‰|×'Ñ'¨¯©°tÑ(;¸UÓCÐCr%   c                 óR   — | j                   j                  | j                  |z   «      S r7   )ro   r²   rn  rµ   s     r#   r²   zSubConfigProxy.__getattr__Ú  ó    € Ø�|‰|×'Ñ'¨¯©°tÑ(;Ó<Ð<r%   c                 óR   — | j                   j                  | j                  |z   «      S r7   )ro   r¶   rn  rµ   s     r#   r¶   zSubConfigProxy.__delattr__Ý  rq  r%   )r-   r.   r/   r0   r1   r)   r–   r¥   r   r²   r¶   rU  rV  s   @r#   rc   rc   Ì  sf   ø„ ñð
/˜vð /¨sð /°tõ /ð
D ð D¨Fð D°tó Dð= ð =¨ó =ð= ð =¨÷ =r%   rc   c                 ó\   — t         j                  j                  | «      }|dk(  ry|dk(  ry|S r=   r@   )r;   r   rD   s      r#   Úget_tristate_envrt  á  s-   € Ü�J‰J�N‰N˜4Ó €EØ�‚|ØØ�‚|ØØ€Nr%   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó¨   •— ‰j                   j                  «       D ]3  \  }}|j                  d«      rŒ|| j                   vsŒ't        | ||«       Œ5 | S )Nrñ   )r[   r\   r]   rd   )Ú	child_clsr  r  Ú
parent_clss      €r#   Úwrapperz$inherit_fields_from.<locals>.wrapperë  sR   ø€ Ø×'Ñ'×-Ñ-Ó/ò 	)‰DˆAˆqà—<‘< Õ$¨°)×2DÑ2DÒ)DÜ˜	 1 aÕ(ð	)ð Ðr%   r5   )rx  ry  s   ` r#   Úinherit_fields_fromrz  ê  s   ø€ ôð €Nr%   r7   )9Ú
contextlibr­   r  rº   rY   r{   rA   rì   rz   ri  Úcollections.abcr   Úcontextvarsr   Údataclassesr   Útypesr   r   rU   r   r	   r
   r   r   r   Útyping_extensionsr   Útorch._utils_internalr   ÚintÚfloatr3   r+   r)   r*   ry   rÙ   rÚ   r`   r¬   r   r1   r   r   r9   rE   rs   r‚   rn   rT  ra   rm   r8  rc   rt  rz  r5   r%   r#   ú<module>r„     s
  ðÛ Û Û Û Û Û 	Û 	Û Û Û Ý $Ý "Ý !ß *ß K× KÝ (å 1ð �U˜D¡$ t£*¨c°4¸¸eÀTÐJ€ð   t©T°$«Z¸¸eÐDÐ ñ ˆC�s˜U‘{ TÑ)¨CÑ/°$Ñ6¸Ñ<¸uÑDÀtÑKÈdÑRÔS€ñ “(€ñ �4ÔôOˆg�a‰jó Oó ðOñl ð .Ø#Ø37Ø15Ø"&Ø à Ø*.ñ
Ø�V‘ð
à˜‘*ð
ð   S¡	™/¨DÑ0ð
ð ˜d 3™i™¨$Ñ.ð	
ð
 ˜4‘Kð
ð �T‰zð
ð ð
ð ! 4™Zð
ð 
ô
ð .Ø#Ø37Ø15Ø"&Ø à Ø*.ñ
Ø�V‘ð
à˜‘*ð
ð   S¡	™/¨DÑ0ð
ð ˜d 3™i™¨$Ñ.ð	
ð
 ˜4‘Kð
ð �T‰zð
ð ð
ð ! 4™Zð
ð 
�‰ó
ð0˜Sð  T¨C¡Z°$Ñ%6ó ðX *ð X°ó Xðv ,Ð ð"¸*ð "ÈÈSÉó "ðJ ˜˜s C˜x™¨%°°S°©/¸4Ð?Ñ@Ð ð ÷Hð Hó ðHôVa�:ô aôH&&�z×2Ñ2ô &&÷R=ñ =ñ*˜3ð ¨ð ¸¸t¹ó ór%   