o
    j9:j_t                     @  s  d dl mZ 	 d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZ d dlZd dlmZ d	d
lmZ d	dlmZ erd dlZd dl m!Z! d dlm"Z" d	dl#m$Z$ d	dl%m&Z& d	dlm'Z'm(Z( dddZ)e*e+Z,ej-.e+dZ/G dd de0Z1G dd de1Z2G dd de1Z3G dd de1Z4G dd  d e4Z5G d!d" d"e4Z6G d#d$ d$e4Z7G d%d& d&e4Z8G d'd( d(e4Z9G d)d* d*e4Z:G d+d, d,e1Z;G d-d. d.e1Z<G d/d0 d0e1Z=G d1d2 d2e1Z>G d3d4 d4e1Z?G d5d6 d6e?Z@G d7d8 d8e1ZAG d9d: d:e1ZBG d;d< d<e1ZCG d=d> d>e1ZDG d?d@ d@e1ZEG dAdB dBe	ZFG dCdD dDe1ZGG dEdF dFe1ZHG dGdH dHe1ZIG dIdJ dJe1ZJG dKdL dLeKZLG dMdN dNe1ZMG dOdP dPe1ZNG dQdR dReNZOG dSdT dTeNZPG dUdV dVePZQG dWdX dXePZRG dYdZ dZeNZSG d[d\ d\eNZTG d]d^ d^eNZUG d_d` d`eNZVG dadb dbeNZWeXeOeYePeZeQe[eSe\eRe]eTe0eUe^eVe_eWi	Z`ddfdgZadddhddpdqZbddsdtZcddwdxZdejejfjgejejfjhejejfjiejejfjjejejfjkfZldddZmdddZned	ddddZodddZpeq ZrerddddddZsG dd dZtdddZuddddZvdddZwdddZx	ddddZydddZzdddZ{dddZ|		ddddZ}dddZ~dddZ		ddddZdS )    )annotationsN)autoEnum)	lru_cache)Path)extract_stack
format_excformat_listFrameSummaryStackSummary)AnyNoReturnTYPE_CHECKING)get_file_path_2   )config)counters)VariableTracker)	CompileId)DynamoTracerOutput)InstructionTranslatorBase)DynamoFrameTypeFrameExecStrategy	case_namestrreturnc                 C  s   d|  dd S )NzhFor more information about this error, see: https://pytorch.org/docs/main/generated/exportdb/index.html#_-)replace)r    r   X/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/torch/_dynamo/exc.pyexportdb_error_message:   s   
r!   graph_breaksc                      s"   e Zd ZdZd	 fddZ  ZS )
TorchDynamoExceptiona6  Base exception class for all TorchDynamo-specific exceptions.

    Attributes:
        _torch_dynamo_tracer_output: Optional tracer output attached to the exception
        frame_exec_strategy: Optional frame execution strategy to control how convert_frame
            should handle this exception. When set, convert_frame will use this strategy
            instead of the default behavior. This allows exceptions to signal specific
            execution strategies (e.g., SKIP, RUN_ONLY) without requiring separate
            exception types for control flow.
    argsr   kwargsr   Nonec                   s"   t  j|i | d | _d | _d S N)super__init___torch_dynamo_tracer_outputframe_exec_strategy)selfr$   r%   	__class__r   r    r)   R   s   
zTorchDynamoException.__init__)r$   r   r%   r   r   r&   )__name__
__module____qualname____doc__r)   __classcell__r   r   r-   r    r#   F   s    r#   c                   @     e Zd ZdS )InternalTorchDynamoErrorNr/   r0   r1   r   r   r   r    r5   X       r5   c                   @  r4   )ResumePrologueTracingErrorNr6   r   r   r   r    r8   \   r7   r8   c                      s.   e Zd ZU ded< ddd fd	d
Z  ZS )RestartAnalysis
str | Nonerestart_reasonN)r;   r$   r   r   r&   c                  s   || _ t j|  d S r'   )r;   r(   r)   )r,   r;   r$   r-   r   r    r)   c   s   zRestartAnalysis.__init__)r$   r   r;   r:   r   r&   r/   r0   r1   __annotations__r)   r3   r   r   r-   r    r9   `   s   
 r9   c                   @  r4   )SpeculationRestartAnalysisNr6   r   r   r   r    r>   h   r7   r>   c                   @     e Zd ZdZdS )AutogradGradRestartAnalysiszRaised when autograd.grad consumed grad_fns that are returned.

    On restart, autograd.grad will graph break instead of being traced.
    Nr/   r0   r1   r2   r   r   r   r    r@   l       r@   c                   @  r?   )RequiresGradRestartAnalysiszRaised when a source-less requires_grad_() intermediate leaks as output.

    On restart, requires_grad_() will graph break instead of being traced,
    preserving partial acceleration for code before the call.
    NrA   r   r   r   r    rC   s   rB   rC   c                   @  r4   )UnspecializeRestartAnalysisNr6   r   r   r   r    rD   {   r7   rD   c                   @  r4   ) CompileCollectiveRestartAnalysisNr6   r   r   r   r    rE      r7   rE   c                   @  r4   )TensorifyScalarRestartAnalysisNr6   r   r   r   r    rF      r7   rF   c                   @  r4   )	SkipFrameNr6   r   r   r   r    rG      r7   rG   c                          e Zd Zd
