§
    ŠŠtjã  ã            o       ó	  — U 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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mZ d dlmZmZ d dlmZmZmZ d dlmZ d dl m!Z! d dl"Z#d dl$m%Z% d d	l&m'Z' d d
l(m)Z)  ed¦  «        Z* ej+        e,¦  «        Z- ej+        d¦  «        Z.ej/        Z0dZ1dZ2dZ3dZ4dZ5dZ6da7ed         e8d<   da9dZ:e G d„ d¦  «        ¦   «         Z;e G d„ d¦  «        ¦   «         Z< e;¦   «         Z= e<¦   «         a>ej?        ej?        ej?        ej?        dddddej?        dœ
Z@dddddddddddddddddddddddddddddddddddddddddddddddddddddddœ6deAdz  deAdz  d eAdz  d!eAdz  d"eAdz  d#eAdz  d$eAdz  d%eAdz  d&eAdz  d'eAdz  d(eAdz  d)eAdz  d*eBd+eBd,eBd-eBd.eBd/eBd0eBd1eBd2eBd3eBd4eBd5eBd6eBd7eBd8eBd9eBd:eBd;eBd<eBd=eBd>eBd?eBd@eBdAeBdBeBdCeBdDeBdEeAdz  dFeCeDeAeBz  f         dz  dGeBdHeBdIeBdJeBdKeBdLeBdMeBdNeBdOeBdPeBdQeBdReBdSeBdTdfndU„ZEdTeFejG                 fdV„ZHd™dW„ZI	 dš	 d™dX„ZJdTejG        fdY„ZKdZZLd[ZMd\d] N                     ejO        eL¦  «         ejO        eM¦  «        g¦  «        z   d^z   ZPd™d_„ZQd`„ ZRda„ ZSd›db„ZTd›dc„ZUddeDdTeDfde„ZVejW        df„ ¦   «         ZXdg„ ZYdheDdTeeD         dz  fdi„ZZd™dj„Z[dTeBfdk„Z\ejW        dleDdme]eDdnf         dTeDfdo„¦   «         Z^dleDdTeDfdp„Z_ G dq„ drej`        ¦  «        Zads„ Zb eb¦   «         Zcd™dt„Zd e!¦   «         Zedu„ Zfdv„ Zgd™dw„Zhd™dx„Zidy„ Zjd™dz„Zkdœd™d{„Zl G d|„ dejm        ¦  «        Znd™d}„Zoejp        d™d~„¦   «         Zqd�dTeBfd„Zr	 d�dTeBfd€„Zse jt        d�„ fd‚„¦   «         Zu G dƒ„ d„ee*         ¦  «        Zv eew¦  «        axeCeDewf         e8d…<   d†ewdTdfd‡„ZydTewdz  fdˆ„Zzd‰„ dfdŠeDd‹eDdŒeg eDe{z  dz  f         d�e%dz  dTdf
dŽ„Z|eCfd�„ ddddd�œdŠeDd‘eg eCeDef         e]eDeAf         z  f         dŒeg eDe{z  dz  f         d’eBd“eBd”eBd�e%dz  dTdfd•„Z}eCfd–„ dddd—œdŠeDd‘eg eCeDef         e]eDeAf         z  f         dŒeg eDe{z  dz  f         d’eBd“eBd”eBdTdfd˜„Z~d dl$Z#d dl&Z#d dlm€Z� d dl‚Z#dS )žé    N)Údefaultdict)ÚCallableÚSequence)Ú	dataclassÚfield)ÚAnyÚGenericÚOptional)Ú	ParamSpec)ÚWeakSet)Ú	CompileId)Úlog_trace_structured_event)ÚCapturedTracebackÚ_Pztorch.__traceÚ
TORCH_LOGSÚTORCH_LOGS_OUTÚTORCH_LOGS_FORMATÚTORCH_LOGS_TRACE_ID_FILTERÚTORCH_TRACEÚTORCH_DTRACEÚLazyTraceHandlerÚLOG_TRACE_HANDLERFÚdedicated_log_torch_trace_c                   ó  — e Zd ZU  ee¬¦  «        Zeeee         f         ed<    ee	¬¦  «        Z
e	e         ed<    ee	¬¦  «        Ze	e         ed<    ee	¬¦  «        Ze	e         ed<    ee	¬¦  «        Ze	e         ed<    ee¬¦  «        Zeeef         ed<    ee	¬¦  «        Ze	e         ed<    ee¬¦  «        Zeeej        f         ed	<   d
„ Zd„ Zdeee         z  ddfd„Z	 	 dd„Zdd„Zdd„Zde	e         fd„Zd„ Zd„ Zd„ ZdS )ÚLogRegistry©Údefault_factoryÚlog_alias_to_log_qnamesÚartifact_log_qnamesÚchild_log_qnamesÚartifact_namesÚvisible_artifactsÚartifact_descriptionsÚoff_by_default_artifact_namesÚartifact_log_formattersc                 ó   — || j         v S ©N©r!   ©ÚselfÚnames     úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_logging/_internal.pyÚis_artifactzLogRegistry.is_artifactf   ó   € Ø�tÔ*Ð*Ð*ó    c                 ó   — || j         v S r'   )r   )r*   Úaliass     r,   Úis_logzLogRegistry.is_logi   s   € Ø˜Ô4Ð4Ð4r/   Ú
log_qnamesÚreturnNc                 óJ   — t          |t          ¦  «        r|g}|| j        |<   d S r'   )Ú
isinstanceÚstrr   )r*   r1   r3   s      r,   Úregister_logzLogRegistry.register_logm   s.   € Ý�j¥#Ñ&Ô&ð 	&Ø$˜ˆJØ.8ˆÔ$ UÑ+Ð+Ð+r/   c                 óþ   — | j                              |¦  «         |r| j                             |¦  «         || j        |<   |r| j                             |¦  «         |�t          j        |¦  «        | j        |<   d S d S r'   )r!   Úaddr"   r#   r$   ÚloggingÚ	Formatterr%   )r*   r+   ÚdescriptionÚvisibleÚoff_by_defaultÚ
log_formats         r,   Úregister_artifact_namez"LogRegistry.register_artifact_names   s”   € ð 	Ô×Ò Ñ%Ô%Ð%Øð 	-ØÔ"×&Ò& tÑ,Ô,Ð,Ø+6ˆÔ" 4Ñ(ð ð 	9ØÔ.×2Ò2°4Ñ8Ô8Ð8àÐ!Ý18Ô1BÀ:Ñ1NÔ1NˆDÔ(¨Ñ.Ð.Ð.ð "Ð!r/   c                 ó:   — | j                              |¦  «         d S r'   )r   r:   )r*   Úartifact_log_qnames     r,   Úregister_artifact_logz!LogRegistry.register_artifact_log†   s    € ØÔ ×$Ò$Ð%7Ñ8Ô8Ð8Ð8Ð8r/   c                 ó:   — | j                              |¦  «         d S r'   )r    r:   )r*   Ú	log_qnames     r,   Úregister_child_logzLogRegistry.register_child_log‰   s   € ØÔ×!Ò! )Ñ,Ô,Ð,Ð,Ð,r/   c                 óˆ   — t          t          j                             | j                             ¦   «         ¦  «        ¦  «        S r'   )ÚsetÚ	itertoolsÚchainÚfrom_iterabler   Úvalues©r*   s    r,   Úget_log_qnameszLogRegistry.get_log_qnames�   s/   € Ý•9”?×0Ò0°Ô1M×1TÒ1TÑ1VÔ1VÑWÔWÑXÔXÐXr/   c                 ó*   — t          | j        ¦  «        S r'   )rI   r   rN   s    r,   Úget_artifact_log_qnamesz#LogRegistry.get_artifact_log_qnames�   s   € Ý�4Ô+Ñ,Ô,Ð,r/   c                 ó*   — t          | j        ¦  «        S r'   )rI   r    rN   s    r,   Úget_child_log_qnamesz LogRegistry.get_child_log_qnames“   s   € Ý�4Ô(Ñ)Ô)Ð)r/   c                 ó   — || j         v S r'   )r$   )r*   Úartifact_qnames     r,   Úis_off_by_defaultzLogRegistry.is_off_by_default–   s   € Ø Ô!CÐCÐCr/   ©r4   N)Ú__name__Ú
__module__Ú__qualname__r   Údictr   r7   ÚlistÚ__annotations__rI   r   r    r!   r"   r#   r$   r%   r;   r<   r-   r2   r8   rA   rD   rG   rO   rQ   rS   rV   © r/   r,   r   r   @   s4  € € € € € € ð 5:°EÈ$Ð4OÑ4OÔ4OÐ˜T # t¨C¤y .Ô1ÐOÐOÑOð %* E¸#Ð$>Ñ$>Ô$>Ð˜˜SœÐ>Ð>Ñ>ð "' °sÐ!;Ñ!;Ô!;Ð�c˜#”hÐ;Ð;Ñ;ð  %˜u°SÐ9Ñ9Ô9€N�C˜”HÐ9Ð9Ñ9ð #( %¸Ð"<Ñ"<Ô"<Ð�s˜3”xÐ<Ð<Ñ<ð -2¨EÀ$Ð,GÑ,GÔ,GÐ˜4  S œ>ÐGÐGÑGð
 /4¨eÀCÐ.HÑ.HÔ.HÐ! 3 s¤8ÐHÐHÑHð =B¸EÐRVÐ<WÑ<WÔ<WÐ˜T # wÔ'8Ð"8Ô9ÐWÐWÑWð+ð +ð +ð5ð 5ð 5ð9¨c°D¸´I©oð 9À$ð 9ð 9ð 9ð 9ðOà	ðOð Oð Oð Oð&9ð 9ð 9ð 9ð-ð -ð -ð -ðY  C¤ð Yð Yð Yð Yð-ð -ð -ð*ð *ð *ðDð Dð Dð Dð Dr/   r   c                   ó”   — e Zd ZU  ee¬¦  «        Zeeef         ed<    ee¬¦  «        Z	ee         ed<   dd„Z
d„ Zdd„Zd	„ Zdd
„ZdS )ÚLogStater   Úlog_qname_to_levelr!   r4   Nc                 ó:   — | j                              |¦  «         d S r'   )r!   r:   )r*   Úartifact_names     r,   Úenable_artifactzLogState.enable_artifact¢   s   € ØÔ×Ò Ñ.Ô.Ð.Ð.Ð.r/   c                 ó   — || j         v S r'   r(   r)   s     r,   Úis_artifact_enabledzLogState.is_artifact_enabled¥   r.   r/   c                 óT   — t          |t          ¦  «        r|g}|D ]}|| j        |<   Œd S r'   )r6   r7   ra   )r*   r3   Ú	log_levelrF   s       r,   Ú
enable_logzLogState.enable_log¨   sD   € Ý�j¥#Ñ&Ô&ð 	&Ø$˜ˆJØ#ð 	;ð 	;ˆIØ1:ˆDÔ# IÑ.Ð.ð	;ð 	;r/   c                 ó4   — | j                              ¦   «         S )aÅ  Returns all qualified module names for which the user requested
        explicit logging settings.

        .. warning:

            This function used to return all loggers, regardless of whether
            or not the user specified them or not; it now only returns logs
            which were explicitly mentioned by the user (and torch, which
            always is implicitly requested when we initialize our logging
            subsystem.)
        )ra   ÚitemsrN   s    r,   Úget_log_level_pairszLogState.get_log_level_pairs®   s   € ð Ô&×,Ò,Ñ.Ô.Ð.r/   c                 ój   — | j                              ¦   «          | j                             ¦   «          d S r'   )ra   Úclearr!   rN   s    r,   rn   zLogState.clear¼   s2   € ØÔ×%Ò%Ñ'Ô'Ð'ØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#r/   rW   )rX   rY   rZ   r   r[   ra   r7   r]   rI   r!   rd   rf   ri   rl   rn   r^   r/   r,   r`   r`   š   s»   € € € € € € ð */¨¸tÐ)DÑ)DÔ)DÐ˜˜S #˜XœÐDÐDÑDð  %˜u°SÐ9Ñ9Ô9€N�C˜”HÐ9Ð9Ñ9ð/ð /ð /ð /ð+ð +ð +ð;ð ;ð ;ð ;ð/ð /ð /ð$ð $ð $ð $ð $ð $r/   r`   T)
