§
    �Štj-™  ã                   ó
  — 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rGe+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-nLe+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 j5        ¦  «        Z5 G d(„ d)¦  «        Z6d,de"dede dz  fd*„Z7d+„ Z8dS )-é    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dS )Ú_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                 ó  — t                                | j        ¦  «        | _        t                                | j        ¦  «        | _        | j        �2| j        t          us| j        €| j        €| j        �t          d¦  «        ‚d S d S )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    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/_config_module.pyÚ__post_init__z_Config.__post_init__V   s™   € Ý '× HÒ HØÔ!ñ!
ô !
ˆÔõ &×FÒFØÔñ
ô 
ˆÔð Œ:Ð!à”¥OÐ3Ð3Ø”=Ð,ØÔ(Ð4ØÔ&Ð2å$ðIñô ð ð "Ð!ð
 3Ð2ó    Úvalc                 ó¦   — | €d S 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   s\   € ð ˆ;Ø�4Ý�c�3ÑÔð 	Ø�5ˆLÝ˜#�tÑ$Ô$ð 	HÝ Ð!F½4À¹9¼9Ð!FÐ!FÑGÔ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                 ó   — d S ©Nr5   ©r   r   r   r   r   r   r   r   s           r#   ÚConfigr9   }   s	   € ð ˆCr%   c           
      ó0   — t          | |||||||¬¦  «        S )Nr8   )r   r8   s           r#   r9   r9   ‹   s3   € õ ØØØ-Ø)Ø!Øà!Ø 3ð

ñ 

ô 

ð 
	
r%   Únamec                 ód   — t           j                             | ¦  «        }|dk    rdS |dk    rdS |S ©NÚ1TÚ0F©ÚosÚenvironÚget)r;   Úvalues     r#   Ú_read_env_variablerE   £   s6   € ÝŒJ�NŠN˜4Ñ Ô €EØ�‚|€|ØˆtØ�‚|€|ØˆuØ€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¬¦  «        ‰ _        dS )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dS )ú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                 ól  •— t          j        | ¦  «        }t          | j                             ¦   «         ¦  «        D �]ö\  }}|                     d¦  «        s{t          |t          t          f¦  «        s_t          |d¦  «        r%|j
        dk    sD|j
                             d¦  «        s*t          |t          ¦  «        rt          |t          ¦  «        rŒ—|› |› �}|                     |d¦  «        }t          |t          ¦  «        r7t!          t          ||¬¦  «        |¦  «        ‰	|<   |‰
u rt#          ‰
|¦  «         Œÿt          |t          ¦  «        r9|�|j        €||_        t!          ||¦  «        ‰	|<   |‰
u rt#          ‰
|¦  «         �ŒMt          |t          ¦  «        rp|j
        ‰
