§
    xÅj¦  ã                   óÜ  — 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r–d dl	m
Z
 d dlmZmZmZmZ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)ÚTYPE_CHECKING)ÚPY311)Úfilename_for_module)Ú	FrameType)ÚDequeÚListÚOptionalÚSequenceÚTuple)Ú	TypedDict)ÚLRUCacheÚProcessedFrame)Úabs_pathÚfilenameÚfunctionÚlinenoÚmoduleÚProcessedThreadMetadataÚname.ée   é€   Úframer   Úreturnc                 ó   — | j         j        S ©N)Úf_codeÚco_qualname)r   s    úJC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/profiler/utils.pyÚget_frame_namer    ?   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    D   sa  € Ø”ˆØÔ(ˆð Œ~ˆð
	ð ðBð !,¨A¤°&Ò 8Ð 8¸VÀuÄ~Ð=UÐ=Uå ¤¨vÔ 6Ñ7Ô7Ô?ð Bð B�CØ˜sœ|Ð+Ð+Ø&Ÿ~š~¨c¬l¸DÑAÔAÐAÐAÐAð ,øøå¥
Ð+ð 	ð 	ð 	ØˆDð	øøøð

	ð ðBð !,¨A¤°%Ò 7Ð 7¸EÀUÄ^Ð<SÐ<Sà œ>¨%Ô0Ô8ð Bð B�CØ˜sœ|Ð+Ð+Ø&Ÿ~š~¨c¬l¸DÑ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   n   s    € ØÔÔ(¨)Ô*<½nÈYÑ>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>   r   s‹   € ØÔÔ+€HðØÔ$ ZÔ0ˆˆøÝð ð ð Øˆˆˆðøøøõ ”G—L’L  hÑ/Ô/ØÝ'¨°Ñ9Ô9ÐA¸TØ˜”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ÐF¨i•h˜yÑ)Ô)Ð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Ô%B€Jà
Ð
ØÔ!ˆØ×Ò˜)Ñ$Ô$Ð$Øˆ	ð Ð
õ
 ÐFÐF¸:ÐFÑFÔFÑFÔF€IØ€FÝ˜IÑ&Ô&ð ð ‰ˆˆ3Ø—	’	˜#‘”ˆØˆ=Ý! # z°!¤}°cÑ:Ô:ˆEØ�IŠI�c˜5Ñ!Ô!Ð!Ø�Š�eÑÔÐÐõ �:‰Œ¥ Y¡¤Ð/€Hà�Y Ð&Ð&r!   )r/   r   r   r0   )%r;   Úcollectionsr   Útypingr   Úsentry_sdk._compatr   Úsentry_sdk.utilsr   Útypesr   r   r	   r
   r   r   Útyping_extensionsr   Úsentry_sdk._lru_cacher   Ú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à˜#”Y€Nà�YØàØ  œØØØ˜s”mð	
ð 	
ñ	ô 	€Nð (˜iØ!Ø	�ˆñô Ðð
 ØØØð	ô€Gð
 �W˜c�\Ô"€Hð �C˜�HŒo€Gà˜7 H¨d°>Ô.BÐBÔC€NØ˜u X¨~Ð%=Ô>Ô?€Oð !Ð ð €ð 	ð .ð(˜kð (¨cð (ð (ð (ð (ð (ð
'˜kð '¨cð 'ð 'ð 'ð 'ðTYð Yð Yð Yð�yð ¨[ð ¸sð ÐGWð ð ð ð ð@ +ð	,'ð ,'Ø$ð,'àð,'ð 
ð,'ð ð	,'ð
 ð,'ð ,'ð ,'ð ,'ð ,'ð ,'r!   