o
    f	                     @   sD   d dl Z d dlZddlmZ ddlmZ dd Zdd Zd	d
 ZdS )    N   )base_futures)
coroutinesc                 C   sn   t | }| jrd|d< |dd|    t| j}|dd| d | jd ur5|dd	| j |S )
N
cancellingr   r   zname=%r   zcoro=<>   z	wait_for=)	r   _future_repr_info_must_cancelinsertget_namer   _format_coroutine_coro_fut_waiter)taskinfocoro r   )/usr/lib/python3.10/asyncio/base_tasks.py_task_repr_info   s   

r   c                 C   s   g }t | jdr| jj}nt | jdr| jj}nt | jdr#| jj}nd }|d urL|d urF|d ur:|dkr6n|d8 }|| |j}|d us-|  |S | jd uru| jj	}|d uru|d urh|dkrd	 |S |d8 }||j
 |j}|d usY|S )Ncr_framegi_frameag_framer   r   )hasattrr   r   r   r   appendf_backreverse
_exception__traceback__tb_frametb_next)r   limitframesftbr   r   r   _task_get_stack   s>   





r%   c                 C   s  g }t  }| j|dD ]-}|j}|j}|j}|j}	||vr'|| t| t	|||j
}
||||	|
f q| j}|sHtd| |d n|d urWtd| d|d n
td| d|d tj||d |d ur}t|j|D ]}
t|
|dd qsd S d S )	N)r!   zNo stack for )filezTraceback for z (most recent call last):z
Stack for  )r&   end)set	get_stackf_linenof_codeco_filenameco_nameadd	linecache
checkcachegetline	f_globalsr   r   print	traceback
print_listformat_exception_only	__class__)r   r!   r&   extracted_listcheckedr#   linenocofilenamenamelineexcr   r   r   _task_print_stack<   s0   

rA   )r0   r5   r'   r   r   r   r%   rA   r   r   r   r   <module>   s    #