j        k    rt)          d|› d‰
j        › �¦  «        ‚t+          ‰
|› d	�¦  «        } ‰|||› d	�¦  «         |‰
u rt-          |||¦  «         �ŒÆ||j        |<   �ŒÒt)          d
|› d|› dt          |¦  «        › d�¦  «        ‚dS )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Ô4ˆ
Ý˜vœ×4Ò4Ñ6Ô6Ñ7Ô7ð -	Xñ -	X‰JˆC�à—’˜tÑ$Ô$ðå˜e¥jµ,Ð%?Ñ@Ô@ðõ ˜E <Ñ0Ô0ð	ð Ô(¨HÒ4Ð4Ø Ô+×6Ò6Ð7HÑIÔIð 5õ
 ˜u¥dÑ+Ô+ð 5õ
 1;¸5Å'Ñ0JÔ0Jð 5ð àÐ#˜cÐ#Ð#ˆDØ'Ÿ^š^¨C°Ñ6Ô6ˆNÝ˜%¥Ñ.Ô.ð XÝ+Ý E°nÐEÑEÔEÀtñ ô  ��t‘ð ˜6�>�>Ý˜F CÑ(Ô(Ð(øÝ˜E¥7Ñ+Ô+ð XØ!Ð-°%Ô2BÐ2JØ'5�EÔ$å+¨E°4Ñ8Ô8��t‘à˜6�>�>Ý˜F CÑ(Ô(Ð(ùÝ˜E¥4Ñ(Ô(ð XØÔ# v¤Ò6Ð6Ý(Ø^¨5Ð^Ð^ÈVÌ_Ð^Ð^ñô ð õ ' v°$¨z¨z¨zÑ:Ô:�Ø��e˜U t J J JÑ/Ô/Ð/Ø˜6�>�>Ý˜D # uÑ-Ô-Ð-Ñ-à).�D”M #Ñ&Ñ&å$Ð%V¸Ð%VÐ%V¸uÐ%VÐ%VÍÈUÉÌÐ%VÐ%VÐ%VÑWÔWÐWð[-	Xð -	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   ¬   sr  øøø€ ð
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð4XÝ�TÑ!ð4Xå�>Ñ)ð4Xõ ð4Xð 
ð	4Xð 4Xð 4Xð 4Xð 4Xð 4Xð 4Xð 4Xðl ')€FåHÈÑPÔPÐà	€Eˆ&�&˜"ÑÔÐØ€F„NØ#7€FÔ Ø+€FÔÝ'¨6¬?Ð(HÐ(HÐ(HÐRVÐWÑWÔW€FÔÝ'ØŒ?Ð(Ð(Ð(°$ðñ ô €FÔõ '1ØŒ?Ð1Ð1Ð1¸4ð'ñ 'ô '€FÔ#õ ",ØŒ?Ð,Ð,Ð,°dð"ñ "ô "€FÔÐÐr%   z@compile_ignoredc                 óà  — t          j        | ¦  «        }t          ¦   «         }t          j        t	          j        |                     d¦  «        ¦  «        j        ¦  «        }d}d}|D ]é}|j        t          j	        k    rQd}|j
                             ¦   «         }t          |v r,|dk    rt          dt          › �¦  «        ‚||j        d         f}Œh|j        t          j        k    r
|s|j
        }Œ‡|j        t          j        k    rM|j
        dk    rBt          |d         v r1|d         |j        d         dz
  k    r|                     |¦  «         d}d}Œê|dk    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     sw  € ÝÔ# FÑ+Ô+€KÝ‘%”%€Kõ Ô�rœz¨+×*<Ò*<¸WÑ*EÔ*EÑFÔFÔOÑPÔP€FØ€OØ€Iàð ð ˆØŒ:�Ô)Ò)Ð)ØˆIØ!œL×.Ò.Ñ0Ô0ˆMÝ%¨Ð6Ð6Ø" hÒ.Ð.Ý(Ð)OÕ7MÐ)OÐ)OÑPÔPÐPØ"/°´¸Q´Ð"?�øØŒZ�8œ=Ò(Ð(ð ð )Ø!œL�	øØŒZ�8œ;Ò&Ð&¨5¬<¸3Ò+>Ð+>õ '¨/¸!Ô*<Ð<Ð<Ø# AÔ&¨%¬+°a¬.¸1Ñ*<Ò<Ð<à—’ 	Ñ*Ô*Ð*Ø"(�ØˆIøØ˜(Ò"Ð"ÝÐCÕ+AÐCÐCÑDÔ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dS )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        �9| j         �2t!          | j         t"          ¦  «        st%          d| j         › d�¦  «        ‚| j        �]|j        €|j        �S| j        t"          t&          t(          t"                   t(          t&                   fvrt%          d| j        › d�¦  «        ‚d S d S d S )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Ð!>ˆFÔÐÅDÈÌÑDVÔDVð 	Œð œˆŒØ”\ˆŒ
à Ô+ˆŒØ#)Ô#=ˆÔ Ø#(ˆÔ å'¨µoÐFÑFÔFˆÔØÔ"Ð.ØÔ.ð ð �Ý!3°CÑ!8Ô!8Ð8�IÐEØ-6�DÔ*Ø�Eð Fð Ô Ð,ØÔ,ð ð �Ý!3°CÑ!8Ô!8Ð8�IÐEØ+4�DÔ(Ø�Eð Fð
 Œ=Ð$¨¬Ð)AÝ˜dœl­DÑ1Ô1ð Ý$ØW¸¼ÐWÐWÐWñô ð ð Œ?Ð&ØÔ#Ð/°6Ô3HÐ3TàŒÝÝÝ�”Ý�”ð	'ð ð õ %ØoÐSWÔSbÐoÐoÐoñô ð ð 'Ð&ðð ð 4UÐ3Tr%   )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€L�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                 ó2   — t          dt          › d�¦  «        ‚)Nzuse z-.install_config_module(sys.modules[__name__]))ÚNotImplementedErrorr-   r!   s    r#   r–   zConfigModule.__init__‘  s"   € Ý!ØJ•8ÐJÐJÐJñ
ô 
ð 	
r%   r;   ri   c                 óÆ   — |j         rW|j        sRddl}| j        › d|› d�}|j        r|d|j        › �z  }|dz  }|                     |t          d¬¦  «         d	|_        dS dS dS )
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ˆOˆOà”]Ð9Ð9 TÐ9Ð9Ð9ˆCØÔ)ð <ØÐ;˜vÔ9Ð;Ð;Ñ;�ØÐIÑIˆCØ�MŠM˜#�}¸ˆMÑ;Ô;Ð;Ø)-ˆFÔ&Ð&Ð&ð	.ð 	.ð 	.ð 	.r%   rD   c                 óÌ  •— || j         v r$t          ¦   «                              ||¦  «         d S || j        vrt	          | j        › d|› d�¦  «        ‚| j        |         }|                      ||¦  «         |j        �|                      ||¦  «         d S |j	         
                    |¦  «         | j         
                    d¦  «         |                      |¦  «         d|_        d S )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ŒG×Ò  eÑ,Ô,Ð,Ð,Ð,Ø˜œÐ%Ð%Ý  D¤MÐ!IÐ!I°DÐ!IÐ!IÐ!IÑJÔJÐJð ”\ $Ô'ˆFØ×$Ò$ T¨6Ñ2Ô2Ð2àŒ|Ð'Ø×#Ò# F¨EÑ2Ô2Ð2Ð2Ð2àÔ$×(Ò(¨Ñ/Ô/Ð/ØÔ$×(Ò(¨Ñ.Ô.Ð.Ø×)Ò)¨$Ñ/Ô/Ð/Ø#�”��r%   c                 óÜ  — 	 | j         |         }|j        rt          | j        › d|› d�¦  «        ‚|                      ||¦  «         |                      |¦  «        }|t          ur|S |j        t          ur|j        S |j         	                    ¦   «         }|t          ur|S |j
        t          ur|j
        S |j        �t          |j        |j        ¬¦  «        S t          |j        t          ¦  «        sJ|j                             t#          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àŒ{ð OÝ$¨¬Ð%MÐ%M¸Ð%MÐ%MÐ%MÑNÔNÐNð ×$Ò$ T¨6Ñ2Ô2Ð2à×+Ò+¨FÑ3Ô3ˆIØ¥Ð/Ð/Ø Ð àÔ%­_Ð<Ð<ØÔ-Ð-à"Ô0×4Ò4Ñ6Ô6ˆMØ¥OÐ3Ð3Ø$Ð$àÔ'­Ð>Ð>ØÔ/Ð/àŒÐ*å&¨F¬OÀVÄ^ÐTÑTÔTÐTõ ˜fœnÕ.EÑFÔFð 2ØÔ$×(Ò(­¬°v´~Ñ)FÔ)FÑGÔGÐGØÔ+×/Ò/Ñ1Ô1Ð1Ø”>Ð!øåð 	Rð 	Rð 	Rå  D¤MÐ!IÐ!I°DÐ!IÐ!IÐ!IÑJÔJÐPQÐQøøøøð	Røøøs=   ‚A#E Á&E Á;#E ÂE Â4!E ÃA#E Ä:E Å
