a
    Sic                     @   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   W/var/www/html/django/DPS/env/lib/python3.9/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 rl|rl|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               
      s|   t j s | i |S d }zVz | i |W W ~S  tyl } z"t|j}||d W Y d }~n
d }~0 0 W ~n~0 d S )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    r0   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rD|t }z|j| i |}W n tyx   |Y n0 g }t|j D ]F}|j	|j
v rtjt|j
|j	 }n|j}|d|j	 d|  q|rd|}t|tjj r|j}n|jr|jd }nd}rn j }	d|	 d| d	|	 d
| }t|tjjrj||j|j||j}
n,z||}
W n ty   t|}
Y n0 d|
_n|}
|
|jd W Y d }~n
d }~0 0 W ~~n~~0 d S )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RuntimeErrorr1   r!   r    )r"   r#   r7   Zbound_signaturer%   Zarguments_contextargvaluerG   display_nameZnew_er'   object_namer   r   r(   \   sj    =




&z8inject_argument_info_in_traceback.<locals>.error_handler)r   r-   r.   r/   )r'   rR   r(   r   rQ   r   !inject_argument_info_in_tracebackM   s    DrS   c                 C   s,   t | tjr$d| j d| jj dS t| S )Nztf.Tensor(shape=z, dtype=))rD   r   Tensorshapedtyper<   repr)rO   r   r   r   r@      s    r@   )N)__doc__r6   osr)   r   r   tensorflow.compat.v2compatv2r   pathabspathrC   __file__r   r	   r   r0   rS   r@   r   r   r   r   <module>   s   
V