o
    iu,                     @   s|  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 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 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 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 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  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( d dl)m*Z* d d l+m,Z, e-g d!Z.e/d"Z0e-e1e2e3e4e5e0e/e6eg	Z7e-e8eeegZ9e-e:e;e<e-egZ=e9e=B Z>e7e>B Z?eeeeeeee@eAeBf
ZCe, d#e/d$e3fd%d&ZDd'ed(e3d)e1d*e1d+e1d,e1d$e3fd-d.ZEee eefd'ed)e1d*e1d+e1d,e1d$e3fd/d0ZFdHd2ed3e1d$e:e8 fd4d5ZGdHd6ed3e1d$e:e8 fd7d8ZHd9e(d$ee8e3ef  fd:d;ZId<ed$e8fd=d>ZJd?ed$e8fd@dAZKeee ed"fdBee;e3ef  d)e1d+e1d*e1d,e1dCeeege5f  d$e8e3ef fdDdEZLeee ed"fd'ed)e1d+e1d*e1d,e1dCeeege5f  d$e8e3ef fdFdGZMd"S )I    )Counter)OrderedDict)defaultdict)deque)
Collection)Decimal)islice)	takewhile)BuiltinFunctionType)BuiltinMethodType)	FrameType)FunctionType)
MethodType)MethodWrapperType)TracebackType)Any)Callable)Iterable)Optional)BoundFunctionWrapper)FunctionWrapper)	MAXFIELDS)MAXLEN)MAXLEVEL)MAXSIZE)REDACTED_PLACEHOLDER)redact)redact_type)
get_fields)ExcInfoType)_isinstance)cached)	__class____dict____weakref____doc__
__module____hash__N_typereturnc                 C   sD   z| j W S  ty!   z| jW  Y S  ty    t|  Y  Y S w w N)__qualname__AttributeError__name__repr)r(    r/   S/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/debugging/_signal/utils.pyqualname>   s   r1   valuebracketslevelmaxsizemaxlen	maxfieldsc           	   	      sX   |d |d }}t | krdnd}d|d fddt| D ||fS )Nr      z, ... , c                 3   $    | ]}t | d  V  qdS r8   N	serialize.0_r4   r7   r6   r5   r/   r0   	<genexpr>O   s   " z(_serialize_collection.<locals>.<genexpr>)lenjoinr   )	r2   r3   r4   r5   r6   r7   ocellipsisr/   rB   r0   _serialize_collectionI   s
   *rI   c                    sX  t | tr
t| S t| tv r6t| }d|d t|kr2d|d dkr-d fS d fS dfS  s>tt| S t| t	v rZdd fdd	t
|  D  S t| tthv rkt| d
 S t| tu rzt| d S t| tthv r| rt| d S dS dt| jd fdd	t
t|  D f S )zPython object serializer.

    We provide our own serializer to avoid any potential side effects of calling
    ``str`` directly on arbitrary objects.
    r9   Nz...r   'z{%s}r:   c              	   3   sP    | ]#\}}d   fdd|t|ttfrt|s|ntfD V  qdS )z: c                 3   r;   r<   r=   r?   rB   r/   r0   rC   j   s
    
z&serialize.<locals>.<genexpr>.<genexpr>N)rE   r    strbytesr   r   r@   kvrB   r/   r0   rC   h   s     
zserialize.<locals>.<genexpr>z[]z()z{}zset()z%s(%s)c              
   3   s:    | ]\}}t |sd |t| d fV  qdS )=r8   N)r   rE   r>   rM   rB   r/   r0   rC   |   s    
)r    CALLABLE_TYPESobject__repr__typeBUILTIN_SIMPLE_TYPESr.   rE   rD   BUILTIN_MAPPING_TYPESr   itemslistr   rI   tupleset	frozensetr-   r   )r2   r4   r5   r6   r7   rr/   rB   r0   r>   S   s6   
	