ÚdynamoÚaotÚinductorÚfsdpÚ
ddp_graphsÚgraph_breaksÚside_effectsÚguardsÚ
recompilesÚdynamic)6Úallro   rp   Úautogradrx   rq   ÚdistributedÚc10dÚddprr   ÚdtensorÚonnxÚbytecodeÚ
aot_graphsÚaot_joint_graphrs   ÚgraphÚ
graph_codeÚgraph_code_verbosert   ru   Úgraph_sizesrv   rw   Úrecompiles_verboseÚtrace_sourceÚ
trace_callÚtrace_bytecodeÚoutput_codeÚkernel_codeÚscheduleÚ
perf_hintsÚpre_grad_graphsÚpost_grad_graphsÚir_pre_fusionÚir_post_fusionÚonnx_diagnosticsÚfusionÚoverlapÚexportÚmodulesÚ
cudagraphsÚsym_nodeÚcompiled_autogradÚcompiled_autograd_verboseÚcudagraph_static_inputsÚbenchmarkingÚ
autotuningÚincrementalÚgraph_region_expansionÚinductor_metricsÚhierarchical_compileÚcompute_dependenciesÚcachingry   ro   rp   rz   rx   rq   r{   r|   r}   rr   r~   r   r€   r�   r‚   rs   rƒ   r„   r…   rt   ru   r†   rv   rw   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r¤   r4   c        6         óö  ‡(— t           t          j        v rt                               d¦  «         dS t
                               ¦   «          ‰(pi Š(d:ˆ(fd„}6 |6d;i d| “d|“d|“d|“d	|“d
|“d|“d|“d|“d|“d|“d|“d|“d|	“d|
“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d |“d!|“d"|“d#|“d$| “d%|!“d&|"“d'|#“d(|“d)|$“d*|%“d+|&“d,|*“d-|'“d.|)“d/|+“d0|,“d1|-“d2|.“d3|/“d4|0“d5|1“d6|2“d7|3“d8|4“d9|5“Ž dS )<ac&  
    Sets the log level for individual components and toggles individual log
    artifact types.

    .. warning:: This feature is a prototype and may have compatibility
        breaking changes in the future.

    .. note:: The ``TORCH_LOGS`` environment variable has complete precedence
        over this function, so if it was set, this function does nothing.

    A component is a set of related features in PyTorch. All of the log
    messages emitted from a given component have their own log levels. If the
    log level of a particular message has priority greater than or equal to its
    component's log level setting, it is emitted. Otherwise, it is suppressed.
    This allows you to, for instance, silence large groups of log messages that
    are not relevant to you and increase verbosity of logs for components that
    are relevant. The expected log level values, ordered from highest to lowest
    priority, are:

        * ``logging.CRITICAL``
        * ``logging.ERROR``
        * ``logging.WARNING``
        * ``logging.INFO``
        * ``logging.DEBUG``
        * ``logging.NOTSET``

    See documentation for the Python ``logging`` module for more information on
    log levels: `<https://docs.python.org/3/library/logging.html#logging-levels>`_

    An artifact is a particular type of log message. Each artifact is assigned
    to a parent component. A component can emit many different kinds of
    artifacts. In general, an artifact is emitted if either its corresponding
    setting in the argument list below is turned on or if its parent component
    is set to a log level less than or equal to the log level of the artifact.

    Keyword args:
        all (:class:`Optional[int]`):
            The default log level for all components. Default: ``logging.WARN``

        dynamo (:class:`Optional[int]`):
            The log level for the TorchDynamo component. Default: ``logging.WARN``

        aot (:class:`Optional[int]`):
            The log level for the AOTAutograd component. Default: ``logging.WARN``

        autograd (:class:`Optional[int]`):
            The log level for autograd. Default: ``logging.WARN``

        inductor (:class:`Optional[int]`):
            The log level for the TorchInductor component. Default: ``logging.WARN``

        dynamic (:class:`Optional[int]`):
            The log level for dynamic shapes. Default: ``logging.WARN``

        distributed (:class:`Optional[int]`):
            Whether to log c10d communication operations and other debug info from PyTorch Distributed components.
            Default: ``logging.WARN``

        c10d (:class:`Optional[int]`):
            Whether to log c10d communication operations related debug info in PyTorch Distributed components.
            Default: ``logging.WARN``

        ddp (:class:`Optional[int]`):
            Whether to log debug info related to ``DistributedDataParallel``(DDP) from PyTorch Distributed components.
            Default: ``logging.WARN``

        fsdp (:class:`Optional[int]`):
            Whether to log debug info related to ``FullyShardedDataParallel``(FSDP) in PyTorch Distributed components.
            Default: ``logging.WARN``

        dtensor (:class:`Optional[int]`):
            Whether to log debug info related to ``DTensor``(DTensor) in PyTorch Distributed components.
            Default: ``logging.WARN``

        onnx (:class:`Optional[int]`):
            The log level for the ONNX exporter component. Default: ``logging.WARN``

        bytecode (:class:`bool`):
            Whether to emit the original and generated bytecode from TorchDynamo.
            Default: ``False``

        aot_graphs (:class:`bool`):
            Whether to emit the graphs generated by AOTAutograd. Default: ``False``

        aot_joint_graph (:class:`bool`):
            Whether to emit the joint forward-backward graph generated by AOTAutograd. Default: ``False``

        ddp_graphs (:class:`bool`):
            Whether to emit graphs generated by DDPOptimizer. Default: ``False``

        graph (:class:`bool`):
            Whether to emit the graph captured by TorchDynamo in tabular format.
            Default: ``False``

        graph_code (:class:`bool`):
            Whether to emit the python source of the graph captured by TorchDynamo.
            Default: ``False``

        graph_code_verbose (:class:`bool`):
            Whether to emit verbose/intermediate FX pass logs for graph code. Default: ``False``

        graph_breaks (:class:`bool`):
            Whether to emit the graph breaks encountered by TorchDynamo.
            Default: ``False``

        side_effects (:class:`bool`):
            Whether to emit side effects (mutations, hooks, etc.) that TorchDynamo
            codegenerates in the output graph. Default: ``False``

        graph_sizes (:class:`bool`):
            Whether to emit tensor sizes of the graph captured by TorchDynamo.
            Default: ``False``

        guards (:class:`bool`):
            Whether to emit the guards generated by TorchDynamo for each compiled
            function. Default: ``False``

        recompiles (:class:`bool`):
            Whether to emit a guard failure reason and message every time
            TorchDynamo recompiles a function. Default: ``False``

        recompiles_verbose (:class:`bool`):
            Whether to emit all guard failure reasons when TorchDynamo recompiles
            a function, even those that are not actually run. Default: ``False``

        trace_source (:class:`bool`):
            Whether to emit when TorchDynamo begins tracing a new line. Default: ``False``

        trace_call (:class:`bool`):
            Whether to emit detailed line location when TorchDynamo creates an FX node
            corresponding to function call. Python 3.11+ only. Default: ``False``

        trace_bytecode (:class:`bool`):
            Whether to emit bytecode instructions and traced stack state as TorchDynamo
            traces bytecode. Default: ``False``

        output_code (:class:`bool`):
            Whether to emit the TorchInductor output code on a per-graph basis. Default: ``False``

        kernel_code (:class:`bool`):
            Whether to emit the TorchInductor output code on a per-kernel basis. Default: ``False``

        schedule (:class:`bool`):
            Whether to emit the TorchInductor schedule. Default: ``False``

        perf_hints (:class:`bool`):
            Whether to emit the TorchInductor perf hints. Default: ``False``

        pre_grad_graphs (:class:`bool`):
            Whether to emit the graphs before inductor grad passes. Default: ``False``

        post_grad_graphs (:class:`bool`):
            Whether to emit the graphs generated by after post grad passes. Default: ``False``

        ir_pre_fusion (:class:`bool`):
            Whether to emit the graphs before inductor fusion passes. Default: ``False``

        ir_post_fusion (:class:`bool`):
            Whether to emit the graphs after inductor fusion passes. Default: ``False``

        onnx_diagnostics (:class:`bool`):
            Whether to emit the ONNX exporter diagnostics in logging. Default: ``False``

        fusion (:class:`bool`):
            Whether to emit detailed Inductor fusion decisions. Default: ``False``

        overlap (:class:`bool`):
            Whether to emit detailed Inductor compute/comm overlap decisions. Default: ``False``

        sym_node (:class:`bool`):
            Whether to emit debug info for various SymNode operations. Default: ``False``

        export (:class:`Optional[int]`):
            The log level for export. Default: ``logging.WARN``

        benchmarking (:class:`bool`):
            Whether to emit detailed Inductor benchmarking information. Default: ``False``

        modules (dict):
            This argument provides an alternate way to specify the above log
            component and artifact settings, in the format of a keyword args
            dictionary given as a single argument. There are two cases
            where this is useful (1) if a new log component or artifact has
            been registered but a keyword argument for it has not been added
            to this function and (2) if the log level for an unregistered module
            needs to be set. This can be done by providing the fully-qualified module
            name as the key, with the log level as the value. Default: ``None``

        cudagraph_static_inputs (:class:`bool`):
            Whether to emit debug info for cudagraph static input detection. Default: ``False``

        autotuning (:class:`bool`):
            Autotuning choice logs, such as kernel source, perf, and tuning parameters. Default: ``False``

        incremental (:class:`bool`):
            Incremental autotuning logs. Default: ``False``

        graph_region_expansion (:class:`bool`):
            Whether to emit the detailed steps of the duplicate graph region tracker expansion algorithm. Default: ``False``

        inductor_metrics (:class:`bool`):
            Whether to estimate the runtimes of the nodes in a graph and log them to the metrics table. Default: ``False``

        hierarchical_compile (:class:`bool`):
            Whether to emit debug info for hierarchical compilation. Default: ``False``

        caching (:class:`bool`):
            Whether to emit detailed Inductor caching information. Default: ``False``

    Example::

        >>> # xdoctest: +SKIP
        >>> import logging

        # The following changes the "dynamo" component to emit DEBUG-level
        # logs, and to emit "graph_code" artifacts.

        >>> torch._logging.set_logs(dynamo=logging.DEBUG, graph_code=True)

        # The following enables the logs for a different module

        >>> torch._logging.set_logs(modules={"unregistered.module.name": logging.DEBUG})
    zQUsing TORCH_LOGS environment variable for log settings, ignoring call to set_logsNr4   c                  ó:  •— t          j        |                      ¦   «         ‰                     ¦   «         ¦  «        D �]Ð\  }}|€Œ	t                               |¦  «        rGt          |t          ¦  «        st          d|› d|› �¦  «        ‚|rt           	                    |¦  «         Œjt           
                    |¦  «        s|t          j        v rˆ|t          j        vr?t          d|› d|› dd                     d„ t          j        D ¦   «         ¦  «        › �¦  «        ‚t                               t          j                             ||¦  «        |¦  «         �Œt%          |¦  «        r—t'          |¦  «        p|f}|D ]€}t)          |¦  «        st                               ||¦  «         nt                               |¦  «         t                               t          j                             ||¦  «        |¦  «         Œ��ŒÀt          d|› �¦  «        ‚t/          ¦   «          d S )	Nz!Expected bool to enable artifact z, received zUnrecognized log level for log z: z, valid level values are: ú,c                 ó,   — g | ]}t          |¦  «        ‘ŒS r^   ©r7   )Ú.0Úks     r,   ú
