o
    ={c                     @   s   d 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  mZ	 ej
ej
eddej
ddfZdd Zdd	 Zd
d ZdddZdd ZdS )z=Utilities related to Keras exception stack trace prettifying.    Nz..Z
tensorflowZpythonc                 C   s   t D ]	}|| v r dS qdS )NFT)_EXCLUDED_PATHS)fnameZ	exclusion r   ;lib/python3.10/site-packages/keras/utils/traceback_utils.pyinclude_frame   s
   r   c                 C   sp   d}t t| }t|D ]\}}t|jjr t|||j	|}q|du r6|r6|d \}}t|||j	|}|S )zFIterate through traceback frames and return a new, filtered traceback.N)
list	tracebackwalk_tbreversedr   f_codeco_filenametypesTracebackTypef_lasti)tbZlast_tbZtb_listfZline_nor   r   r   _process_traceback_frames&   s   r   c                    s8   t jjdkst jjdk r S  fdd}tjj |S )zLFilter out Keras-internal stack trace frames in exceptions raised by
    fn.      c               
      sf   t j s | i |S d }z"z
 | i |W W ~S  ty0 } zt|j}||d d }~ww ~w N)tfZ	debuggingZis_traceback_filtering_enabled	Exceptionr   __traceback__with_traceback)argskwargsZfiltered_tbefnr   r   error_handler;   s   

z'filter_traceback.<locals>.error_handler)sysversion_infomajorminorr   __internal__	decoratormake_decorator)r   r    r   r   r   filter_traceback5   s   r(   c                    s    fdd}t jj |S )a  Add information about call argument values to an error message.

    Arguments:
      fn: Function to wrap. Exceptions raised by the this function will be
        re-raised with additional information added to the error message,
        displaying the values of the different arguments that the function
        was called with.
      object_name: String, display name of the class/function being called,
        e.g. `'layer "layer_name" (LayerClass)'`.

    Returns:
      A wrapped version of `fn`.
    c                     s  d }d }zz | i |W W ~~S  t y } zt|dr|t }z
|j| i |}W n	 ty7   |w g }t|j D ]#}|j	|j
v rUtjt|j
|j	 }n|j}|d|j	 d|  qA|rd|}t|tjjrw|j}n|jr|jd }nd}rn j }	d|	 d| d	|	 d
| }t|tjjr||j|j||j}
nz||}
W n ty   t|}
Y nw d|
_n|}
|
|jd d }~ww ~~w )N_keras_call_info_injectedu     • =
r    z#Exception encountered when calling z.

z

Call arguments received by z:
T) r   hasattrinspect	signatureZbind	TypeErrorr   Z
parametersvaluesnameZ	argumentsr   ZnestZmap_structureformat_argument_valuedefaultappendjoin
isinstanceerrorsZOpErrormessager   __name__	__class__Znode_defopZ
error_codeRuntimeErrorr)   r   r   )r   r   r/   Zbound_signaturer   Zarguments_contextargvaluer9   Zdisplay_nameZnew_er   object_namer   r   r    \   sl   =



<z8inject_argument_info_in_traceback.<locals>.error_handler)r   r%   r&   r'   )r   rA   r    r   r@   r   !inject_argument_info_in_tracebackM   s   DrB   c                 C   s,   t | tjrd| j d| jj dS t| S )Nztf.Tensor(shape=z, dtype=))r7   r   ZTensorshapeZdtyper2   repr)r?   r   r   r   r3      s   r3   r   )__doc__r.   osr!   r	   r   Ztensorflow.compat.v2compatZv2r   pathabspathr6   __file__r   r   r   r(   rB   r3   r   r   r   r   <module>   s   
V