Dr>      	top_frame
max_heightc                 C   sT   | }g }d}|r(||k r(|j }||j|j|jd |j}|d7 }|r(||k s|S Nr   )fileNamefunction
lineNumberr8   )f_codeappendco_filenameco_namef_linenof_back)r^   r_   framestackhcoder/   r/   r0   capture_stack   s   rn   tbc                 C   sb   g }d}| }|d ur/||k r/|j }|j}||j|j|jd |j}|d7 }|d ur/||k s|S r`   )tb_framerd   re   rf   rg   	tb_linenotb_next)ro   r_   rk   rl   _tbrj   rm   r/   r/   r0   capture_traceback   s    rt   exc_infoc                 C   sR   | \}}}|d u s|d u rd S |j ddd |jD |d ur%t|dS d dS )Nr:   c                 S   s   g | ]}t |qS r/   r=   r@   rO   r/   r/   r0   
<listcomp>   s    z$capture_exc_info.<locals>.<listcomp>)rT   message
stacktrace)r-   rE   argsrt   )ru   r(   r2   ro   r/   r/   r0   capture_exc_info   s   
r{   rO   c                 C   s   t t| ddS )NredactedIdentrT   notCapturedReason)r1   rT   )rO   r/   r/   r0   redacted_value   s   r   tc                 C   s   t | ddS )NredactedTyper}   )r1   )r   r/   r/   r0   redacted_type   s   r   pairsstopping_condc                    s    fdd| D S )Nc              
      s4   i | ]\}}|t |st| nt|qS r/   r   capture_valuer   r@   nrO   r4   r7   r6   r5   r   r/   r0   
<dictcomp>   s    "z!capture_pairs.<locals>.<dictcomp>r/   )r   r4   r6   r5   r7   r   r/   r   r0   capture_pairs   s   r   c              	      s  |d ur|ndd  t | }|tv rG|tu rdddS  | r't| jdS t| }t|}|kr:t||dS t||d  d|dS |tv rшd	k rYt|d
t| dS  | rht| jt| dS d }	|tv r fddt	 fddt
|  D }	t||	t| d}
n! fddt	 fddt
| D }	t||	t| d}
t|	tt| k rň j|
d< |
S t| krd|
d< |
S d	k rt|d
dS tt|rt|S  | rt| jdS t| }t| trdD ]}z
t| |||< W q ty   Y qw  fddt	 fddt
|  D }t||d}
t|tt|k rI j|
d< nt|krTd|
d< t| trhdD ]}||v rf||= q\|
S )Nc                 S   s   dS )NFr/   rA   r/   r/   r0   <lambda>   s    zcapture_value.<locals>.<lambda>NoneTypeT)rT   isNullr}   )rT   r2   )rT   r2   	truncatedsizer   depth)rT   r~   r   c                    s^   g | ]+\}}t |d   dt|ttfrt|s(t |d   dnt|fqS r8   )r4   r6   r5   r7   r   )r   r    rK   rL   r   r   rM   condr4   r7   r6   r5   r/   r0   rw     s0    	z!capture_value.<locals>.<listcomp>c                    
    |  S r*   r/   r   r   r/   r0   r        
 )rT   entriesr   c              
      s$   g | ]}t |d   dqS r   )r   rv   r   r/   r0   rw   #  s    	c                    r   r*   r/   r   r   r/   r0   r   ,  r   )rT   elementsr   r~   collectionSize)rz   	__cause____context____suppress_context__c                    s:   i | ]\}}|t |st|d   dnt|qS r   r   r   r   r/   r0   r   U  s    z!capture_value.<locals>.<dictcomp>c                    r   r*   r/   r   r   r/   r0   r   [  r   )rT   fields
fieldCount)rT   rU   r   r1   r-   r>   rD   BUILTIN_CONTAINER_TYPESrV   r	   r   rW   minr   r   r   r    BaseExceptionrR   __getattribute__r,   copy)r2   r4   r6   r5   r7   r   r(   
value_reprvalue_repr_len
collectiondatar   attrcaptured_fieldsr/   r   r0   r      s   

	
	
r   )r]   )Ncollectionsr   r   r   r   collections.abcr   decimalr   	itertoolsr   r	   typesr
   r   r   r   r   r   r   typingr   r   r   r   wrapt.wrappersr   r   ddtrace.debugging._probe.modelr   r   r   r   ddtrace.debugging._redactionr   r   r   ddtrace.debugging._safetyr   ddtrace.internal.compatr   ddtrace.internal.safetyr    ddtrace.internal.utils.cacher!   r[   EXCLUDED_FIELDSrT   r   intfloatrK   rL   boolcomplexrU   dictrV   rX   rY   rZ   BUILTIN_SEQUENCE_TYPESr   BUILTIN_TYPESpropertyclassmethodstaticmethodrQ   r1   rI   r>   rn   rt   r{   r   r   r   r   r/   r/   r/   r0   <module>   s    


2


