a
    If	                     @   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rj|dd	| j |S )
NZ
cancellingr   r   zname=%r   zcoro=<>   z	wait_for=)	r   Z_future_repr_infoZ_must_cancelinsertZget_namer   Z_format_coroutine_coroZ_fut_waiter)taskinfocoro r   #lib/python3.9/asyncio/base_tasks.py_task_repr_info   s    

r   c                 C   s   g }t | jdr| jj}n0t | jdr0| jj}nt | jdrF| jj}nd }|d ur|d ur|d urt|dkrlq|d8 }|| |j}qR|  nH| jd ur| jj	}|d ur|d ur|dkrq|d8 }||j
 |j}q|S )Ncr_framegi_frameag_framer   r   )hasattrr	   r   r   r   appendf_backreverse
_exception__traceback__tb_frametb_next)r
   limitZframesftbr   r   r   _task_get_stack   s6    





r   c                 C   s   g }t  }| j|dD ]Z}|j}|j}|j}|j}	||vrN|| t| t	|||j
}
||||	|
f q| j}|std| |d n2|d urtd| d|d ntd| d|d tj||d |d urt|j|D ]}
t|
|dd qd S )	N)r   zNo stack for )filezTraceback for z (most recent call last):z
Stack for  )r   end)setZ	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<   s,    

r9   )r(   r-   r    r   r   r   r   r9   r   r   r   r   <module>   s   #