<listcomp>z/set_logs.<locals>._set_logs.<locals>.<listcomp>  s   € Ð)OÐ)OÐ)O°Q­#¨a©&¬&Ð)OÐ)OÐ)Or/   z6Unrecognized log or artifact name passed to set_logs: )rJ   rK   rk   Úlog_registryr-   r6   ÚboolÚ
ValueErrorÚ	log_staterd   r2   r    r;   Ú_levelToNameÚjoinri   r   ÚgetÚ_is_valid_moduleÚ_get_module_and_submodulesÚ_has_registered_parentr8   rG   Ú
_init_logs)Úkwargsr1   ÚvalÚfound_modulesÚmodule_namer—   s        €r,   Ú	_set_logszset_logs.<locals>._set_logsö  sR  ø€ Ý#œ/¨&¯,ª,©.¬.¸'¿-º-¹/¼/ÑJÔJð &	ñ &	‰JˆE�3Øˆ{Øå×'Ò'¨Ñ.Ô.ð "Ý! #¥tÑ,Ô,ð Ý$ØS¸EÐSÐSÈcÐSÐSñô ð ð ð 5Ý×-Ò-¨eÑ4Ô4Ð4øÝ×$Ò$ UÑ+Ô+ð ¨u½Ô8UÐ/UÐ/UØ�gÔ2Ð2Ð2Ý$ðS¸%ð Sð SÀ3ð Sð SØ #§¢Ð)OÐ)O½'Ô:NÐ)OÑ)OÔ)OÑ PÔ PðSð Sñô ð õ
 ×$Ò$Ý Ô8×<Ò<¸UÀEÑJÔJÈCñô ð ñ õ " %Ñ(Ô(ð Ý :¸5Ñ AÔ AÐ MÀeÀX�Ø#0ð 
ð 
�KÝ1°+Ñ>Ô>ð EÝ$×1Ò1°+¸{ÑKÔKÐKÐKå$×7Ò7¸ÑDÔDÐDÝ×(Ò(Ý$Ô<×@Ò@Ø'¨ñô ð ñ	ô ð ð ñ
õ !ØTÈUÐTÐTñô ð õ 	‰Œˆˆˆr/   Útorchro   rp   rz   rq   rx   r€   r�   r‚   rs   r{   r|   r}   rr   r~   rƒ   r„   r…   rt   ru   r†   rv   rw   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r   r“   r”   r•   r™   r–   r˜   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r¤   rW   r^   )ÚLOG_ENV_VARÚosÚenvironÚlogÚwarningr°   rn   )7ry   ro   rp   rz   rx   rq   r{   r|   r}   rr   r~   r   r€   r�   r‚   rs   rƒ   r„   r…   rt   ru   r†   rv   rw   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r¤   r¼   s7                                           `              r,   Úset_logsrÃ   Ó   s?  ø€ õr •b”jÐ Ð Ý�ŠØ_ñ	
ô 	
ð 	
ð 	ˆå‡O‚OÑÔÐàˆm˜€Gð)ð )ð )ð )ð )ð )ðV €Ið 6ð 6ð 6Øˆcð6àˆvð6ð ˆCð6ð �ð	6ð
 �ð6ð �ð6ð �ð6ð �:ð6ð (˜ð6ð �:ð6ð  �Kð6ð ˆTð6ð ˆCð6ð ˆTð6ð �ð6ð  ˆeð!6ð" �:ð#6ð$ .Ð-ð%6ð& "�\ð'6ð( "�\ð)6ð*  �Kð+6ð, ˆvð-6ð. �:ð/6ð0 .Ð-ð16ð2 "�\ð36ð4 �:ð56ð6 &�~ð76ð8  �Kð96ð:  �Kð;6ð< �ð=6ð> �:ð?6ð@ (˜ðA6ðB *Ð)ðC6ðD $�mðE6ðF &�~ðG6ðH ˆTðI6ðJ *Ð)ðK6ðL ˆvðM6ðN �ðO6ðP �ðQ6ðR ˆvðS6ðT �:ðU6ðV ,Ð+ðW6ðX #<Ð";ðY6ðZ !8Ð 7ð[6ð\ "�\ð]6ð^ �:ð_6ð`  �Kða6ðb  6Ð5ðc6ðd *Ð)ðe6ðf 2Ð1ðg6ðh 2Ð1ði6ðj �ðk6ð 6ð 6ð 6r/   c                  óH   — d„ t                                ¦   «         D ¦   «         S )z3
    Returns: a list of all registered loggers
    c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r^   )r;   Ú	getLogger)rª   Úqnames     r,   r¬   zget_loggers.<locals>.<listcomp>^  s#   € ÐPÐPÐP¨�GÔ˜eÑ$Ô$ÐPÐPÐPr/   )r­   rO   r^   r/   r,   Úget_loggersrÈ   Z  s%   € ð QÐPµ,×2MÒ2MÑ2OÔ2OÐPÑPÔPÐPr/   c                 ó<   — t                                | |¦  «         dS )zø
    Enables a log to be controlled by the env var and user API with the setting_name
    Args:
        setting_name:  the shorthand name used in the env var and user API
        log_name:  the log name that the setting_name is associated with
    N)r­   r8   )Úsetting_nameÚlog_names     r,   r8   r8   a  s    € õ ×Ò˜l¨HÑ5Ô5Ð5Ð5Ð5r/   c                 óB   — t                                | ||||¦  «         dS )aŸ  
    Enables an artifact to be controlled by the env var and user API with name
    Args:
        setting_name: the shorthand name used in the env var and user API
        description: A description of what this outputs
        visible: Whether it gets suggested to users by default
        off_by_default: whether this artifact should be logged when the ancestor loggers
            are enabled at level DEBUG
    N)r­   rA   )rÊ   r=   r>   r?   r@   s        r,   Úregister_artifactrÍ   k  s1   € õ ×'Ò'Ø�k 7¨N¸Jñô ð ð ð r/   c                 ó  — |t           j        vr0t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚| d|› �z   }t	          j        |¦  «        }||_        t                                |¦  «         t          |¦  «         |S )NzArtifact name: z. not registered,please call register_artifact(z") in torch._logging.registrations.z.__)	r­   r!   r¯   Úreprr;   rÆ   rc   rD   Úconfigure_artifact_log)Úmodule_qnamerc   rÇ   rÁ   s       r,   ÚgetArtifactLoggerrÒ   |  s¯   € Ø�LÔ7Ð7Ð7Ýðe�d =Ñ1Ô1ð eð eÝ-1°-Ñ-@Ô-@ðeð eð eñ
ô 
ð 	
ð Ð0 Ð0Ð0Ñ0€EÝ
Ô
˜EÑ
"Ô
"€CØ%€CÔÝ×&Ò& uÑ-Ô-Ð-Ý˜3ÑÔÐØ€Jr/   ú+ú-ú(ú|z?)c                 óà   — t                                | j        ¦  «        rd| _        t                               | j        ¦  «        r(|                      t          j        ¦  «         d| _        d S d S ©NFT)	r­   rV   rc   Ú	propagater°   rf   ÚsetLevelr;   ÚDEBUG)rÁ   s    r,   rÐ   rÐ   “  sh   € õ ×%Ò% cÔ&7Ñ8Ô8ð ØˆŒõ ×$Ò$ SÔ%6Ñ7Ô7ð Ø�Š•W”]Ñ#Ô#Ð#ØˆŒˆˆðð r/   c                  ó*   — t          j        d¦  «        S )Nz$((\+|-)?[\w\.]+,\s*)*(\+|-)?[\w\.]+?)ÚreÚcompiler^   r/   r,   Ú_gen_settings_regexrß   ¡  s   € ÝŒ:Ð=Ñ>Ô>Ð>r/   c                 óH   — t          j        t          ¦   «         | ¦  «        d uS r'   )rÝ   Ú	fullmatchrß   )Úsettingss    r,   Ú_validate_settingsrã   ¥  s    € ÝŒ<Õ+Ñ-Ô-¨xÑ8Ô8ÀÐDÐDr/   c                 ó6  ‡— dd„Š| rt           j        }nt           j        }| rd}nd}dgt          t           j                             ¦   «         ¦  «        z   t          ˆfd„|D ¦   «         ¦  «        z   }dd                     |¦  «        z   }d	}d
|› d|› d|› d�}|S )Né   c                 óœ   — t          | ¦  «        |k    r"t          dt          | ¦  «        › d|› �¦  «        ‚| d|t          | ¦  «        z
  z  z   S )Nzstring length z exceeds max ú )ÚlenÚAssertionError)ÚsÚlengths     r,   Úpad_tozhelp_message.<locals>.pad_toª  sP   € Ýˆq‰6Œ6�FŠ?ˆ?Ý Ð!Oµ#°a±&´&Ð!OÐ!OÀvÐ!OÐ!OÑPÔPÐPØ�3˜&¥3 q¡6¤6™/Ñ*Ñ*Ð*r/   zAll registered namesz?Visible registered names (use TORCH_LOGS='+help' for full list)ry   c                 óP   •— g | ]"} ‰|¦  «        › d t           j        |         › �‘Œ#S )ú	)r­   r#   )rª   r+   rì   s     €r,   r¬   z help_message.<locals>.<listcomp>»  sG   ø€ ð ð ð àð �6˜$‘<”<ÐMÐM¥<Ô#EÀdÔ#KÐMÐMðð ð r/   z  z
  a@  
Examples:
  TORCH_LOGS="+dynamo,aot" will set the log level of TorchDynamo to
  logging.DEBUG and AOT to logging.INFO

  TORCH_LOGS="-dynamo,+inductor" will set the log level of TorchDynamo to
  logging.ERROR and TorchInductor to logging.DEBUG

  TORCH_LOGS="aot_graphs" will enable the aot_graphs artifact

  TORCH_LOGS="+dynamo,schedule" will enable set the log level of TorchDynamo
  to logging.DEBUG and enable the schedule artifact

  TORCH_LOGS="+some.random.module,schedule" will set the log level of
  some.random.module to logging.DEBUG and enable the schedule artifact

  TORCH_LOGS="+torch._functorch._aot_autograd" will set the log level of
  torch._functorch._aot_autograd and all its submodules to logging.DEBUG
  (directory-based logging)

  TORCH_LOGS_FORMAT="%(levelname)s: %(message)s" or any provided format
  string will set the output format
  Valid keys are "levelname", "message", "pathname", "levelno", "lineno",
  "filename" and "name".

  TORCH_LOGS_OUT=/tmp/output.txt will output the logs to /tmp/output.txt as
  well. This is useful when the output is long.