E+ÅE&Å&E+c                 óÜ   — | j                              d¦  «         |                      |¦  «         | j        |         j                             t
          ¦  «         d| j        |         _        d S ©NT)rK   ry   r¨   ro   r�   r   r’   ©r"   r;   s     r#   Ú__delattr__zConfigModule.__delattr__Û  sb   € ØÔ× Ò  Ñ&Ô&Ð&Ø×!Ò! $Ñ'Ô'Ð'ð 	Œ�TÔÔ(×,Ò,­_Ñ=Ô=Ð=Ø"&ˆŒ�TÔÔÐÐr%   Úentryc                 óÊ   — |j         }|€d S |                     dd¦  «        \  }}	 t          j        |¦  «        }n&# t          $ r}t          d|› d�¦  «        |‚d }~ww xY w||fS )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ã  s�   € ð ”ˆØˆ=Ø�4Ø%*§\¢\°#°qÑ%9Ô%9Ñ"ˆ�]ð	PÝÔ,¨[Ñ9Ô9ˆFˆFøÝð 	Pð 	Pð 	PÝ Ð!G°Ð!GÐ!GÐ!GÑHÔHÈaÐOøøøøð	Pøøøà�}Ð$Ð$s   ¦; »
AÁAÁAc                 ól   — |                       |¦  «        }|€t          S |\  }}t          ||¦  «        }|S r7   )r¿   r   Úgetattr)r"   r·   ÚdatarF   r¾   Úconstant_values         r#   r«   zConfigModule._get_alias_valð  s?   € Ø×.Ò.¨uÑ5Ô5ˆØˆ<Ý"Ð"Ø $Ñˆ�Ý  ¨Ñ7Ô7ˆØÐr%   r&   c                 ó~   — |                       |¦  «        }|€t          d¦  «        ‚|\  }}t          |||¦  «         d S )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ø  sS   € Ø×.Ò.¨uÑ5Ô5ˆØˆ<Ý ØHñô ð ð !%Ñˆ�Ý�˜ sÑ+Ô+Ð+Ð+Ð+r%   é   c                 óÒ   — | j                              ¦   «         }|€d S |                     |¦  «         t          |¦  «        | j        k    r| j                              d ¦  «         d S d S r7   )rM   rC   r†   ÚlenÚ_GET_DICT_DIRTY_KEYS_CAPry   )r"   r;   Údirtys      r#   r¨   z!ConfigModule._mark_get_dict_dirty  sh   € ØÔ-×1Ò1Ñ3Ô3ˆØˆ=ØˆFØ�	Š	�$‰ŒˆÝˆu‰:Œ:˜Ô5Ò5Ð5ØÔ)×-Ò-¨dÑ3Ô3Ð3Ð3Ð3ð 6Ð5r%   c                 ó\  — | j         |         }|j        t          u p|j        |j        k    }|j        t          u p|j        |j        k    }|j                             ¦   «         t          u }t          |j        t          ¦  «        s$|p!|j                             ¦   «         |j        k    }|o|o|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ð 	ð
 Ô&­/Ð9ð @ØÔ)¨ZÔ-?Ò?ð 	ð
 Ô(×,Ò,Ñ.Ô.µ/ÐAˆå˜*Ô,Õ.EÑFÔFð 	RØÐQ˜ZÔ5×9Ò9Ñ;Ô;¸zÔ?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                             ¦   «         }|r¦|€i }| j                             |¦  «         | j                             ¦   «         }	|                     |¦  «        }
