o
    i 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..
tensorflowpythonc                 C   s   t D ]	}|| v r dS qdS )NFT)_EXCLUDED_PATHS)fname	exclusion r   N/var/www/myenv/lib/python3.10/site-packages/keras/src/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)tblast_tb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	debuggingis_traceback_filtering_enabled	Exceptionr   __traceback__with_traceback)argskwargs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   r1   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   nestmap_structureformat_argument_valuedefaultappendjoin
isinstanceerrorsOpErrormessager#   __name__	__class__node_defop
error_codeRuntimeErrorr2   r"   r!   )r#   r$   r8   bound_signaturer&   arguments_contextargvaluerH   display_namenew_er(   object_namer   r   r)   \   sl   =



<z8inject_argument_info_in_traceback.<locals>.error_handler)r   r.   r/   r0   )r(   rV   r)   r   rU   r   !inject_argument_info_in_tracebackM   s   DrW   c                 C   s,   t | tjrd| j d| jj dS t| S )Nztf.Tensor(shape=z, dtype=))rE   r   Tensorshapedtyper=   repr)rR   r   r   r   rA      s   rA   r   )__doc__r7   osr*   r   r   tensorflow.compat.v2compatv2r   pathabspathrD   __file__r   r	   r   r1   rW   rA   r   r   r   r   <module>   s   
V