z
TORCH_LOGS Info
z

ú
)rå   )r­   r!   r"   Úsortedr   Úkeysr²   )ÚverboseÚprinted_artifactsÚheadingÚlinesÚsetting_infoÚexamplesÚmsgrì   s          @r,   Úhelp_messagerù   ©  s	  ø€ ð+ð +ð +ð +ð
 ð ;Ý(Ô7ÐÐå(Ô:ÐØð TØ(ˆˆàSˆà	ˆÝ
•Ô5×:Ò:Ñ<Ô<Ñ
=Ô
=ñ	>å
ðð ð ð à-ðñ ô ñ
ô 
ñ	
ð 
ð ˜&Ÿ+š+ eÑ,Ô,Ñ,€Lð€Hð8à	ðð ð 	ð	ð ð
 ðð ð €Cð €Jr/   c                 óî   — dgt          t          j                             ¦   «         ¦  «        z   t          t          j        ¦  «        z   }d                     t          |¦  «        ¦  «        }d| › d|› d�}|S )Nry   z, z
Invalid log settings: z¾, must be a comma separated list of fully
qualified module names, registered log names or registered artifact names.
For more info on various settings, try TORCH_LOGS="help"
Valid settings:
rï   )r\   r­   r   rñ   r!   r²   rð   )râ   rò   Úvalid_settingsrø   s       r,   Ú_invalid_settings_err_msgrü   è  sˆ   € à	ˆÝ
�|Ô3×8Ò8Ñ:Ô:Ñ
;Ô
;ñ	<å
�|Ô*Ñ
+Ô
+ñ	,ð ð
 —Y’Y�v nÑ5Ô5Ñ6Ô6€NðØðð ð
 ðð ð €Cð €Jr/   Úenv_var_strc                 ód   — t           j        dk    }dt          dt          fd„}|r || ¦  «        } | S )ae  
    When we setup logging config as guide: https://docs.pytorch.org/docs/stable/logging.html
    Such as:
        TORCH_LOGS="+schedule,+inductor,+output_code"

    On Linux, it shows as:
        declare -x SSH_TTY="/dev/pts/0"
        declare -x TERM="xterm"
        declare -x TORCH_LOGS="+schedule,+inductor,+output_code"
        declare -x USER="xu"

    On Windows, it shows as:
        TORCHINDUCTOR_WINDOWS_TESTS=1
        TORCH_LOGS="+schedule,+inductor,+output_code"
        UCRTVersion=10.0.22000.0

    For Linux, it shows quotes by default, And Windows is not shows quotes.
    Besides that, Windows would auto assemble quotes when env var processing.
    On Linux, we will get variable: "+schedule,+inductor,+output_code"
    On Windows, we will get variable: '"+schedule,+inductor,+output_code"'

    So, we need remove the outer quotes for Windows.
    Úwin32rê   r4   c                 ó    — t          | ¦  «        dk    r:| d         dk    r| d         dk    s| d         dk    r| d         dk    r
| dd…         S | S )Né   r   ú"éÿÿÿÿú'é   )rè   )rê   s    r,   Úremove_outer_quotesz?process_env_var_string_for_windows.<locals>.remove_outer_quotes  sT   € Ýˆq‰6Œ6�QŠ;ˆ;ØˆqŒT�SŠ[ˆ[˜Q˜rœU cš\˜\¨q°¬t°sª{¨{¸qÀ¼uÈº|¸|à�Q�r�T”7ˆNØˆr/   )ÚsysÚplatformr7   )rý   Ú_IS_WINDOWSr  s      r,   Ú"process_env_var_string_for_windowsr
  ù  sR   € õ0 ”, 'Ò)€Kð�sð ¥sð ð ð ð ð ð 7Ø)Ð)¨+Ñ6Ô6ˆàÐr/   c                 ó
  — t          | ¦  «        } | dk    ri S | dk    rt          t          d¬¦  «        ¦  «        ‚| dk    rt          t          d¬¦  «        ¦  «        ‚t          | ¦  «        st          t	          | ¦  «        ¦  «        ‚t          j        dd| ¦  «        } |                      d¦  «        }d	„ }t          ¦   «         }|D �]:} ||¦  «        \  }}|d
k    rd}t           
                    |¦  «        r:|€t          d¦  «        ‚t          j        |         }|                     ||¦  «         Œmt                               |¦  «        r|                     |¦  «         Œ�t!          |¦  «        rtt#          |¦  «        p|f}|D ]]}t%          |¦  «        st                               ||¦  «         nt                               |¦  «         |                     ||¦  «         Œ^�Œ t          t	          | ¦  «        ¦  «        ‚|S )NÚ ÚhelpF)rò   z+helpTz\s+r§   c                 ó  — |                       t          d¦  «        }|                      t          d¦  «        }| d         t          k    rt          j        }n*| d         t          k    rt          j        }nt          j        }||fS )Nr  r   )ÚreplaceÚINCR_VERBOSITY_CHARÚDECR_VERBOSITY_CHARr;   rÛ   ÚERRORÚINFO)r+   Ú
clean_nameÚlevels      r,   Úget_name_level_pairz0_parse_log_settings.<locals>.get_name_level_pair1  sp   € Ø—\’\Õ"5°rÑ:Ô:ˆ
Ø×'Ò'Õ(;¸RÑ@Ô@ˆ
à�Œ7Õ)Ò)Ð)Ý”MˆEˆEØ�!ŒWÕ+Ò+Ð+Ý”MˆEˆEå”LˆEà˜5Ð Ð r/   ry   r½   z#level must not be None for log name)r
  r¯   rù   rã   rü   rÝ   ÚsubÚsplitr`   r­   r2   ré   r   ri   r-   rd   r´   rµ   r¶   r8   rG   )	râ   Ú	log_namesr  r°   r+   r  r3   rº   r»   s	            r,   Ú_parse_log_settingsr     s+  € å1°(Ñ;Ô;€Hà�2‚~€~Øˆ	à�6ÒÐÝ�¨eÐ4Ñ4Ô4Ñ5Ô5Ð5Ø	�WÒ	Ð	Ý�¨dÐ3Ñ3Ô3Ñ4Ô4Ð4Ý˜hÑ'Ô'ð >ÝÕ2°8Ñ<Ô<Ñ=Ô=Ð=åŒv�f˜b (Ñ+Ô+€HØ—’˜sÑ#Ô#€Ið!ð !ð !õ ‘
”
€Iàð Bñ BˆØ)Ð)¨$Ñ/Ô/‰ˆˆeà�5Š=ˆ=ØˆDå×Ò˜tÑ$Ô$ð 	BØˆ}Ý$Ð%JÑKÔKÐKÝ%Ô=¸dÔCˆJØ× Ò  ¨UÑ3Ô3Ð3Ð3Ý×%Ò% dÑ+Ô+ð 	BØ×%Ò% dÑ+Ô+Ð+Ð+Ý˜dÑ#Ô#ð 
	Bå6°tÑ<Ô<ÐGÀÀˆMØ,ð 9ð 9�Ý-¨kÑ:Ô:ð AÝ ×-Ò-¨k¸;ÑGÔGÐGÐGå ×3Ò3°KÑ@Ô@Ð@Ø×$Ò$ [°%Ñ8Ô8Ð8Ð8ñ9õ Õ6°xÑ@Ô@ÑAÔAÐAàÐr/   c                 óH   — t           j                             | ¦  «        }|d uS r'   )Ú	importlibÚutilÚ	find_spec)rÇ   Úspecs     r,   r´   r´   \  s"   € ÝŒ>×#Ò# EÑ*Ô*€DØ�tÐÐr/   rÇ   c                 ó   — t           j                             | ¦  «        }|€dS | g}|j        �`t          j        | ¦  «        }t          |d¦  «        r<t          j        |j        | dz   d„ ¬¦  «        D ]\  }}}| 	                    |¦  «         Œ|S )ay  
    Get a module and all its submodules (recursively).

    If qname is a package, this returns a list of all modules and submodules.
    If qname is a simple module, this returns a list containing just that module.

    Args:
        qname: The fully qualified module name

    Returns:
        A list of fully qualified module names, or None if the module doesn't exist
    NÚ__path__ú.c                 ó   — d S r'   r^   )Úxs    r,   ú<lambda>z,_get_module_and_submodules.<locals>.<lambda>z  s   €  $€ r/   )ÚpathÚprefixÚonerror)
r  r  r  Úsubmodule_search_locationsÚimport_moduleÚhasattrÚpkgutilÚwalk_packagesr!  Úappend)rÇ   r  r—   ÚpackageÚimporterÚmodnameÚispkgs          r,   rµ   rµ   a  s«   € õ Œ>×#Ò# EÑ*Ô*€DØ€|Øˆtàˆg€GàÔ&Ð2ÝÔ)¨%Ñ0Ô0ˆÝ�7˜JÑ'Ô'ð 	(Ý,3Ô,AØÔ%Ø˜s‘{Ø&˜ð-ñ -ô -ð (ð (Ñ(�˜' 5ð
 —’˜wÑ'Ô'Ð'Ð'à€Nr/   c                  óv   — t           j                             t          d ¦  «        } | �t	          | ¦  «        ad S d S r'   )r¿   rÀ   r³   r¾   r  r°   )Úlog_settings    r,   Ú_update_log_state_from_envr5  �  s6   € å”*—.’.¥¨dÑ3Ô3€KØÐÝ'¨Ñ4Ô4ˆ	ˆ	ˆ	ð Ðr/   c                 ó    — t          j        | ¦  «        }t                               ¦   «         }|j        r|j        |v rdS |j        }|j        °dS )NTF)r;   rÆ   r­   rO   Úparentr+   )rF   Úcur_logÚregistered_log_qnamess      r,   r¶   r¶   ˆ  s[   € ÝÔ 	Ñ*Ô*€Gå(×7Ò7Ñ9Ô9Ðà
Œ.ð !ØŒ<Ð0Ð0Ð0Ø�4Ø”.ˆð Œ.ð !ð
 ˆ5r/   Úabs_pathÚsys_path.c                 óâ   — t          j        | ¦  «                             ¦   «         }|D ]8}	 |                     |¦  «        }t	          |¦  «        c S # t
          $ r Y Œ5w xY wt	          |¦  «        S )a¸  
    The string manipulation here is fairly expensive and we expect very high
    cache hit rates. Because `sys.path` changes very infrequently it's most
    performant to convert it into a tuple of strings and use that for the cache
    key because python has dedicated fast paths for list to tuple conversion
    and tuple hashing. (Empirically, a single top-level cache is about 2x faster
    than trying to cache individual parts.)
    )ÚpathlibÚPathÚresolveÚrelative_tor7   r¯   )r:  r;  Úabs_path_resolvedr&  Úrel_paths        r,   Ú_make_module_path_relativerC  •  sŽ   € õ  œ XÑ.Ô.×6Ò6Ñ8Ô8Ðàð !ð !ˆð	!Ø(×4Ò4°TÑ:Ô:ˆHõ �x‘=”=Ð Ð Ð øõ ð 	ð 	ð 	ØˆHð	øøøõ
 Ð Ñ!Ô!Ð!s   ¬AÁ
AÁAc                 óP   — t          | t          t          j        ¦  «        ¦  «        S )z×
    Given an absolute filepath corresponding to a Python module which was
    loaded via normal import mechanisms using sys.path, convert it into
    a relative path relative to one of the Python search paths.
    )rC  Útupler  r&  )r:  s    r,   Úmake_module_path_relativerF  ­  s   € õ & hµµc´h±´Ñ@Ô@Ð@r/   c                   óL   ‡ — e Zd Zdddœdedee         dz  ddfˆ fd„Zd„ Zˆ xZS )	ÚTorchLogsFormatterFN)ÚtraceÚtrace_id_filterrI  rJ  r4   c                ód   •— t          ¦   «                              ¦   «          || _        || _        d S r'   )ÚsuperÚ__init__Ú	_is_traceÚ_trace_id_filter)r*   rI  rJ  Ú	__class__s      €r,   rM  zTorchLogsFormatter.__init__¸  s0   ø€ õ 	‰Œ×ÒÑÔÐØˆŒØ /ˆÔÐÐr/   c                 óš  ‡— t          t          j        |j        ¦  «        dd ¦  «        }|�7t          j                             |d ¦  «        }|�|                     |¦  «        S |                     ¦   «         |_	        |  
                    |d¦  «        |_        |j	        }|j        r;ddlm} |j        p|dk    }|r&|j        s|                      |j        ¦  «        |_        |j        r|dd …         dk    r|dz   }||j        z   }|j        r0|dd …         dk    r|dz   }||                      |j        ¦  «        z   }d|_        | j        sBt-          j        ¦   «         r/t-          j        ¦   «         rd	t-          j        ¦   «         › d