|
�|	�|	}t          |
¦  «        }nD|	€Bi }| j                             |¦  «         | j                             t          ¦   «         ¦  «         |€| j                             ¦   «         }|€i }|D �]VŠ| j        ‰         }|j        �| 	                    ‰d¦  «         Œ.|r‰|v r| 	                    ‰d¦  «         ŒK|r2t          ˆfd„|D ¦   «         ¦  «        r| 	                    ‰d¦  «         Œ|r,|                      ‰¦  «        r| 	                    ‰d¦  «         Œ­|j                             ¦   «         }|j        t          ur|j        }nL|t          ur|}n@|j        t          ur|j        }n*|j        �t#          |j        |j        ¬¦  «        }n|j        }t'          |t(          ¦  «        st+          j        |¦  «        }||‰<   �ŒX|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   óB   •K  — | ]}‰                      |¦  «        V — Œd S r7   )r]   )Ú.0rR   rf   s     €r#   ú	<genexpr>z)ConfigModule._get_dict.<locals>.<genexpr>g  s/   øè è € ÐMÐM°&�s—~’~ fÑ-Ô-ÐMÐMÐMÐMÐMÐMr%   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#  sØ  ø€ ð6 ",Ñˆ˜à#/Ð7�E�,ÑÔÐ°RØ'7Ð?�EÐ"Ñ#Ô#Ð#¸RØð
ˆ	ð Ô(×,Ò,Ñ.Ô.ˆØð 	9Øˆ}Ø�ØÔ(×,Ò,¨UÑ3Ô3Ð3ØÔ6×:Ò:Ñ<Ô<ˆJØ—Y’Y˜yÑ)Ô)ˆFØÐ! jÐ&<ð ",�Ý˜f™œ��ØÐ#à�ØÔ(×,Ò,¨UÑ3Ô3Ð3ØÔ-×1Ò1µ#±%´%Ñ8Ô8Ð8ð Ð!Ø!œ\×.Ò.Ñ0Ô0ˆNØˆ>ØˆFà!ð 	ñ 	ˆCØ”L Ô%ˆEØŒ{Ð&Ø—
’
˜3 Ñ%Ô%Ð%ØØð   |Ð 3Ð 3Ø—
’
˜3 Ñ%Ô%Ð%ØØð ÝÐMÐMÐMÐMÐ<LÐMÑMÔMÑMÔMð Ø—J’J˜s DÑ)Ô)Ð)ØØð  × 0Ò 0°Ñ 5Ô 5ð Ø—
’
˜3 Ñ%Ô%Ð%Øð "Ô/×3Ò3Ñ5Ô5ˆMØÔ$­OÐ;Ð;ØÔ+��Ø¥oÐ5Ð5Ø#��ØÔ(µÐ?Ð?ØÔ-��Ø”Ð+Ý%¨5¬>À5Ä=ÐQÑQÔQ��à”m�Ý˜cÕ#:Ñ;Ô;ð )Ý”m CÑ(Ô(�ØˆF�3‰K‰Kàð 	,˜y°Ð5Ð5Ý# F™|œ|ˆE�)ÑØˆr%   Úconfig_namec                 ó&   — | j         |         j        S r7   )ro   r   )r"   rä   s     r#   Úget_typezConfigModule.get_typeƒ  s   € ØŒ|˜KÔ(Ô3Ð3r%   c                 óz   — t          | dg ¦  «        }t          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†  sC   € å˜tÐ%:¸BÑ?Ô?ˆÝŒ|Ø�NŠN¨ÀdˆNÑKÔKØð
ñ 
ô 
ð 	
r%   T)Úignore_private_configsrÓ   rï   c                óž  — g }|r|                      d¦  «         |                     t          | dg ¦  «        ¦  «         |                      ||¬¦  «        }t          | dg ¦  «        }|re|D ]b}||v r\||         �T ||         ¦   «         }t	          |d¦  «        r|                     ¦   «         ||<   ŒFt          d|› d||         › d	�¦  «        ‚Œc|S )
z!Convert config to portable formatÚ_Ú_cache_config_ignore_prefix)rÑ   rÓ   Ú_cache_config_factory_keysNÚ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ÔHÑIÔIÐIØ—’Ø%°ð  ñ 
ô 
ˆõ ˜tÐ%AÀ2ÑFÔFˆØð 	Ø#ð 
ð 
�Ø˜&�=�= V¨C¤[Ð%<Ø*˜v cœ{™}œ}�HÝ˜x¨Ñ0Ô0ð Ø&.§m¢m¡o¤o˜˜s™˜å*ð. sð .ð .¸¸s¼ð .ð .ð .ñô ð øð
 ˆr%   c                 óB  ‡‡‡	‡
‡— 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        }|                      t          | dg ¦  «        dd¬¦  «         	                    ¦   «         D ]%\  }}| 
                     ||||¦  «        ¦  «         Œ&‰
