
    tni                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ erd 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Zee         Z edeee         eeee         d          Z eddei          Zeeeef         Zeedf         Zeeef         Zeeeee         f         Zeeeef                  ZdZdZ er	dddefdZ!ndddefdZ!d&dZ"dddddeddfdZ#e fdd d!d"ded#edd$f
d%Z$dS )'    N)deque)PY311)filename_for_module)TYPE_CHECKING)LRUCache)	FrameType)Deque)List)Optional)Sequence)Tuple)	TypedDictProcessedFrame)abs_pathfilenamefunctionlinenomoduleProcessedThreadMetadataname.e      framer   returnc                     | j         j        S N)f_codeco_qualname)r   s    V/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/profiler/utils.pyget_frame_namer    B   s    |''    c                    | j         }|j        }|j        }	 |r]|d         dk    rQd| j        v rHt	          | j        d                   j        D ](}||j        v rd                    |j        |          c S )n# t          t          f$ r Y nw xY w	 |rP|d         dk    rDd| j        v r;| j        d         j        D ](}||j        v rd                    |j        |          c S )n# t          t          f$ r Y nw xY w|S )Nr   selfz{}.{}cls)r   co_varnamesco_namef_localstype__mro____dict__format__name__AttributeError
ValueError)r   r   r%   r   r$   s        r   r    r    G   sa   ( ~
	 B !,A& 8 8Vu~=U=Uv 677? B BCs|++&~~clDAAAAA ,
+ 	 	 	D	

	 B !,A% 7 7EU^<S<S >%08 B BCs|++&~~clDAAAAA ,
+ 	 	 	D	 s1   AA7 5A7 7B
BAC"  C" "C65C6	raw_frameFrameIdc                 D    | j         j        | j        t          |           fS r   )r   co_filenamef_linenor    )r/   s    r   frame_idr4   q   s     ()*<nY>W>WXXr!   fidcwdc                     |j         j        }	 |j        d         }n# t          $ r d }Y nw xY wt          j                            ||          |t          ||          pd | d         |j        dS )Nr,      )r   r   r   r   r   )	r   r2   	f_globals	Exceptionospathjoinr   r3   )r5   r/   r6   r   r   s        r   extract_framer>   u   s    +H$Z0    GLLh//'99ATF$  s    ++zOptional[FrameType]cacher   max_stack_depthExtractedStackc                    t          |          }|  | j        }|                    |            |} |  t          d |D                       }g }t	          |          D ]^\  }}	|                    |	          }
|
-t          |	||         |          }
|                    |	|
           |                    |
           _t          |          t          |          f}|||fS )aA  
    Extracts the stack starting the specified frame. The extracted stack
    assumes the specified frame is the top of the stack, and works back
    to the bottom of the stack.

    In the event that the stack is more than `MAX_STACK_DEPTH` frames deep,
    only the first `MAX_STACK_DEPTH` frames will be returned.
    )maxlenNc              3   4   K   | ]}t          |          V  d S r   )r4   ).0r/   s     r   	<genexpr>z extract_stack.<locals>.<genexpr>   s*      FFihy))FFFFFFr!   )
r   f_backappendtuple	enumerategetr>   setlenhash)r/   r?   r6   r@   
raw_framesrG   	frame_idsframesir5   r   stack_ids               r   extract_stackrT      s     &+/%B%B%BJ

!)$$$	 

 FF:FFFFFIFI&&  3		#=!#z!}c::EIIc5!!!e :Y/HY&&r!   )r/   r   r   r0   )%r;   collectionsr   sentry_sdk._compatr   sentry_sdk.utilsr   typingr   sentry_sdk._lru_cacher   typesr   r	   r
   r   r   r   typing_extensionsr   strThreadIdintProcessedStackr   r   r0   FrameIdsStackIdrA   ExtractedSampleDEFAULT_SAMPLING_FREQUENCYMAX_STACK_DEPTHr    r4   r>   rT    r!   r   <module>rf      s   				       $ $ $ $ $ $ 0 0 0 0 0 0             ,@......++++++H#YNY sm	
 	
	 	N (i!	 
 	G
 Wc\"H CHoG7Hd>.BBCNuX~%=>?O !   	 .(k (c ( ( ( ( (
'k 'c ' ' ' 'TY Y Y Yy [ s GW    @ +	,' ,'$,',' 
,' 	,'
 ,' ,' ,' ,' ,' ,'r!   