�|_        d|_        | j        s1t6          j        j                             ¦   «         x}	 �d|› d�|_        ddddddœ}|                     |j        |j        ¦  «        }	d|_         |�d|› d�|_         tC          |j"        ¦  «        }
| j#        r"|j         $                    ¦   «         | j#        vrdS |j        › |	› |j        › dtK          |j&        dz  ¦  «        d›d|j'        › d|
› d|j(        › d|j        › |j         › �Š| j        r€|dk    rtS          d|›�¦  «        ‚‰› dtU          j+        |j,        tZ          ¬¦  «        › �}|j.        �:|d /                    d„ |j.         0                    d¦  «        D ¦   «         ¦  «        z  }|S | 0                    d¦  «        }d /                    ˆfd„|D ¦   «         ¦  «        S )Nrc   z%m%d %H:%M:%Sr   )Úconfigrt   r  rï   r  z[rankz]:z [ú]ÚVÚIÚWÚEÚC)rÛ   r  ÚWARNINGr  ÚCRITICALz [__r"  iè  Ú06drç   ú:z%expected empty string for trace, got )Údefaultc              3   ó    K  — | ]	}d |› �V — Œ
dS )z
	Nr^   )rª   Úls     r,   ú	<genexpr>z,TorchLogsFormatter.format.<locals>.<genexpr>  s(   è è € ÐLÐL¨A˜Z A˜Z˜ZÐLÐLÐLÐLÐLÐLr/   c              3   ó&   •K  — | ]}‰› d |› �V — ŒdS )rç   Nr^   )rª   r_  r'  s     €r,   r`  z,TorchLogsFormatter.format.<locals>.<genexpr>  s-   øè è € Ð<Ð<° ˜_˜_¨˜_˜_Ð<Ð<Ð<Ð<Ð<Ð<r/   )1Úgetattrr;   rÆ   r+   r­   r%   r³   ÚformatÚ
getMessageÚmessageÚ
formatTimeÚasctimeÚexc_infoÚtorch._dynamorR  rò   Úexc_textÚformatExceptionÚ
stack_infoÚformatStackÚ
rankprefixrN  ÚdistÚis_availableÚis_initializedÚget_rankÚtraceidr½   Ú_guardsÚCompileContextÚcurrent_trace_idÚ	levelnameÚartifactprefixrF  ÚpathnamerO  ÚstripÚintÚmsecsÚprocessÚlinenoré   ÚjsonÚdumpsÚmetadatarÏ   Úpayloadr²   r  )r*   Úrecordrc   Úartifact_formatterrê   rR  Úshould_format_excÚtrace_idÚglog_level_to_abbrÚ
shortlevelÚfilepathÚrrõ   r'  s                @r,   rc  zTorchLogsFormatter.format¿  sì  ø€ Ý¥Ô 1°&´+Ñ >Ô >ÀÐQUÑVÔVˆØÐ$Ý!-Ô!E×!IÒ!IØ˜tñ"ô "Ðð "Ð-Ø)×0Ò0°Ñ8Ô8Ð8à×*Ò*Ñ,Ô,ˆŒØŸš¨°ÑAÔAˆŒð ŒNˆØŒ?ð 	LØ,Ð,Ð,Ð,Ð,Ð,à &¤Ð Q°-À>Ò2QÐð !ð LØ”ð LØ&*×&:Ò&:¸6¼?Ñ&KÔ&K�F”OØŒ?ð 	$Ø���Œv˜Š~ˆ~Ø˜‘H�Ø�F”OÑ#ˆAØÔð 	8Ø���Œv˜Š~ˆ~Ø˜‘H�Ø�D×$Ò$ VÔ%6Ñ7Ô7Ñ7ˆAàˆÔØŒ~ð 	<¥$Ô"3Ñ"5Ô"5ð 	<½$Ô:MÑ:OÔ:Oð 	<Ø ;­¬©¬Ð ;Ð ;Ð ;ˆFÔàˆŒà”ð	.å"œ]Ô9×JÒJÑLÔLÐL�Øðð . (Ð-Ð-Ð-ˆFŒNð ØØØØð
ð 
Ðð (×+Ò+¨FÔ,<¸fÔ>NÑOÔOˆ
à "ˆÔØÐ$Ø$;¨=Ð$;Ð$;Ð$;ˆFÔ!å,¨V¬_Ñ=Ô=ˆð Ô!ð	à”×$Ò$Ñ&Ô&¨dÔ.CÐCÐCà�2ð Ô ð G *ð G¨f¬nð Gð G½sÀ6Ä<ÐRVÑCVÑ?WÔ?WÐoð Gð GÐ^dÔ^lð Gð GØðGð GàŒ}ðGð Gà%œ~ðGà/5Ô/DðGð Gð 	ð
 Œ>ð 		=Ø�BŠwˆwÝ$Ð%RÈQÐ%RÐ%RÑSÔSÐSØÐGÐG�DœJ v¤ÅÐEÑEÔEÐGÐGˆAØŒ~Ð)Ø�R—W’WÐLÐL°´×1EÒ1EÀdÑ1KÔ1KÐLÑLÔLÑLÔLÑL�ØˆHà—G’G˜D‘M”MˆEØ—9’9Ð<Ð<Ð<Ð<°eÐ<Ñ<Ô<Ñ<Ô<Ð<r/   )	rX   rY   rZ   r®   rI   r7   rM  rc  Ú__classcell__©rP  s   @r,   rH  rH  ·  s‚   ø€ € € € € à$Èð0ð 0ð 0Øð0Ø7:¸3´xÀ$±ð0à	ð0ð 0ð 0ð 0ð 0ð 0ðP=ð P=ð P=ð P=ð P=ð P=ð P=r/   rH  c                  ó<  — t           j                             t          d ¦  «        } d„ t           j                             t          d¦  «                             d¦  «        D ¦   «         }| €t          |¬¦  «        S | dv rt          j        } t          j	        | ¦  «        S )Nc                 ó^   — h | ]*}|                      ¦   «         ¯|                      ¦   «         ’Œ+S r^   )rz  )rª   Úitems     r,   ú	<setcomp>z%_default_formatter.<locals>.<setcomp>  s>   € ð ð ð àØ�:Š:‰<Œ<ðØ�
Š
‰Œðð ð r/   r  r§   )rJ  )ÚshortÚbasic)
r¿   rÀ   r³   ÚLOG_FORMAT_ENV_VARÚLOG_TRACE_ID_FILTERr  rH  r;   ÚBASIC_FORMATr<   )ÚfmtrJ  s     r,   Ú_default_formatterr—    s’   € Ý
Œ*�.Š.Õ+¨TÑ
2Ô
2€Cðð å”J—N’NÕ#6¸Ñ;Ô;×AÒAÀ#ÑFÔFðñ ô €Oð
 €{Ý!°/ÐBÑBÔBÐBàÐ$Ð$Ð$ÝÔ&ˆCÝÔ  Ñ%Ô%Ð%r/   c                 óÐ   — t           | ¦   «         ¦  «        }|                     t          ¦  «         |                     t          j        ¦  «         |                     |¦  «         d S r'   )Ú_track_handlerÚsetFormatterÚDEFAULT_FORMATTERrÚ   r;   rÛ   Ú
addHandler)Úcreate_handler_fnrÁ   Údebug_handlers      r,   Ú_setup_handlersrŸ  $  s\   € Ý"Ð#4Ð#4Ñ#6Ô#6Ñ7Ô7€MØ×ÒÕ0Ñ1Ô1Ð1Ø×Ò�7œ=Ñ)Ô)Ð)Ø‡N‚N�=Ñ!Ô!Ð!Ð!Ð!r/   c                 ó:   — t                                | ¦  «         | S r'   )Úhandlersr:   ©Úhandlers    r,   r™  r™  0  s   € Ý‡L‚L�ÑÔÐØ€Nr/   c                 ó   — | t           v S r'   )r¡  r¢  s    r,   Ú_is_torch_handlerr¥  5  s   € Ø•hÐÐr/   c                 ó\   — d„ | j         D ¦   «         }|D ]}|                      |¦  «         Œd S )Nc                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS r^   )r¥  )rª   r£  s     r,   r¬   z#_clear_handlers.<locals>.<listcomp>;  s&   € ÐSÐSÐS˜WÕ8IÈ'Ñ8RÔ8RÐS�ÐSÐSÐSr/   )r¡  ÚremoveHandler)rÁ   Ú	to_remover£  s      r,   Ú_clear_handlersrª  :  sG   € ØSÐS¨¬ÐSÑSÔS€IØð #ð #ˆØ×Ò˜'Ñ"Ô"Ð"Ð"ð#ð #r/   c                  ó  — t                                ¦   «         D ]K} t          j        | ¦  «        }|                     t          j        ¦  «         d|_        t          |¦  «         ŒLt          j	        t            
                    ¦   «         t                                ¦   «         ¦  «        D ]<}t          j        |¦  «        }|                     t          j        ¦  «         d|_        Œ=dt          _        t          t          ¦  «         d S rØ   )r­   rO   r;   rÆ   rÚ   rY  rÙ   rª  rJ   rK   rQ   rS   ÚNOTSETÚ	trace_log)rF   rÁ   rC   s      r,   Ú_reset_logsr®  @  sà   € å!×0Ò0Ñ2Ô2ð ð ˆ	ÝÔ 	Ñ*Ô*ˆØ�Š•W”_Ñ%Ô%Ð%ØˆŒÝ˜ÑÔÐÐõ (œoÝ×,Ò,Ñ.Ô.µ×0QÒ0QÑ0SÔ0Sñô ð ð Ðõ ÔÐ 2Ñ3Ô3ˆØ�Š•W”^Ñ$Ô$Ð$ØˆŒˆà…IÔÝ•IÑÔÐÐÐr/   c                  ó   — t           S r'   ©r°   r^   r/   r,   Ú_get_log_stater±  T  s   € ÝÐr/   c                 ó
   — | a d S r'   r°  )Ústates    r,   Ú_set_log_stater´  X  s   € à€I€I€Ir/   c                 ó‚  ‡ — t          ¦   «          t          ¦   «          t          j                             t
          d ¦  «        }|�|Š t                               ¦   «         D ]<}|dk    rŒ	t          j	        |¦  «        }| 
                    t          j        ¦  «         Œ=t                               ¦   «         D ].\  }}t          j	        |¦  «        }| 
                    |¦  «         Œ/t                               ¦   «         D ]E}t          j	        |¦  «        }t          t          j        |¦  «         ‰ �t          ˆ fd„|¦  «         ŒFt                               ¦   «         D ]%}t          j	        |¦  «        }t#          |¦  «         Œ&t          j                             t$          d ¦  «        }|€Rt          j                             dd¦  «        dk    r.dd lmc m} t          j                             |j        d¦  «        }t          j                             t2          d ¦  «        x}rda|}t6          €t9          |¦  «        at:           
                    t          j        ¦  «         d	„ t:          _        tA          t6          ¦  «        }	|	 !                    tE          d¬
