a
    *ñ»j;  ã                   @  sˆ  U d dl mZ d dlZd dlmZ d dlZd dlZd dlZd dlZd dl	m
Z
 d dl	mZ d dlZd dlmZ d dlmZ d dlmZ d d	lmZ d dlZeržejd
k r´d dlmZ ee ƒ Zdddœdd„ZG dd„ de
ƒZeƒ Zded< dddœdd„Zddddœdd„Z ddddœd d!„Z!dddœd"d#„Z"ej#d$d%�d&dd'œd(d)„ƒZ$ej#d$d%�d&dd'œd*d+„ƒZ%ej#d$d%�d&dd'œd,d-„ƒZ&dS ).é    )ÚannotationsN)ÚCallable)Ú
NamedTuple)ÚTYPE_CHECKING)ÚConfig)ÚItem)ÚStashKey)Útracemalloc_message)é   é   )ÚExceptionGroupÚintÚNone)Ú
iterationsÚreturnc                 C  s   t | ƒD ]}t ¡  qd S ©N)ÚrangeÚgcZcollect)r   Ú_© r   úAE:\soccer\ml_env\Lib\site-packages\_pytest/unraisableexception.pyÚgc_collect_harder   s    r   c                   @  s&   e Zd ZU ded< ded< ded< dS )ÚUnraisableMetaÚstrÚmsgÚ	cause_msgzBaseException | NoneÚ	exc_valueN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   r   r   $   s   
r   z;StashKey[collections.deque[UnraisableMeta | BaseException]]Úunraisable_exceptionsr   )Úconfigr   c              
   C  s  | j t j}g }d }d }zÜz
|ƒ }W n ty:   Y qÊY n0 t|tƒr`tdƒ}||_| |¡ q|j	}zt
 t |¡¡ W q tjyÆ } z2|jd ur¨|jf|_|j|_| |¡ W Y d }~qd }~0 0 qt|ƒdkrÞ|d ‚|rìtd|ƒ‚W ~~~n~~~0 d S )Nz&Failed to process unraisable exceptioné   r   z&multiple unraisable exception warnings)Ústashr!   ÚpopÚ
IndexErrorÚ
isinstanceÚBaseExceptionÚRuntimeErrorÚ	__cause__Úappendr   ÚwarningsÚwarnÚpytestZ PytestUnraisableExceptionWarningr   r   ÚargsÚlenr   )r"   Zpop_unraisableÚerrorsÚmetaZ
hook_errorr   Úer   r   r   Úcollect_unraisable/   s6    





"r4   z*Callable[[sys.UnraisableHookArgs], object])r"   Ú	prev_hookr   c                 C  sN   | j  td¡}z0zt|ƒ t| ƒ W |t_n|t_0 W | j t= n
| j t= 0 d S )Né   )r$   ÚgetÚgc_collect_iterations_keyr   r4   ÚsysÚunraisablehookr!   )r"   r5   Zgc_collect_iterationsr   r   r   ÚcleanupV   s    
r;   zsys.UnraisableHookArgsz2Callable[[UnraisableMeta | BaseException], object])Ú
unraisabler+   r   c         	   
   C  s°   z|| j d u rdn| j }|› d| j›�}dd t | j| j| j¡¡ }dt| jƒ }|| | }|| }|t	||| jd�ƒ W n. t
yª } z||ƒ ‚ W Y d }~n
d }~0 0 d S )NzException ignored inz: z

Ú Ú
)r   r   r   )Úerr_msgÚobjectÚjoinÚ	tracebackÚformat_exceptionÚexc_typer   Úexc_tracebackr	   r   r(   )	r<   r+   r?   ÚsummaryZtraceback_messageZtracemalloc_tbr   r   r3   r   r   r   Úunraisable_hookf   s0    ÿýÿýÿrG   c                 C  sD   t j}t ¡ }|| jt< |  tjt	| |d�¡ tjt
|jd�t _d S )N)r"   r5   )r+   )r9   r:   ÚcollectionsÚdequer$   r!   Zadd_cleanupÚ	functoolsÚpartialr;   rG   r+   )r"   r5   rI   r   r   r   Úpytest_configure�   s
    
rL   T)Ztrylastr   )Úitemr   c                 C  s   t | jƒ d S r   ©r4   r"   ©rM   r   r   r   Úpytest_runtest_setup—   s    rP   c                 C  s   t | jƒ d S r   rN   rO   r   r   r   Úpytest_runtest_callœ   s    rQ   c                 C  s   t | jƒ d S r   rN   rO   r   r   r   Úpytest_runtest_teardown¡   s    rR   )'Ú
__future__r   rH   Úcollections.abcr   rJ   r   r9   rB   Útypingr   r   r,   Z_pytest.configr   Z_pytest.nodesr   Z_pytest.stashr   Z_pytest.tracemallocr	   r.   Úversion_infoZexceptiongroupr   r   r8   r   r   r!   r    r4   r;   rG   rL   ZhookimplrP   rQ   rR   r   r   r   r   Ú<module>   s@   

ÿ
')