D ]}|                     dd|› �¦  «         Œd                     |¦  «        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                 ó>   — | j         }|dk    rd}|r|dk    r|dz  }|S )NÚbuiltinsrk   rV   )r.   )rý   rþ   r½   s      r#   Úget_module_namez4ConfigModule.codegen_config.<locals>.get_module_name°  s;   € Øœ/ˆKØ˜jÒ(Ð(Ø �Øð #˜;¨"Ò,Ð,Ø˜sÑ"�ØÐr%   Nc                 óR   •—  ‰| d¦  «        }|r‰                      |¦  «         d S d S )NF)r†   )rý   r½   r  Úimportss     €€r#   Ú
add_importz/ConfigModule.codegen_config.<locals>.add_import¸  s>   ø€ Ø)˜/¨$°Ñ6Ô6ˆKØð )Ø—’˜KÑ(Ô(Ð(Ð(Ð(ð)ð )r%   Úvc                 ó    •— ˆfd„| D ¦   «         S )Nc                 ó:   •— g | ]} ‰|d ¦  «        › |j         › �‘ŒS )T)r-   )r×   Úitemr  s     €r#   ú
<listcomp>zTConfigModule.codegen_config.<locals>.list_of_callables_to_string.<locals>.<listcomp>¾  s2   ø€ ÐRÐRÐRÈ�� t¨TÑ2Ô2ÐC°D´MÐCÐCÐRÐRÐRr%   r5   )r  r  s    €r#   Úlist_of_callables_to_stringz@ConfigModule.codegen_config.<locals>.list_of_callables_to_string½  s   ø€ ØRÐRÐRÐRÐPQÐRÑRÔRÐRr%   c                 ó`   — t          | ¦  «        ot          | d¦  «        ot          | d¦  «        S )Nr.   r-   )Úcallabler^   )r  s    r#   Úimportable_callablez8ConfigModule.codegen_config.<locals>.importable_callableÀ  s,   € å˜A‘;”;ÐV¥7¨1¨lÑ#;Ô#;ÐVÅÈÈ:Ñ@VÔ@VÐVr%   c                 ó˜  •—  ‰|¦  «        r& ‰|¦  «         | › d|› d ‰|d¦  «        › |j         › �S t          |t          t          f¦  «        rst	          ˆfd„|D ¦   «         ¦  «        rX|D ]} ‰|¦  «         Œ ‰|¦  «        }t          |t          ¦  «        r
| › d|› d|› �S | › d|› dd                     |¦  «        › 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  — | ]} ‰|¦  «        V — Œd S r7   r5   )r×   r  r  s     €r#   rØ   zGConfigModule.codegen_config.<locals>.get_config_line.<locals>.<genexpr>Ò  s@   øè è € ð 4ð 4Ø.2Ð#Ð# DÑ)Ô)ð4ð 4ð 4ð 4ð 4ð 4r%   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Ä  sK  ø€ ð #Ð" 1Ñ%Ô%ð ,Ø�
˜1‘”�ØÐLÐL ÐLÐL o o°a¸Ñ&>Ô&>ÐLÀÄ
ÐLÐLÐLÝ˜A¥¥c˜{Ñ+Ô+ð ,µð 4ð 4ð 4ð 4Ø67ð4ñ 4ô 4ñ 1ô 1ð ,ð ð %ð %�DØ�J˜tÑ$Ô$Ð$Ð$Ø4Ð4°QÑ7Ô7�Ý˜a¥Ñ&Ô&ð DØ!Ð2Ð2 AÐ2Ð2¨&Ð2Ð2Ð2à!ÐCÐC AÐCÐC¨T¯YªY°vÑ->Ô->ÐCÐCÐCÐCàÐ+Ð+ Ð+Ð+ aÐ+Ð+Ð+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ð 	Sð 	Sð 	Sð 	Sð 	Sð	W¥3ð 	W­4ð 	Wð 	Wð 	Wð 	Wð	,­#ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð6 ˆØŒmˆØ—N’NÝ  Ð'<¸bÑAÔAØØ ð #ñ 
ô 
÷ Š%‰'Œ'ð		5ð 	5‰DˆAˆqð
 �LŠL˜˜¨¨a°Ñ3Ô3Ñ4Ô4Ð4Ð4Ø"ð 	5ð 	5ˆKØ�LŠL˜Ð3 kÐ3Ð3Ñ4Ô4Ð4Ð4Ø�yŠy˜ÑÔÐr%   c                 óF  — | j                              ¦   «         s| j                             ¦   «         €Ä|                      t	          | j        ¦  «        d¬¦  «        }t          t          |                     ¦   «         ¦  «        ¦  «        }| j         	                    t          j        |                     d¦  «        d¬¦  «                             ¦   «         ¦  «         | j          	                    d¦  «         | j                             ¦   «         }|€t          d¦  «        ‚|S )z/Hashes the configs that are not compile_ignoredNTré   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Ô)CÐ)KØŸ>š>Ý! $Ô"<Ñ=Ô=Ètð *ñ ô ˆLõ "¥&¨×);Ò);Ñ)=Ô)=Ñ">Ô">Ñ?Ô?ˆNØÔ ×$Ò$Ý”Ø"×)Ò)¨'Ñ2Ô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                 ó*   — |                       ¦   «         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                 ó*   — |                       ¦   «         S r7   r(  r!   s    r#   Úshallow_copy_dictzConfigModule.shallow_copy_dict  r+  r%   Úmaybe_pickled_configc                 óø   — t          |t          ¦  «        st          j        |¦  «        }n|}|                     ¦   «         D ]8\  }}|| j        v rt          | ||¦  «         Œ ddlm}  |d|› d|› d�¦  «         Œ9dS )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.utilsr0  )r"   r.  ri   r  r  r0  s         r#   Úload_configzConfigModule.load_config  s°   € åÐ.µÑ5Ô5ð 	*Ý”\Ð"6Ñ7Ô7ˆFˆFà)ˆFØ—L’L‘N”Nð 	Vð 	V‰DˆAˆqØ�D”LÐ Ð Ý˜˜a Ñ#Ô#Ð#Ð#à9Ð9Ð9Ð9Ð9Ð9à�	ÐT ÐTÐT°ÐTÐTÐTÑUÔUÐUÐUð	Vð 	Vr%   c                 ó*   — |                       ¦   «         S r7   )rã   r!   s    r#   r)  zConfigModule.get_config_copy  s   € Ø�~Š~ÑÔÐr%   c                 óL   — |                       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Ô+Sˆ~ÑTÔTÐTr%   Úarg1Úarg2ÚkwargsÚContextDecoratorc                 ó¢  ‡‡— |�c|�)t          |t          ¦  «        st          d¦  «        ‚||iŠn&t          |t          ¦  «        st          d¦  «        ‚|Š|rt          d¦  «        ‚n|Š|�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):
                ...
        NzGfirst 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                   ó4   •— e Zd Zdˆ ˆfd„Zdˆfd„Zˆfd„ZdS )ú'ConfigModule.patch.<locals>.ConfigPatchr   Nc                 ór   •— ‰| _         t          ‰j        › dt          | ¦  «        › d�d¬¦  «        | _        d S )Nz.ConfigPatch[ú]r5   rl   )Úchangesr   r-   ÚidÚ_prior)r"   r@  ri   s    €€r#   r–   z0ConfigModule.patch.<locals>.ConfigPatch.__init__[  sF   ø€ Ø&�”ÝFPØ”Ð@Ð@µR¸±X´XÐ@Ð@Ð@ØðGñ Gô G�”��r%   c                 ó~  •— i }| j         D ]}‰                     |¦  «        ||<   Œ| j                             ¦   «         }| j                             g |¢|‘R ¦  «         	 | j                              ¦   «         D ]\  }}‰                     ||¦  «         Œd S # t          $ r | j                             |¦  «         ‚ w xY wr7   )r@  r²   rB  rC   ry   r\   r¥   Ú	Exception)r"   Úpriorrf   Úprior_stackr  r  ri   s         €r#   Ú	__enter__z1ConfigModule.patch.<locals>.ConfigPatch.__enter__b  sà   ø€ Ø(*�Øœ<ð 9ð 9�Cà!'×!3Ò!3°CÑ!8Ô!8�E˜#‘J�JØ"œkŸošoÑ/Ô/�Ø”—’Ð 5 +Ð 5¨uÐ 5Ð 5Ñ6Ô6Ð6ðØ $¤× 2Ò 2Ñ 4Ô 4ð 1ð 1™˜˜1Ø×*Ò*¨1¨aÑ0Ô0Ð0Ð0ð1ð 1øå ð ð ð Ø”K—O’O KÑ0Ô0Ð0Øðøøøs   Á5B Â&B<c                 ó  •— | j                              ¦   «         }|st          d¦  «        ‚|d         }| j                              |d d…         ¦  «         |                     ¦   «         D ]\  }}‰                     ||¦  «         Œd S )Nz2prior should not be empty when exiting ConfigPatchrv   )rB  rC   r    ry   r\   r¥   )	r"   Úexc_typeÚexc_valÚexc_tbrF  rE  r  r  ri   s	           €r#   Ú__exit__z0ConfigModule.patch.<locals>.ConfigPatch.__exit__p  s—   ø€ Ø"œkŸošoÑ/Ô/�Ø"ð Ý(ØLñô ð ð $ Bœ�Ø”—’ ¨C¨R¨CÔ 0Ñ1Ô1Ð1Ø!ŸKšK™MœMð -ð -‘D�A�qØ×&Ò& q¨!Ñ,Ô,Ð,Ð,ð-ð -r%   r,   )r-   r.   r/   r–   rG  rL  )r@  ri   s   €€r#   ÚConfigPatchr=  Z  so   ø€ € € € € ðð ð ð ð ð ð ðð ð ð ð ð ð	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-r%   rM  )r(   r)   r    rÚ   r+   r:  )r"   r7  r8  r9  rM  r@  ri   s        @@r#   ÚpatchzConfigModule.patch%  s8  øø€ ð. ÐØÐÝ! $­Ñ,Ô,ð Ý(Øañô ð ð   ˜,��å! $­Ñ-Ô-ð Ý(Øeñô ð ð �Øð Ý$ØPñô ð ðð ˆGØÐÝ$Øbñô ð õ ˜'¥4Ñ(Ô(ð 	IÝ Ð!G½¸W¹¼Ð!GÐ!GÑHÔHÐHØˆð	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-Õ*ñ 	-ô 	-ð 	-ðB ˆ{‰}Œ}Ðr%   r@  c                 óH   ‡ ‡‡— ‰ 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                  ó  •‡— ˆfd„‰D ¦   «         Š‰                      ¦   «         D ]T\  } }‰|          j                             |¦  «         ‰j                             d¦  «         ‰                     | ¦  «         ŒUdˆˆˆfd„}|S )Nc                 óP   •— i | ]"}|‰|         j                              ¦   «         “Œ#S r5   )r�   rC   )r×   r  ri   s     €r#   ú