¦  «        ¦  «         t:           #                    |	¦  «         d S )Nr½   c                  ó,   •— t          j        ‰ ¦  «        S r'   )r;   ÚFileHandler)Úlog_file_names   €r,   r%  z_init_logs.<locals>.<lambda>�  s   ø€ �Ô+¨MÑ:Ô:€ r/   ÚTORCH_COMPILE_DEBUGÚ0Ú1r   ÚtlparseTc                 ó"   — | t           j        k    S r'   )r­  r  )r  s    r,   r%  z_init_logs.<locals>.<lambda>©  s   € ¨5µI´OÒ+C€ r/   )rI  )$r®  r5  r¿   rÀ   r³   ÚLOG_OUT_ENV_VARr­   rO   r;   rÆ   rÚ   r¬  r°   rl   rŸ  ÚStreamHandlerrQ   rÐ   ÚTRACE_ENV_VARÚtorch._dynamo.configÚ_dynamorR  r&  r²   Údebug_dir_rootÚDTRACE_ENV_VARÚGET_DTRACE_STRUCTUREDr   r   r­  rÛ   ÚisEnabledForr™  rš  rH  rœ  )
r¸  ÚoutrF   rÁ   r  rC   Útrace_dir_nameÚdynamo_configÚdtrace_dir_nameÚtrace_log_handlers
   `         r,   r·   r·   ]  s¢  ø€ õ �M„M€MÝÑ Ô Ð å
Œ*�.Š.�¨$Ñ
/Ô
/€CØ
€Øˆõ "×0Ò0Ñ2Ô2ð %ð %ˆ	ð ˜ÒÐØÝÔ 	Ñ*Ô*ˆØ�Š•W”^Ñ$Ô$Ð$Ð$õ &×9Ò9Ñ;Ô;ð ð Ñˆ	�5ÝÔ 	Ñ*Ô*ˆØ�Š�UÑÔÐÐõ "×0Ò0Ñ2Ô2ð ð ˆ	ÝÔ 	Ñ*Ô*ˆÝÝÔ!Øñ	
ô 	
ð 	
ð
 Ð$ÝØ:Ð:Ð:Ð:Øñô ð øõ +×BÒBÑDÔDð $ð $ÐÝÔÐ 2Ñ3Ô3ˆÝ˜sÑ#Ô#Ð#Ð#õ ”Z—^’^¥M°4Ñ8Ô8€Nð Ð¥"¤*§.¢.Ð1FÈÑ"LÔ"LÐPSÒ"SÐ"SØ4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4åœŸš mÔ&BÀIÑNÔNˆåœ*Ÿ.š.­¸Ñ>Ô>Ð>€ð )Ø $ÐØ(ˆõ Ð Ý,¨^Ñ<Ô<Ðõ ×Ò•w”}Ñ%Ô%Ð%ð DÐC…IÔÝ&Õ'8Ñ9Ô9ÐØ×"Ò"Õ#5¸DÐ#AÑ#AÔ#AÑBÔBÐBÝ×ÒÐ*Ñ+Ô+Ð+Ð+Ð+r/   c                   óX   ‡ — e Zd ZdZdedz  ddfd„Zddœdeddfd	„Zdd
„Zdˆ fd„Z	ˆ xZ
S )r   zRLike FileHandler, but the file is allocated lazily only upon the first log messageÚroot_dirNr4   c                 ó¢   — || _         t          j                             | ¦  «         d | _        d | _        d | _        t          | _        d| _	        d S )NF)
rÍ  r;   ÚHandlerrM  ÚstreamÚ_pidÚ_stream_pathÚopenÚ_builtin_openÚ_pending_log_version)r*   rÍ  s     r,   rM  zLazyTraceHandler.__init__²  sM   € ð !ˆŒÝŒ× Ò  Ñ&Ô&Ð&ØˆŒØ $ˆŒ	Ø(,ˆÔÝ!ˆÔØ$)ˆÔ!Ð!Ð!r/   T©Úflushr×  c                ó  — | j         �r„| j         }	 |r|                      ¦   «          d | _         d | _        d | _        d| _        |r&t          |d¦  «        r|                     ¦   «          d S |skt          j        |                     ¦   «         ¦  «         	 |                     ¦   «          d S # t          $ r!}|j
        t          j        k    r‚ Y d }~d S d }~ww xY wd S # d | _         d | _        d | _        d| _        |r%t          |d¦  «        r|                     ¦   «          w |sit          j        |                     ¦   «         ¦  «         	 |                     ¦   «          w # t          $ r }|j
        t          j        k    r‚ Y d }~w d }~ww xY ww xY wd S )NFÚclose)rÐ  r×  rÑ  rÒ  rÕ  r+  rÙ  r¿   ÚfilenoÚOSErrorÚerrnoÚEBADF)r*   r×  rÐ  Úexcs       r,   Ú_close_streamzLazyTraceHandler._close_stream½  sÏ  € ØŒ;ñ 	"Ø”[ˆFð"Øð !Ø—J’J‘L”L�Là"�”Ø �”	Ø$(�Ô!Ø,1�Ô)Øð "�W V¨WÑ5Ô5ð "Ø—L’L‘N”N�N�N�NØð 	"õ ”H˜VŸ]š]™_œ_Ñ-Ô-Ð-ð"ØŸš™œ˜˜˜øÝ"ð "ð "ð "Øœ9­¬Ò3Ð3Ø!ð 4Ð3Ð3Ð3Ð3Ð3øøøøð"øøøð	"ð 	"øð #�”Ø �”	Ø$(�Ô!Ø,1�Ô)Øð "�W V¨WÑ5Ô5ð "Ø—L’L‘N”N�N�NØð 	"õ ”H˜VŸ]š]™_œ_Ñ-Ô-Ð-ð"ØŸš™œ˜˜øÝ"ð "ð "ð "Øœ9­¬Ò3Ð3Ø!ð 4Ð3Ð3Ð3Ð3øøøøð"øøøð	"øøøð	"ð 	"sN   ‘C ÂB* Â*
CÂ4CÃCÃA,F
ÅEÅF
Å
FÅ&FÅ<F
ÆFÆF
c                 óˆ  — |                       ¦   «          	 	 |                      | j        d u p| j        t          j        ¦   «         k    ¬¦  «         t
          j                             | ¦  «         n$# t
          j                             | ¦  «         w xY w	 |                      ¦   «          d S # |                      ¦   «          w xY w)NrÖ  )	Úacquirerß  rÑ  r¿   Úgetpidr;   r¿  rÙ  ÚreleaserN   s    r,   rÙ  zLazyTraceHandler.closeÖ  s¨   € Ø�Š‰Œˆð
	ð2Ø×"Ò"¨¬°dÐ):Ð)V¸d¼iÍ2Ì9É;Ì;Ò>VÐ"ÑWÔWÐWõ Ô%×+Ò+¨DÑ1Ô1Ð1Ð1ø•Ô%×+Ò+¨DÑ1Ô1Ð1Ð1øøøÐ1à�LŠL‰NŒNˆNˆNˆNøˆD�LŠL‰NŒNˆNˆNøøøs   —9A0 Á B+ Á0!BÂB+ Â+Cc                 ór  •— t          j        ¦   «         }| j        �!| j        |k    r|                      d¬¦  «         | j        �€*| j        €þd}dd lm} t          |d¦  «        r/t          j	        d¦  «        €t                               d¦  «         n·t          j                             d¦  «        st                               d	¦  «         n}t           j                             |¦  «        st                               d
|¦  «         nBt          j        |t           j        ¦  «        st                               d|¦  «         n|| _        | j        ��t          j        | j        d¬¦  «         d}t)          j        ¦   «         r*t)          j        ¦   «         rdt)          j        ¦   «         › d�}t1          j        dt4          |z   | j        ¬¦  «        \  }}t          j        |d¬¦  «        | _        || _        || _        t                               d| j        ¦  «         t;          j        d¦  «        }|                     d| j        ¦  «         d| _        nt@           !                    | ¦  «         d S | j        r?tE          ¦   «          #                    |¦  «         | j        rd| _        tI          ¦   «          d S d S d S )NFrÖ  z/logsr   Úgit_versionÚMAST_HPC_JOB_NAMEz>LazyTraceHandler: disabled because not fbcode or conda on mastzpytorch/trace:enablezYLazyTraceHandler: disabled because justknobs_check('pytorch/trace:enable') returned Falsez4LazyTraceHandler: disabled because %s does not existz6LazyTraceHandler: disabled because %s is not writeableT)Úexist_okr  Úrank_Ú_z.log)Úsuffixr'  Údirzw+)ÚmodezLazyTraceHandler: logging to %sztorch._inductorztlparse raw data: %s)%r¿   râ  rÐ  rÑ  rß  rÍ  Útorch.versionÚversionr+  ÚgetenvrÁ   Úinfor½   Ú_utils_internalÚjustknobs_checkr&  ÚexistsÚaccessÚW_OKÚmakedirsro  rp  rq  rr  ÚtempfileÚmkstempÚ
LOG_PREFIXÚfdopenrÒ  r;   rÆ   rÕ  r­  r¨  rL  ÚemitÚ_log_torch_version)
r*   rƒ  Úcurrent_pidÚTRACE_LOG_DIRÚtorch_versionÚ
ranksuffixÚfdr&  Úinductor_logrP  s
            €r,   rû  zLazyTraceHandler.emitä  sÉ  ø€ Ý”i‘k”kˆØŒ;Ð" t¤y°KÒ'?Ð'?Ø×Ò UÐÑ+Ô+Ð+àŒ;ÑØŒ}Ð$Ø '�à5Ð5Ð5Ð5Ð5Ð5õ ˜M¨=Ñ9Ô9ð2åœ	Ð"5Ñ6Ô6Ð>å—H’HØXñô ð ð õ Ô.×>Ò>Ð?UÑVÔVð 2Ý—H’HØsñô ð ð õ œŸš¨Ñ6Ô6ð 2Ý—H’HØNØ%ñô ð ð õ œ =µ"´'Ñ:Ô:ð 2Ý—H’HØPØ%ñô ð ð ð
 %2�D”MàŒ}Ñ(Ý”˜DœM°DÐ9Ñ9Ô9Ð9Ø�
ÝÔ$Ñ&Ô&ð <­4Ô+>Ñ+@Ô+@ð <Ø!;­¬©¬Ð!;Ð!;Ð!;�JÝ#Ô+Ø!Ý%¨
Ñ2Øœðñ ô ‘��Dõ
 !œi¨°Ð6Ñ6Ô6�”Ø'�”	Ø$(�Ô!Ý—’Ð:¸DÔ<MÑNÔNÐNõ  'Ô0Ð1BÑCÔC�Ø×!Ò!Ð"8¸$Ô:KÑLÔLÐLØ,0�Ô)Ð)õ ×'Ò'¨Ñ-Ô-Ð-Ø�ØŒ;ð 	%Ý‰GŒG�LŠL˜Ñ Ô Ð ØÔ(ð %Ø,1�Ô)Ý"Ñ$Ô$Ð$Ð$Ð$ð		%ð 	%ð%ð %r/   rW   )rX   rY   rZ   Ú__doc__r7   rM  r®   rß  rÙ  rû  r‹  rŒ  s   @r,   r   r   ¯  s®   ø€ € € € € Ø\Ð\ð	*  t¡ð 	*°ð 	*ð 	*ð 	*ð 	*ð .2ð "ð "ð " dð "°dð "ð "ð "ð "ð2ð ð ð ð>%ð >%ð >%ð >%ð >%ð >%ð >%ð >%ð >%ð >%r/   c                  ó�   ‡— dd l } ddlm} ddlm} | j         |¦   «          |¦   «          dœŠt          dd„ ˆfd„dd	¬
¦  «         d S )Nr   )Ú	is_fbcode)Úget_torch_source_version)Úpytorch_versionÚcommitÚossÚartifactc                  ó   — dddœS )Nrÿ  r  ©r+   Úencodingr^   r^   r/   r,   r%  z$_log_torch_version.<locals>.<lambda>2  s   €  _À&ÐIÐI€ r/   c                  ó   •— ‰ S r'   r^   )Úversion_infos   €r,   r%  z$_log_torch_version.<locals>.<lambda>3  s   ø€ ˜<€ r/   TF)Úmetadata_fnÚ
payload_fnÚsuppress_contextÚexpect_trace_id)r½   Útorch._environmentr  Útorch._utils_internalr  Ú__version__Útrace_structured)r½   r  r  r  s      @r,   rü  rü  %  s™   ø€ Ø€L€L€LØ,Ð,Ð,Ð,Ð,Ð,Ø>Ð>Ð>Ð>Ð>Ð>ð !Ô,Ø*Ð*Ñ,Ô,Ø�9‘;”;ˆð'ð '€Lõ ØØIÐIØ'Ð'Ð'Ð'ØØðñ ô ð ð ð r/   c                 ó    —  | j         |i |¤Ž dS )a¿  
    This function is similar to `logger.warning()`, but will emit the warning with the same message only once
    Note: The cache is for the function arguments, so 2 different callers using the same arguments will hit the cache.
    The assumption here is that all warning messages are unique across the code. If they aren't then need to switch to
    another type of cache that includes the caller frame information in the hashing function.
    N)rÂ   )Ú
logger_objÚargsr¸   s      r,   Úwarning_oncer  9  s"   € ð €JÔ˜Ð' Ð'Ð'Ð'Ð'Ð'r/   c                 ó$   — dt          | ¦  «        vS )NzThe .grad attribute of a Tensorr©   ©re  ÚcategoryÚfilenamer~  ÚfileÚlines         r,   Úsafe_grad_filterr"  D  s   € Ø,µC¸±L´LÐ@Ð@r/   c                 ó   — |t           uS r'   )ÚUserWarningr  s         r,   Úuser_warning_filterr%  H  s   € ð �;Ð&Ð&r/   c                  ó   — dS )NTr^   )r  r¸   s     r,   r%  r%  O  s   € °D€ r/   c              #   óŽ   ‡ ‡K  — t           j        Šˆ ˆfd„}	 |t           _        dV — ‰t           _        dS # ‰t           _        w xY w)a«  
    A context manager that temporarily suppresses warnings,
    using public API: https://docs.python.org/3/library/warnings.html#warnings.showwarning.

    Useful to hide warnings without mutating warnings module state, see:
    https://github.com/pytorch/pytorch/issues/128427#issuecomment-2161496162.

    NOTE: Warnings issued under this context will still be cached in the __warningregistry__
    and count towards the once/default rule. So you should NEVER use this on a user-land function.

    Filter must implement the showwarning API:
    def filter_fn(message, category, filename, lineno, file=None, line=None) -> bool:
        return True  # show this warning entry
    c                  ó,   •—  ‰| i |¤Žr
 ‰| i |¤Ž d S d S r'   r^   )r  r¸   Ú	filter_fnÚpriors     €€r,   Ú_showwarningz#hide_warnings.<locals>._showwarning`  s?   ø€ Øˆ9�dÐ%˜fÐ%Ð%ð 	#ØˆE�4Ð"˜6Ð"Ð"Ð"Ð"Ð"ð	#ð 	#r/   N)ÚwarningsÚshowwarning)r)  r+  r*  s   ` @r,   Úhide_warningsr.  N  sh   øøè è € õ  Ô €Eð#ð #ð #ð #ð #ð #ð%Ø+�ÔØˆˆˆà$�ÔÐÐø˜u�ÔÐ$Ð$Ð$Ð$s	   ˜6 ¶Ac                   óV   — e Zd Zdeeef         dej        dej        ddfd„Zdefd„Z	dS )Ú
