U
e5d]" ã @ sÔ d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
mZ ddl
mZ ddl
m
Z
ddlmZ dd „ Zeƒ ZG d
d„ dƒZdd
„ Zeƒ Zdd„ ZejejejjefZeƒ Zdd„ Zdd„ ZdS ))Ú coroutineÚiscoroutinefunctionÚiscoroutineé Né )Úbase_futures)Ú constants)Úformat_helpers)Úloggerc C s" t jjp t jj o ttj d¡ƒS )NZPYTHONASYNCIODEBUG)ÚsysÚflagsÚdev_modeÚignore_environmentÚboolÚosÚenvironÚget© r r ú*/usr/lib64/python3.8/asyncio/coroutines.pyÚ_is_debug_mode s ÿr c @ sˆ e Zd Zddd„Zdd„ Zdd„ Zdd „ Zd
d„ Zddd
„Zdd„ Z e
dd„ ƒZe
dd„ ƒZe
dd„ ƒZ
dd„ Ze
dd„ ƒZdd„ ZdS )ÚCoroWrapperNc C s> || _ || _t t d¡¡| _t|dd ƒ| _t|dd ƒ| _ d S )Nr Ú__name__Ú__qualname__)
ÚgenÚfuncr Ú
extract_stackr
Ú _getframeÚ_source_tracebackÚgetattrr r )Úselfr r r r r Ú__init__' s
zCoroWrapper.__init__c C sJ t | ƒ}| jr4| jd }|d|d › d|d › �7 }d| jj› d|› d�S ) Néÿÿÿÿz
, created at r ú:r ú<ú ú>)Ú_format_coroutiner Ú __class__r )r Ú coro_reprÚframer r r Ú__repr__/ s
zCoroWrapper.__repr__c C s | S ©Nr ©r r r r Ú__iter__7 s zCoroWrapper.__iter__c C s | j d ¡S r* ©r Úsendr+ r r r Ú__next__: s zCoroWrapper.__next__c C s | j |¡S r* r- )r Úvaluer r r r. = s zCoroWrapper.sendc C s | j |||¡S r* )r Úthrow)r Útyper0 Ú tracebackr r r r1 @ s zCoroWrapper.throwc C s
| j ¡ S r* )r Úcloser+ r r r r4 C s zCoroWrapper.closec C s | j jS r* )r Úgi_framer+ r r r r5 F s zCoroWrapper.gi_framec C s | j jS r* )r Ú
gi_runningr+ r r r r6 J s zCoroWrapper.gi_runningc C s | j jS r* )r Úgi_coder+ r r r r7 N s zCoroWrapper.gi_codec C s | S r* r r+ r r r Ú __await__R s zCoroWrapper.__await__c C s | j jS r* )r Úgi_yieldfromr+ r r r r9 U s zCoroWrapper.gi_yieldfromc C s€ t | dd ƒ}t |dd ƒ}|d k r||jdkr|| ›d�}t | ddƒ}|rrd t |¡¡}|dtj› d �7 }|| ¡ 7 }t |¡ d S )
Nr r5 r z was never yielded fromr r Ú zB
Coroutine object created at (most recent call last, truncated to z last lines):
)
r Úf_lastiÚjoinr3 Úformat_listr ZDEBUG_STACK_DEPTHÚrstripr Úerror)r r r( ÚmsgÚtbr r r Ú__del__Y s
zCoroWrapper.__del__)N)NN)r Ú
__module__r r r) r, r/ r. r1 r4 Úpropertyr5 r6 r7 r8 r9 rB r r r r r $ s"
r c sz t jdtdd� t ˆ¡rˆS t ˆ¡r.ˆ‰ nt ˆ¡‡fdd„ƒ‰ t ˆ ¡‰ t
sXˆ }nt ˆ¡‡ ‡fdd„ƒ}t|_|S )z„Decorator to mark coroutines.
If the coroutine is not yielded from before it is destroyed,
an error message is logged.
zN"@coroutine" decorator is deprecated since Python 3.8, use "async def" insteadé )Ú
stacklevelc ? sr ˆ | |Ž}t |¡s(t |¡s(t|tƒr4|E d H }n:z
|j}W n tk
rR Y nX t|tj j
ƒrn|ƒ E d H }|S r* )r ZisfutureÚinspectZisgeneratorÚ
isinstancer r8 ÚAttributeErrorÚcollectionsÚabcÚ Awaitable)ÚargsÚkwÚresZ
await_meth©r r r Úcoroz s
ÿ
zcoroutine.