o
    Ne                     @   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
tensorflowpythonc                 C   s   t D ]	}|| v r dS qdS )NFT)_EXCLUDED_PATHS)fnameZ	exclusion r   KD:\Projects\ConvertPro\env\Lib\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f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)tf	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	signaturebind	TypeErrorr	   
parametersvaluesname	argumentsr   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   r2   Zbound_signaturer    Zarguments_contextargvaluer@   Zdisplay_nameZnew_er"   object_namer   r   r#   \   sl   =



<z8inject_argument_info_in_traceback.<locals>.error_handler)r   r(   r)   r*   )r"   rH   r#   r   rG   r   !inject_argument_info_in_tracebackM   s   DrI   c                 C   s,   t | tjrd| j d| jj dS t| S )Nztf.Tensor(shape=z, dtype=))r>   r   ZTensorshapeZdtyper7   repr)rF   r   r   r   r:      s   r:   r   )__doc__r1   osr$   r
   r   Ztensorflow.compat.v2compatv2r   pathabspathr=   __file__r   r   r   r+   rI   r:   r   r   r   r   <module>   s   
V