LazyStringÚfuncr  r¸   r4   Nc                 ó0   — || _         || _        || _        d S r'   ©r1  r  r¸   )r*   r1  r  r¸   s       r,   rM  zLazyString.__init__l  s   € ð ˆŒ	ØˆŒ	ØˆŒˆˆr/   c                 ó0   —  | j         | j        i | j        ¤ŽS r'   r3  rN   s    r,   Ú__str__zLazyString.__str__s  s   € ØˆtŒy˜$œ)Ð3 t¤{Ð3Ð3Ð3r/   )
rX   rY   rZ   r   r   r7   r  r¸   rM  r5  r^   r/   r,   r0  r0  k  sp   € € € € € ðØ˜R ˜WÔ%ðØ.0¬gðØACÄðà	ðð ð ð ð4˜ð 4ð 4ð 4ð 4ð 4ð 4r/   r0  Ústructured_logging_overheadÚ
time_spentc                 óâ   — d }t           j        j                             ¦   «         x}�|j        j        }|j        j        }|› d|› �}|�&t          |¦  «        }t          |xx         | z  cc<   d S d S ©Nré  )	r½   rt  ru  rv  Ú
compile_idÚframe_idÚframe_compile_idr7   r6  )r7  Úkeyr†  r;  r<  s        r,   Úadd_structured_logging_overheadr>  |  s‹   € à
€CÝ”MÔ0×AÒAÑCÔCÐCˆÐPØÔ&Ô/ˆØ#Ô.Ô?Ðð Ð.Ð.Ð,Ð.Ð.ˆð €Ý�#‰hŒhˆÝ# CÐ(Ð(Ô(¨JÑ6Ð(Ð(Ñ(Ð(Ð(ð €r/   c                  óÊ   — d } t           j        j                             ¦   «         x}�|j        j        }|j        j        }|› d|› �} | �t                               | ¦  «        S d S r9  )	r½   rt  ru  rv  r:  r;  r<  r6  r³   )r=  r†  r;  r<  s       r,   Úget_structured_logging_overheadr@  Ž  sl   € Ø
€CÝ”MÔ0×AÒAÑCÔCÐCˆÐPØÔ&Ô/ˆØ#Ô.Ô?ÐØÐ.Ð.Ð,Ð.Ð.ˆØ
€Ý*×.Ò.¨sÑ3Ô3Ð3àˆtr/   c                  ó   — d S r'   r^   r^   r/   r,   r%  r%  �  ó   € ¸D€ r/   r+   r  r  r:  c                 ó8   ‡ ‡— t          dˆˆ fd„||¬¦  «         d S )Nr
  c                  ó   •— ‰‰ dœS )Nr  r^   )r  r+   s   €€r,   r%  z+trace_structured_artifact.<locals>.<lambda>¢  s   ø€ ØØ ð
ð 
€ r/   )r  r  r:  )r  )r+   r  r  r:  s   ``  r,   Útrace_structured_artifactrE  š  sK   øø€ õ Øð
ð 
ð 
ð 
ð 
ð Øðñ ô ð ð ð r/   c                  ó   — d S r'   r^   r^   r/   r,   r%  r%  ±  rB  r/   )r  r  r  Úrecord_logging_overheadr:  r  r  r  rG  c                óÒ  — g d¢}| |v rt          d| ›d�¦  «        ‚t          |¦  «        st          dt          |¦  «        › �¦  «        ‚t          |¦  «        st          dt          |¦  «        › �¦  «        ‚t          j        �r`t          j        ¦   «         }i }	 |¦   «         |	| <   |�st          j        ¦   «         r)t          j	        ¦   «         rt          j
        ¦   «         |	d<   t          j        j                             ¦   «         }
|rQ|
€O|€Mt          j        j                             t%          j        d¬	¦  «                             ¦   «         ¦  «        |	d
<   nL|
r|
j        n|}|�3|j        �
|j        |	d<   |j        �
|j        |	d<   |j        �
|j        |	d<   |
r
|
j        |	d<   ddlm}  |¦   «         }|�||	d<    |¦   «         }|�¾t9          |t:          ¦  «        sUt9          |t<          ¦  «        r&dd                     d„ |D ¦   «         ¦  «        z   dz   }nd„ }tA          j!        ||d¬¦  «        }tE          j#        d¬¦  «        }| $                    | %                    d¦  «        ¦  «         | &                    ¦   «         |	d<   t           '                    d|	|dœd¬¦  «         tQ          | |	¦  «         |r,t          j        ¦   «         |z
  d z  }tS          |¦  «         dS dS dS )!zù
    metadata is an arbitrary JSON compatible struct, but it's expected to not be
    too long (e.g., less than 1MB)

    payload is an arbitrary string, which can be arbitrarily long (but expected to have
    newlines so no lines are too long)
    )