d fdd	Z  ZS )TorchRuntimeErrorNmsgr   
real_stackStackSummary | Noner   r&   c                   6   t  | || _|d ur|| _d S tjj | _d S r'   r(   r)   rJ   torch_guardsTracingContextr   rK   r,   rJ   rK   r-   r   r    r)         
zTorchRuntimeError.__init__r'   rJ   r   rK   rL   r   r&   r/   r0   r1   r)   r3   r   r   r-   r    rI          rI   c                      s   e Zd Zd fddZ  ZS )InvalidBackendnamer   r   r&   c                   s   t  d|d d S )NzInvalid backend: z=, see `torch._dynamo.list_backends()` for available backends.)r(   r)   )r,   rX   r-   r   r    r)      s   
zInvalidBackend.__init__)rX   r   r   r&   rU   r   r   r-   r    rW          rW   c                      s   e Zd Zd fddZ  ZS )ResetRequiredr   r&   c                   s   t  td d S )Nz
                Must call `torch._dynamo.reset()` before changing backends.  Detected two calls to
                `torch.compile()` with a different backend compiler arguments.
                )r(   r)   textwrapdedentr,   r-   r   r    r)      s
   zResetRequired.__init__r   r&   rU   r   r   r-   r    rZ      rY   rZ   c                      s(   e Zd Zd fdd	ZdddZ  ZS )ShortenTracebackr$   r   first_useful_frametypes.FrameType | Noner%   r   r&   c                  s   t  j|i | || _d S r'   )r(   r)   r`   )r,   r`   r$   r%   r-   r   r    r)      s   