<dictcomp>zFConfigModule._make_closure_patcher.<locals>.change.<locals>.<dictcomp>’  s.   ø€ ÐGÐGÐG¸!�Q˜˜qœ	Ô/×3Ò3Ñ5Ô5ÐGÐGÐGr%   Tr   c                  óÚ   •— ‰                      ¦   «         D ]T\  } }‰|          j                             |¦  «         ‰j                             d¦  «         ‰                     | ¦  «         ŒUd S r´   ©r\   r�   ry   rK   r¨   )r  r  ri   rE  r"   s     €€€r#   ÚrevertzBConfigModule._make_closure_patcher.<locals>.change.<locals>.revert˜  sq   ø€ Ø!ŸKšK™MœMð 1ð 1‘D�A�qØ˜1”IÔ+×/Ò/°Ñ2Ô2Ð2ØÔ(×,Ò,¨TÑ2Ô2Ð2Ø×-Ò-¨aÑ0Ô0Ð0Ð0ð1ð 1r%   r,   rT  )r  r  rU  rE  r@  ri   r"   s      @€€€r#   Úchangez2ConfigModule._make_closure_patcher.<locals>.change‘  s°   øø€ ØGÐGÐGÐG¸wÐGÑGÔGˆEØŸš™œð -ð -‘��1Ø�q”	Ô'×+Ò+¨AÑ.Ô.Ð.ØÔ$×(Ò(¨Ñ.Ô.Ð.Ø×)Ò)¨!Ñ,Ô,Ð,Ð,ð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð ˆMr%   )ro   r   )r"   r@  rV  ri   s   `` @r#   Ú_make_closure_patcherz"ConfigModule._make_closure_patcher}  sM   øøø€ ð$ ”ˆð	�  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-  r3  r)  r6  rN  rW  Ú__classcell__©rq   s   @r#   rm   rm     s1  ø€ € € € € € ð �#�|Ð#Ô$Ð$Ð$Ñ$Ø�c”(ÐÐÑØ˜sœ8Ð#Ð#Ñ#Ø Ô%Ð%Ð%Ñ%Ø ¨¡Ô-Ð-Ð-Ñ-ð
 )¨¨S¬°D©Ô9Ð9Ð9Ñ9Ø# DÐ)9¸4ÀÀSÀ¼>Ð)IÔ$JÔKÐKÐKÑKð