ÚrankÚcompiled_autograd_idr;  r<  ÚattemptÚseverityÚ	timestampry  ÚthreadÚsubgraph_namezname z is reserved and cannot be usedz(metadata_fn should be callable, but got z'payload_fn should be callable, but got rI  Nr  )ÚskipÚstackrJ  r;  r<  rK  r   )Ú$_get_regional_inductor_subgraph_namerO  z[
z,
c              3   ó>   K  — | ]}t          j        |¦  «        V — Œd S r'   )r  r€  )rª   Úis     r,   r`  z#trace_structured.<locals>.<genexpr>ÿ  s*   è è € Ð0PÐ0PÀ1µ´¸A±´Ð0PÐ0PÐ0PÐ0PÐ0PÐ0Pr/   z
]c                 óŠ   — t          | t          ¦  «        rt          | ¦  «        S t          dt	          | ¦  «        › d�¦  «        ‚)NzObject of type z is not JSON serializable)r6   rI   r\   Ú	TypeErrorÚtype)Úobjs    r,   Újson_defaultz&trace_structured.<locals>.json_default  sF   € å% c­3Ñ/Ô/ð -Ý#'¨¡9¤9Ð,Ý'ØR­d°3©i¬iÐRÐRÐRñô ð r/   )r]  ÚindentF)Úusedforsecurityzutf-8Úhas_payloadr  )r�  r‚  r  )ÚextraÚ
stacklevelg    eÍÍA)*ré   ÚcallablerW  r­  r¡  ÚtimeÚtime_nsro  rp  rq  rr  r½   rt  ru  rv  Ú_loggingÚ
structuredÚfrom_tracebackr   ÚextractÚsummaryr:  rJ  r;  r<  rK  Útorch.fx.tracebackrR  r6   r7   r\   r²   r  r€  ÚhashlibÚmd5ÚupdateÚencodeÚ	hexdigestÚdebugr   r>  )r+   r  r  r  r  rG  r:  Úreserved_namesÚ
start_timerƒ  r†  ÚcidrR  rO  r‚  rY  ÚhÚstructured_logging_overhead_ss                     r,   r  r  «  sn  € ð&ð ð €Nð ˆ~ÐÐÝÐL TÐLÐLÐLÑMÔMÐMÝ�KÑ Ô ð 
ÝØJµt¸KÑ7HÔ7HÐJÐJñ
ô 
ð 	
õ �JÑÔð 
ÝØHµd¸:Ñ6FÔ6FÐHÐHñ
ô 
ð 	
õ
 Ôñ AKÝ”\‘^”^ˆ
Ø$&ˆØ"�{‘}”}ˆˆt‰Øñ 	8õ Ô Ñ"Ô"ð 1¥tÔ':Ñ'<Ô'<ð 1Ý!%¤¡¤��v‘å”}Ô3×DÒDÑFÔFˆHØð 9 8Ð#3¸
Ð8Jõ #(¤.Ô";×"JÒ"JÝ%Ô-°1Ð5Ñ5Ô5×=Ò=Ñ?Ô?ñ#ô #��w‘�ð .6ÐE�hÔ)Ð)¸:�Ø�?ØÔ/Ð;Ø9<Ô9Q˜Ð5Ñ6Ø”|Ð/Ø-0¬\˜˜zÑ*ØÔ+Ð7Ø58Ô5I˜Ð1Ñ2Øð 9Ø(0Ô(8�F˜9Ñ%àOÐOÐOÐOÐOÐOà@Ð@ÑBÔBˆMØÐ(Ø*7��Ñ'à�*‘,”,ˆØÐÝ˜g¥sÑ+Ô+ð RÝ˜g¥tÑ,Ô,ð Rà# e§j¢jÐ0PÐ0PÈÐ0PÑ0PÔ0PÑ&PÔ&PÑPÐSXÑX�G�Gðð ð õ #œj¨¸,ÈqÐQÑQÔQ�GÝ”¨EÐ2Ñ2Ô2ˆAØ�HŠH�W—^’^ GÑ,Ô,Ñ-Ô-Ð-Ø$%§K¢K¡M¤MˆF�=Ñ!Ý�ŠØ 6°gÐ>Ð>È1ð 	ñ 	
ô 	
ð 	
õ 	# 4¨Ñ0Ô0Ð0à"ð 	Kå-1¬\©^¬^¸jÑ-HÈCÑ,OÐ)Ý+Ð,IÑJÔJÐJÐJÐJðCAKð AKð|	Kð 	Kr/   c                  ó   — d S r'   r^   r^   r/   r,   r%  r%     rB  r/   ©r  r  r  rG  c                óB   — t           rt          | |||||¬¦  «         dS dS )zu
    For logging more detailed information used for debugging. This may result in
    the program becoming slow.
    rt  N)rÅ  r  )r+   r  r  r  r  rG  s         r,   Údtrace_structuredrv    sI   € õ ð 
ÝØØØ!Ø-Ø+Ø$;ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r/   rW   )FFN)Fr'   )NN)ƒÚ
contextlibrÜ  Ú	functoolsrh  Úimportlib.utilr  rJ   r  r;   r¿   Úos.pathr=  r,  rÝ   r  r÷  r`  r,  Úcollectionsr   Úcollections.abcr   r   Údataclassesr   r   Útypingr   r	   r
   Útyping_extensionsr   Úweakrefr   Útorch._logging.structuredr½   Útorch._guardsr   r  r   Útorch.utils._tracebackr   r   rÆ   rX   rÁ   r­  rY  ÚDEFAULT_LOG_LEVELr¾   r¾  r“  r”  rÀ  rÄ  r   r]   rÅ  rù  r   r`   r­   r°   r  ÚDEFAULT_LOGGINGr{  r®   r[   r7   rÃ   r\   ÚLoggerrÈ   r8   rÍ   rÒ   r  r  r²   ÚescapeÚVERBOSITY_REGEXrÐ   rß   rã   rù   rü   r
  Ú	lru_cacher  r´   rµ   r5  r¶   rE  rC  rF  r<   rH  r—  r›  rŸ  r¡  r™  r¥  rª  r®  r±  r´  r·   r¿  r   rü  Úcacher  r"  r%  Úcontextmanagerr.  r0  Úfloatr6  r>  r@  ÚobjectrE  r  rv  Útorch.distributedr{   ro  rg  r^   r/   r,   ú<module>r�     sJ  ðà Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ø #Ð #Ð #Ð #Ð #Ð #Ø <Ð <Ð <Ð <Ð <Ð <Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð €Yˆt�_„_€à€gÔ˜Ñ!Ô!€ð ˆGÔ˜oÑ.Ô.€	à”OÐ Ø€Ø"€Ø(Ð Ø2Ð Ø€Ø€à26Ð �8Ð.Ô/Ð 6Ð 6Ñ 6àÐ à)€
ð ðVDð VDð VDð VDð VDñ VDô VDñ „ðVDðr ð#$ð #$ð #$ð #$ð #$ñ #$ô #$ñ „ð#$ðL ˆ{‰}Œ}€ØˆH‰JŒJ€	ð ŒlØŒ<Ø”ØŒLØØØØØØŒ|ðð €ð  ØØØØØØ"ØØØØØØØØ!ØØØØ$ØØØØØØ$ØØØ ØØØØØ!Ø"ØØ Ø"ØØØØ,0ØØØ#Ø&+Ø$)ØØØØ#(Ø"Ø!&Ø!&ØðoDð Dð Dà	ˆt‰ðDð �$‰JðDð 
ˆt‰ð	Dð
 �D‰jðDð �4‰ZðDð �D‰jðDð �t‘ðDð �‰*ðDð 
ˆt‰ðDð �‰*ðDð �4‰ZðDð �‰*ðDð ðDð ðDð  ð!Dð" ð#Dð$ ð%Dð& ð'Dð( ð)Dð* ð+Dð, ð-Dð. ð/Dð0 ð1Dð2 ð3Dð4 ð5Dð6 ð7Dð8 ð9Dð: ð;Dð< ð=Dð> ð?Dð@ ðADðB ðCDðD ðEDðF ðGDðH ðIDðJ ðKDðL ðMDðN ðODðP ðQDðR �$‰JðSDðT �#�s˜T‘z�/Ô" TÑ)ðUDðV ðWDðX ðYDðZ ð[Dð\  $ð]Dð^ "ð_Dð` ðaDðb ðcDðd ðeDðf !ðgDðh ðiDðj ðkDðl ðmDðn ðoDðp 
ðqDð Dð Dð DðNQ�T˜'œ.Ô)ð Qð Qð Qð Qð6ð 6ð 6ð 6ð PTðà	ðð ð ð ð"°g´nð ð ð ð ð Ð ØÐ àØ	‡h‚h�	�”	Ð-Ñ.Ô.°	°´	Ð:MÑ0NÔ0NÐOÑPÔPñQà
ñð ð
ð 
ð 
ð 
ð?ð ?ð ?ðEð Eð Eð<ð <ð <ð <ð~ð ð ð ð"$°Cð $¸Cð $ð $ð $ð $ðN Ôð8ð 8ñ Ôð8ðvð ð ð
 cð ¨h°s¬m¸dÑ.Bð ð ð ð ð@5ð 5ð 5ð 5ð
¨ð 
ð 
ð 
ð 
ð Ôð"¨ð "¸¸cÀ3¸h¼ð "ÈCð "ð "ð "ñ Ôð"ð.A¨ð A°ð Að Að Að AðX=ð X=ð X=ð X=ð X=˜Ô*ñ X=ô X=ð X=ðv&ð &ð &ð 'Ð&Ñ(Ô(Ð ð"ð "ð "ð "ð ˆ7‰9Œ9€ð
ð ð ð
ð ð ð
#ð #ð #ð #ðð ð ð ð(ð ð ðð ð ð ð
O,ð O,ð O,ð O,ð O,ðds%ð s%ð s%ð s%ð s%�wÔ,ñ s%ô s%ð s%ðlð ð ð ð( „ð(ð (ð (ñ „ð(ðAð AÐSWð Að Að Að Að
 :>ð'ð 'à	ð'ð 'ð 'ð 'ð ÔØ8Ð8ð %ð %ð %ñ Ôð%ð8	4ð 	4ð 	4ð 	4ð 	4�˜”ñ 	4ô 	4ð 	4ð 1<°¸EÑ0BÔ0BÐ ˜T # u *Ô-Ð BÐ BÑ Bð7°ð 7¸$ð 7ð 7ð 7ð 7ð$	¨°©ð 	ð 	ð 	ð 	ð 5A°LØ#'ð	ð Ø
ðàðð ˜˜S 6™\¨DÑ0Ð0Ô1ðð ˜DÑ ð	ð
 
ðð ð ð ð* CGð	lKð 5A°LØ"Ø Ø$(Ø#'ðlKð lKð lKØ
ðlKð ˜"˜d 3¨ 8œn¨u°S¸#°X¬Ñ>Ð>Ô?ð	lKð ˜˜S 6™\¨DÑ0Ð0Ô1ðlKð ðlKð ðlKð "ðlKð ˜DÑ ðlKð 
ðlKð lKð lKð lKðf CGð	
ð 5A°LØ"Ø!Ø$(ð
ð 
ð 
Ø
ð
ð ˜"˜d 3¨ 8œn¨u°S¸#°X¬Ñ>Ð>Ô?ð	
ð ˜˜S 6™\¨DÑ0Ð0Ô1ð
ð ð
ð ð
ð "ð
ð 
ð
ð 
ð 
ð 
ð4 Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð r/   