zShortenTraceback.__init__typing.Selfc                 C  sZ   | j }| jd u s|d u stjr| S |j| jur(|j}|d us"J d|j| jus| |S )Nz#internal error, please report a bug)__traceback__r`   r   verbosetb_frametb_nextwith_traceback)r,   tbr   r   r    remove_dynamo_frames   s   
z%ShortenTraceback.remove_dynamo_frames)r$   r   r`   ra   r%   r   r   r&   )r   rb   )r/   r0   r1   r)   ri   r3   r   r   r-   r    r_      s    r_   c                      s   e Zd Zd fd	d
Z  ZS )BackendCompilerFailed
backend_fnr   inner_exception	Exceptionr`   ra   r   r&   c                   sF   t |dd| _|| _d| jdt|j d| }t j||d d S )Nr/   ?zbackend=z	 raised:
z: )r`   )getattrbackend_namerl   typer/   r(   r)   )r,   rk   rl   r`   rJ   r-   r   r    r)      s   zBackendCompilerFailed.__init__)rk   r   rl   rm   r`   ra   r   r&   rU   r   r   r-   r    rj      rY   rj   c                      sB   e Zd Z		ddddd fddZdddZddddZ  ZS )Unsupported FN)r   rK   rJ   r   gb_type
skip_frameboolr   r:   rK   rL   r   r&   c                  sL   t  | |stjj }|| _|| _|| _d | _	| 
  || _d| _d S NF)r(   r)   rO   rP   rQ   r   rK   rJ   ru   categoryadd_to_statsrt   logged)r,   rJ   rt   ru   r   rK   r-   r   r    r)      s   

zUnsupported.__init__c                 C  sP   | j d usJ t| j  | j  d8  < t| j  | j dkr&t| j  | j= d S d S )Nr   r   rx   r   rJ   r]   r   r   r    remove_from_stats   s
   zUnsupported.remove_from_statsunimplementedrx   c                 C  s    || _ t| | j  d7  < d S )Nr   r{   )r,   rx   r   r   r    ry      s   zUnsupported.add_to_stats)rs   F)rJ   r   rt   r   ru   rv   r   r:   rK   rL   r   r&   r^   )r}   )rx   r   r   r&   )r/   r0   r1   r)   r|   ry   r3   r   r   r-   r    rr      s    
rr   c                   @  r4   )$UnknownPropertiesDuringBackwardTraceNr6   r   r   r   r    r~      r7   r~   c                   @  r4   )RecompileErrorNr6   r   r   r   r    r      r7   r   c                   @  r4   )InfiniteGeneratorErrorNr6   r   r   r   r    r          r   c                   @  r?   )CondOpArgsMismatchErrorz?
    Internal error from cond() due to arguments mismatch.
    NrA   r   r   r   r    r      rB   r   c                   @  s<   e Zd Ze Ze Ze Ze Ze Ze Z	e Z
e ZdS )UserErrorTypeN)r/   r0   r1   r   DYNAMIC_CONTROL_FLOWANTI_PATTERNSTANDARD_LIBRARYCONSTRAINT_VIOLATIONDYNAMIC_DIMINVALID_INPUTINVALID_OUTPUT*UNSUPPORTED_ALIASED_MUTATED_DYNAMIC_INPUTSr   r   r   r    r     s    
r   c                      s"   e Zd Z	dd fd
dZ  ZS )	UserErrorN
error_typer   rJ   r   r   r:   r   r&   c                   sz   |durt |tsJ |dr|d7 }n|d7 }|t|7 }t | tjj	 | _
d| _d| _|| _|| _|| _dS )aG  
        Type of errors that would be valid in Eager, but not supported in TorchDynamo.
        The error message should tell user about next actions.

        error_type: Type of user error
        msg: Actionable error message
        case_name: (Optional) Unique name (snake case) for the usage example in exportdb.
        N. 
F)
isinstancer   endswithr!   r(   r)   rO   rP   rQ   r   rK   ru   rz   r   rJ   message)r,   r   rJ   r   r-   r   r    r)     s   


zUserError.__init__r'   )r   r   rJ   r   r   r:   r   r&   rU   r   r   r-   r    r     s    r   c                      rH   )StepUnsupportedNrJ   r   rK   rL   r   r&   c                   s2   t  | || _|stjj }|| _d| _d S rw   )	r(   r)   rJ   rO   rP   rQ   r   rK   rz   rR   r-   r   r    r)   -  s   
zStepUnsupported.__init__r'   rT   rU   r   r   r-   r    r   ,  rV   r   c                   @  r4   )UnsafeScriptObjectErrorNr6   r   r   r   r    r   6  r7   r   c                      rH   )UncapturedHigherOrderOpErrorNrJ   r   rK   rL   r   r&   c                   rM   r'   rN   rR   r-   r   r    r)   ;  rS   z%UncapturedHigherOrderOpError.__init__r'   rT   rU   r   r   r-   r    r   :  rV   r   c                   @  r4   )FailOnRecompileLimitHitNr6   r   r   r   r    r   H  r7   r   c                   @  r4   )PackageErrorNr6   r   r   r   r    r   L  r7   r   c                      s$   e Zd Zddd fd
dZ  ZS )ObservedExceptionNrK   r$   r   rK   rL   r%   r   r&   c                  s6   t  j|i | |d ur|| _d S tjj | _d S r'   )r(   r)   rO   rP   rQ   r   rK   r,   rK   r$   r%   r-   r   r    r)   R  s   
zObservedException.__init__r$   r   rK   rL   r%   r   r   r&   rU   r   r   r-   r    r   P  s    r   c                      s.   e Zd ZU ded< ddd fddZ  ZS )ObservedUserStopIterationz
Any | NonevalueNr   r$   r   rK   rL   r%   r   r&   c                  s4   t  jd|d t|dkr|d | _d S d | _d S )Nzunhandled `raise StopIteration`r   r   )r(   r)   lenr   r   r-   r   r    r)   c  s   
z"ObservedUserStopIteration.__init__r   r<   r   r   r-   r    r   ]  s   
 r   c                   @  r4   )ObservedLookupErrorNr6   r   r   r   r    r   m  r   r   c                   @  r4   )ObservedIndexErrorNr6   r   r   r   r    r   r  r   r   c                   @  r4   )ObservedKeyErrorNr6   r   r   r   r    r   w  r   r   c                   @  r4   )ObservedGeneratorExitNr6   r   r   r   r    r   |  r7   r   c                   @  r4   )ObservedAttributeErrorNr6   r   r   r   r    r     r   r   c                   @  r4   )ObservedRuntimeErrorNr6   r   r   r   r    r     r   r   c                   @  r4   )ObservedNotImplementedErrorNr6   r   r   r   r    r     r7   r   c                   @  r4   )ObservedTypeErrorNr6   r   r   r   r    r     r   r   exc_typetype[Exception]type[ObservedException]c                 C  s:   | t vrt| dt| }td| dtfi t | < t |  S )Nr/   ObservedError)observed_exception_mapro   r   rq   r   )r   rX   r   r   r    get_dynamo_observed_exception  s   r   )r$   r%   txr   r$   (list[VariableTracker] | list[str] | Noner%   !dict[str, VariableTracker] | Noner   c                  s   ddl m} ddlm  |r fdd|D }ng } | ||p&i }t||s/J | j	| t
| }|rD|| |)Nr   )ExceptionVals)SourcelessBuilderc                   s&   g | ]}t |tr |n|qS r   )r   r   create).0argr   r   r   r    
<listcomp>  s    z,raise_observed_exception.<locals>.<listcomp>)symbolic_convertr   variables.builderr   r   call_functionr   _attach_traceback_to_exceptionexn_vt_stackset_current_exceptionr   )r   r   r$   r%   r   args_exception_vt
raised_excr   r   r    raise_observed_exception  s"   

r   rJ   c                 C  s   t t| |gd dS )z:Raise a TypeError as an observed exception during tracing.)r$   N)r   	TypeError)r   rJ   r   r   r    raise_type_error  s   r   r   r&   c                 C  s   | j   d S r'   )r   clear_current_exception)r   r   r   r    handle_observed_exception  s   r   erm   codetypes.CodeTypert   contextexplanationhints	list[str]c                  sP   t | | tjjddd  fddd td  t}|||||| dd d S )	Nartifactc                   S  s
   dddS )Ndynamo_graph_break_reasonstring)rX   encodingr   r   r   r   r    <lambda>	  s   z,unimplemented_with_warning.<locals>.<lambda>c                     s    S r'   r   r   graph_break_msgr   r    r     s    )metadata_fn
payload_fnz%sT)rt   r   r   r   from_exclog_warning)format_error_msg_verboserO   _loggingtrace_structuredgraph_breaks_logdebugr}   )r   r   rt   r   r   r   _unimplementedr   r   r    unimplemented_with_warning  s    


r   c                 C  sl   t |d }ddd |D }t |d }|  d| d| d| }t| }|r4|d| 7 }|S )N    r   c                 s  s$    | ]}d t |d  V  qdS )z  Hint: r   N)r[   indentlstrip)r   hintr   r   r    	<genexpr>#  s    
z-format_graph_break_message.<locals>.<genexpr>z
  Explanation: z

  Developer debug context: z:

 For more details about this graph break, please visit: )r[   r   r   joinget_gbid_documentation_link)rt   r   r   r   	hints_strrJ   documentation_linkr   r   r    format_graph_break_message  s"   
r   )maxsizedict[str, Any]c                  C  s   z*t t j} tdt| d}t|}t|}W d   n1 s$w   Y  W n t	y:   t
d i }Y nw i }| D ]\}}|D ]}|||d < qGqA|S )z
    Loads the gb_type to gb_id map from the graph break registry from JSON file with caching.

    Includes historical gb_type (mapping behavior of duplicate gb_types with different gb_ids is undefined).
    rs   zgraph_break_registry.jsonNz!Error accessing the registry fileGb_type)r   __file__resolveparentr   r   openjsonloadrm   log	exceptionitems)
script_dirregistry_pathfregistrymappingkventryr   r   r    _load_gb_type_to_gb_id_map6  s&   


r   r:   c                 C  s0   d}t  }| |v r| d||  d dS dS )z
    Retrieves the GBID documentation link for a given graph break type.

    Args:
        gb_type: The graph break type to look up.

    Returns:
        A string containing the documentation URL if found, otherwise None.
    z;https://meta-pytorch.github.io/compile-graph-break-site/gb/gbGBz.htmlN)r   r   )rt   GRAPH_BREAK_SITE_URLgb_type_to_gb_id_mapr   r   r    r   Q  s   r   F)r   r   ru   r   r   rv   ru   c           	      C  s   t | |||}|rt| |tur:d}t|dr|j}t|tr1|j d| }t|| ||dt|| ||d|t|| |)a  
    Called within dynamo to cause a graph break.
    Args:
        gb_type: Context-free graph break type. It should be a short string without any
                 information specific to the tracing context (i.e. no dynamically-generated strings)
        context: Developer context for the graph break. It can contain tracing context/dynamic strings.
        explanation: User-facing context-dependent explanation for the graph break. Can be dynamic.
        hints: List of user-facing hints for the graph break.
    NrK   zJ

*** While handling this graph break, another graph break occurred: ***

r   )	r   r   warning_NOTHINGhasattrrK   r   rr   rJ   )	rt   r   r   r   r   r   ru   rJ   past_real_stackr   r   r    r}   l  s    


r}   c                   @  s*   e Zd ZdddZddd	Zdd
dZdS )KeyErrorMsgr   r   r   r&   c                 C  s
   || _ d S r'   )r   )r,   r   r   r   r    r)        
zKeyErrorMsg.__init__r   c                 C  s
   t | jS r'   )r   r   r]   r   r   r    __str__  r  zKeyErrorMsg.__str__c                 C  s   |   S r'   )r	  r]   r   r   r    __repr__  s   zKeyErrorMsg.__repr__N)r   r   r   r&   )r   r   )r/   r0   r1   r)   r	  r
  r   r   r   r    r    s    

r  excc                 C  s<   t | dr|d}|d  d| j |d  |d  }|S )N	_hop_namez
  Explanation:r   z
  Higher Order Operator: r      )r  	partitionr  )r  rJ   linesr   r   r    !augment_exc_message_with_hop_name  s
   

"r  r   exportc                 C  s^  dd l }d | _t| }|d ur't|dkr'|d | _|dd|| 7 }tjr<t| dr<|d| j	 d| j	 d7 }tj
sHt| d	rH|d
7 }t| drst| jdrst| jdri|d| jj d| jj d7 }n
|d| jj d7 }t| jdkr|dnt| jd }t| |}t| trt|| f| jdd   | _d S || }|f| jdd   | _d S )Nr   z
from user code:
 rs   record_filenamez!
Last frame execution written to zD. To run only this frame while debugging, run torch._dynamo.replay('z').
rK   z
Set TORCHDYNAMO_VERBOSE=1 for the internal stack trace (please do this especially if you're reporting a bug to PyTorch). For even more developer context, set TORCH_LOGS="+dynamo"
rl   minifier_pathbuck_commandz
Minifier script written to zW. Run this buck command to find the smallest traced graph which reproduces this error: r   zQ. Run this script to find the smallest traced graph which reproduces this error.
r   )	tracebackinnermost_user_frame_summaryget_real_stackr   r   r	   r   replay_record_enabledr  r  rd   rl   r  r  r$   r   r  r   KeyErrorr  )r  rJ   r  r  rK   old_msgnew_msgr   r   r    augment_exc_message  sD   

 

"r  
compile_idr   tuple[str | None, int | None]c                 C  s0   d }d }| j d ur| j j}| j j}|| _||fS r'   )r  filenamelinenor  )r   r  r   r!  r   r   r    get_exc_message  s   
r"  r   c                   C  s
   t t S r'   )filter_stackr   r   r   r   r    get_stack_above_dynamo  r  r$  frameDynamoFrameType | NonerL   c                 C  s<   t | dd }|d u rd S |d urt }nt }t|| S )NrK   )ro   r$  r   	from_list)r  r%  rK   stack_above_dynamor   r   r    r    s   r  stackc                 C  sV   t  }| D ]#}|jd u rqd|jv r |S d|jv s"|jr#d|jv r#q|| q|S )Nconvert_frame
eval_frameztorch._dynamo.optimize()r   r   lineappend)r)  
user_stackr%  r   r   r    r#    s   



r#  rX   c                 C  s0   ddl m} t| d| }|r|dS | S )Nr   )TORCH_DYNAMO_RESUME_IN_PREFIXz_(\w+)_at_\d+)resume_executionr/  rematchgroup)rX   r/  r2  r   r   r    remove_resume_prefix  s
   
r4  !StackSummary | list[FrameSummary]c                 C  s`   t  }| D ](}|jdu rqt|j}|r%|r%|d j|kr%||d< ||_q||_|| q|S )a1  
    When we graph break, we create a resume function and make a regular Python call
    to it, which gets intercepted by Dynamo. This behavior is normally shown in the
    traceback, which can be confusing to a user. So we can filter out resume frames
    for better traceback clarity.

    Example:
    File "..." line 3, in f
        <line 3>
    File "..." line 5, in torch_dynamo_resume_in_f_at_80
        <line 5>
    File "..." line 10, in torch_dynamo_resume_in_f_at_120
        <line 10>

    becomes
    File "..." line 10, in f
        <line 10>
    Nr  )r   r   r4  rX   r-  )r)  	new_stackr%  rX   r   r   r    collapse_resume_frames(  s   

r7  r  c                 C  sp   d|j  d|j d|j d}|d7 }|t 7 }t| |}|d ur6|d7 }|dt|7 }|d7 }|d7 }|S )	NWON'T CONVERT r    line r   z.========== TorchDynamo Stack Trace ==========
zY
========== The above exception occurred while processing the following code ==========