ð 
ð 
ð 
ð

.¨ð 
.°\ð 
.Àdð 
.ð 
.ð 
.ð 
.ð$ ð $¨Fð $°tð $ð $ð $ð $ð $ð $ð$%R ð %R¨ð %Rð %Rð %Rð %RðN' ð '¨ð 'ð 'ð 'ð 'ð%Ø!ð%à	ˆz˜3ˆÔ	 $Ñ	&ð%ð %ð %ð %ð Lð °Sð ð ð ð ð, Lð ,°sð ,¸tð ,ð ,ð ,ð ,ð  "Ðð4¨ð 4°ð 4ð 4ð 4ð 4ðC ð C¨ð Cð Cð Cð Cð4 *.Ø-1Ø"Ø %ð^ð ^à˜3”i $Ñ&ð^ð ˜sœ) dÑ*ð^ð ð	^ð
 ð^ð 
ˆc�3ˆhŒð^ð ^ð ^ð ^ð@4 Cð 4¨Dð 4ð 4ð 4ð 4ð
˜Uð 
ð 
ð 
ð 
ð 15Èeðð ð Ø)-ðØGKðà	ˆc�3ˆhŒðð ð ð ð4A  ð A ð A ð A ð A ðF˜%ð ð ð ð ð( €Zð	8ð ð	ñ ô ð&˜˜c 3˜hœð &ð &ð &ñô ð&ð €Zð	8ð ð	ñ ô ð& 4¨¨S¨¤>ð &ð &ð &ñô ð&ðV°¸¸SÀ#¸X¼Ñ0Fð VÈ4ð Vð Vð Vð Vð   c¨3 h¤ð  ð  ð  ð  ðU¨d°3¸°8¬nð Uð Uð Uð Uð
 -1ØðVð Và�D˜˜c˜”NÑ" TÑ)ðVð ðVð �s˜C�x”.ð	Vð
 
ðVð Vð Vð Vðp#¨t°C¸°H¬~ð #À#ð #ð #ð #ð #ð #ð #ð #ð #r%   rm   c                   óR   ‡ — 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   Nc                 ó    — t          d¦  «        ‚©NÚNYI©r™   r!   s    r#   rG  zContextDecorator.__enter__©  ó   € Ý! %Ñ(Ô(Ð(r%   c                 ó    — t          d¦  «        ‚r^  r`  )r"   rI  rJ  rK  s       r#   rL  zContextDecorator.__exit__¬  ra  r%   rý   c                 ó  •‡ — t          |t          ¦  «        rPt          |t          j        ¦  «        r6 G ˆ fd„d|¦  «        }|j        |_        |j        |_        |j        |_        |S t          ¦   «          	                    |¦  «        S )Nc                   óR   •‡ — e Zd Zedˆ ˆfd„¦   «         Zedˆ ˆfd„¦   «         Zˆ xZS )ú,ContextDecorator.__call__.<locals>._TestCaser   Nc                 ó¾   •— ‰                      ¦   «          	 t          ¦   «                              ¦   «          d S # t          $ r ‰                     d d d ¦  «         ‚ w xY wr7   )rG  r¤   Ú
setUpClassrD  rL  ©Úclsrq   r"   s    €€r#   rg  z7ContextDecorator.__call__.<locals>._TestCase.setUpClass³  sh   ø€ à—N’NÑ$Ô$Ð$ðÝ™œ×*Ò*Ñ,Ô,Ð,Ð,Ð,øÝ$ð ð ð ØŸš d¨D°$Ñ7Ô7Ð7Øðøøøs	   — 9 ¹#Ac                 ó°   •— 	 t          ¦   «                              ¦   «          ‰                     d d d ¦  «         d S # ‰                     d d d ¦  «         w xY wr7   )r¤   ÚtearDownClassrL  rh  s    €€r#   rk  z:ContextDecorator.__call__.<locals>._TestCase.tearDownClass¼  sV   ø€ ð8Ý™œ×-Ò-Ñ/Ô/Ð/àŸš d¨D°$Ñ7Ô7Ð7Ð7Ð7ø˜Ÿš d¨D°$Ñ7Ô7Ð7Ð7øøøs	   ƒ < ¼Ar,   )r-   r.   r/   Úclassmethodrg  rk  rZ  )rq   r"   s   @€r#   Ú	_TestCasere  ²  s|   øø€ € € € € Øðð ð ð ð ð ñ ”ðð ð8ð 8ð 8ð 8ð 8ð 8ñ ”ð8ð 8ð 8ð 8ð 8r%   rm  )
r(   r+   r_   ÚunittestÚTestCaser-   r/   r.   r¤   Ú__call__)r"   rý   rm  rq   s   `  €r#   rp  zContextDecorator.__call__¯  s�   øø€ Ý�d�DÑ!Ô!ð 	¥j°µxÔ7HÑ&IÔ&Ið 	ð8ð 8ð 8ð 8ð 8ð 8ð 8˜Dñ 8ô 8ð 8ð" "&¤ˆIÔØ%)Ô%6ˆIÔ"Ø#'¤?ˆIÔ àÐå‰wŒw×Ò Ñ%Ô%Ð%r%   r,   )r-   r.   r/   r0   rG  r
   rL  r   r   rp  rZ  r[  s   @r#   r:  r:  £  s�   ø€ € € € € ðð ð
)ð )ð )ð )ð)°Xð )ð )ð )ð )ð&˜X s e¨S jÔ1ð &°cð &ð &ð &ð &ð &ð &ð &ð &ð &ð &r%   r:  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                 ó�   •— t          ¦   «                              d|¦  «         t          ¦   «                              d|¦  «         d S )Nro   Ú_prefix)r¤   r¥   )r"   ri   rR   rq   s      €r#   r–   zSubConfigProxy.__init__Ò  s=   ø€ å‰Œ×Ò˜I vÑ.Ô.Ð.Ý‰Œ×Ò˜I vÑ.Ô.Ð.Ð.Ð.r%   r;   rD   c                 óH   — | j                              | j        |z   |¦  «        S r7   )ro   r¥   rs  )r"   r;   rD   s      r#   r¥   zSubConfigProxy.__setattr__×  s!   € ØŒ|×'Ò'¨¬°tÑ(;¸UÑCÔCÐCr%   c                 óF   — | j                              | j        |z   ¦  «        S r7   )ro   r²   rs  rµ   s     r#   r²   zSubConfigProxy.__getattr__Ú  ó   € ØŒ|×'Ò'¨¬°tÑ(;Ñ<Ô<Ð<r%   c                 óF   — | j                              | j        |z   ¦  «        S r7   )ro   r¶   rs  rµ   s     r#   r¶   zSubConfigProxy.__delattr__Ý  rv  r%   )r-   r.   r/   r0   r1   r)   r–   r¥   r   r²   r¶   rZ  r[  s   @r#   rc   rc   Ì  sÐ   ø€ € € € € ðð ð
/˜vð /¨sð /°tð /ð /ð /ð /ð /ð /ð
D ð D¨Fð D°tð Dð Dð Dð Dð= ð =¨ð =ð =ð =ð =ð= ð =¨ð =ð =ð =ð =ð =ð =ð =ð =r%   rc   c                 ód   — t           j                             | ¦  «        }|dk    rdS |dk    rdS |S r=   r@   )r;   r   rD   s      r#   Úget_tristate_envry  á  s6   € ÝŒJ�NŠN˜4Ñ Ô €EØ�‚|€|ØˆtØ�‚|€|ØˆuØ€Nr%   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó¤   •— ‰j                              ¦   «         D ]4\  }}|                     d¦  «        s|| j         vrt          | ||¦  «         Œ5| S )Nrñ   )r[   r\   r]   rd   )Ú	child_clsr  r  Ú
parent_clss      €r#   Úwrapperz$inherit_fields_from.<locals>.wrapperë  s_   ø€ ØÔ'×-Ò-Ñ/Ô/ð 	)ð 	)‰DˆAˆqà—<’< Ñ$Ô$ð )¨°)Ô2DÐ)DÐ)DÝ˜	 1 aÑ(Ô(Ð(øØÐr%   r5   )r}  r~  s   ` r#   Úinherit_fields_fromr  ê  s#   ø€ ðð ð ð ð ð €Nr%   r7   )9Ú
contextlibr­   r  rº   rY   r{   rA   rì   rz   rn  Ú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   rY  ra   rm   r:  rc   ry  r  r5   r%   r#   ú<module>r‰     s  ðØ Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ (Ð (Ð (Ð (Ð (Ð (à 1Ð 1Ð 1Ð 1Ð 1Ð 1ð �U˜D $ $ t¡*¤*¨c°4¸¸eÀTÐJ€ð   t¨T¨T°$©Z¬Z¸¸eÐDÐ ð €GˆC�s˜U‘{ TÑ)¨CÑ/°$Ñ6¸Ñ<¸uÑDÀtÑKÈdÑRÐSÑSÔS€ð �&‘(”(€ð €�4ÐÑÔðOð Oð Oð Oð Oˆg�aŒjñ Oô 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ð Xð Xð Xðv ,Ð ð"¸*ð "ÈÈSÌð "ð "ð "ð "ðJ ˜˜s C˜xœ¨%°°S°¬/¸4Ð?Ô@Ð ð ðHð Hð Hð Hð Hñ Hô Hñ „ðHðVað að að að a�:ñ aô að aðH&&ð &&ð &&ð &&ð &&�zÔ2ñ &&ô &&ð &&ðR=ð =ð =ð =ð =ñ =ô =ð =ð*ð ˜3ð ¨ð ¸¸t¹ð ð ð ð ðð ð ð ð r%   