rs   z
==========)co_nameco_filenameco_firstlinenor   r  r   r	   )r  r   r  r%  rJ   rK   r   r   r    r   K  s   

r   c                 C  s.   t | dd dt | dd dt | dd dS )	Nr:  z	<unknown>z (r;  r9  r<  r   ))ro   )r   r   r   r    format_frame_infof  s   

r>  types.CodeType | Nonereasonc                 C  s*   | d urt | }d| d| S d| S )Nz6torch.compile intentionally decided to skip the frame z! and fall back to eager.
Reason: zVtorch.compile intentionally decided to skip the frame and fall back to eager.
Reason: )r>  )r   r@  
frame_infor   r   r    format_skip_frame_messagen  s   rB  c                 C  s8   t jr
t| |||S d|j d|j d|j dt  S )Nr8  r   r9  z 
due to: 
)r   rd   r   r:  r;  r<  r   )r  r   r  r%  r   r   r    format_error_msg|  s   rC  )r   r   r   r   )r   r   r   r   )
r   r   r   r   r$   r   r%   r   r   r   )r   r   rJ   r   r   r   )r   r   r   r&   )r   rm   r   r   rt   r   r   r   r   r   r   r   r   r   )
rt   r   r   r   r   r   r   r   r   r   )r   r   )rt   r   r   r:   )rt   r   r   r   r   r   r   r   r   r   r   rv   ru   rv   r   r   )r  rm   rJ   r   r   r   )r   F)r  rm   rJ   r   r  rv   r   r&   )r   rm   r  r   r   r  )r   r   r'   )r  rm   r%  r&  r   rL   )r)  r   r   r   )rX   r   r   r   )r)  r5  r   r   )NN)
r  rm   r   r   r  r:   r%  r&  r   r   )r   r   r   r   )r   r?  r@  r   r   r   )
__future__r   r   loggingr1  r[   typingenumr   r   	functoolsr   pathlibr   r  r   r   r	   r
   r   r   r   r   torch._guardsrO   torch._utils_internalr   rs   r   utilsr   typestorch._dynamo.variablesr   r   output_graphr   r   r   r   r   r!   	getLoggerr/   r   r   getArtifactLoggerr   RuntimeErrorr#   r5   r8   r9   r>   r@   rC   rD   rE   rF   rG   rI   rW   rZ   r_   rj   rr   r~   r   r   r   r   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r   StopIterationLookupError
IndexErrorGeneratorExitr  AttributeErrorNotImplementedErrorr   r   r   r   r   r   _subclassesfake_tensorDataDependentOutputExceptionDynamicOutputShapeExceptionUnsupportedOperatorExceptionUnsupportedFakeTensorException$UnsupportedMutationAliasingException!exceptions_allowed_to_be_fallbackr   r   r   r   objectr  r}   r  r  r  r"  r$  r  r#  r4  r7  r   r>  rB  rC  r   r   r   r    <module>   s    

!


!

	
&
	*

1

!

	&

