grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \+ã@s®dddgZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z dd lm Z dd l mZejd Zejj o eejjd ƒƒZyejZejZWnek rÎdZdZYnXy ejZWnek röd d„ZYnXyddlmZ m!Z"Wne#k �r*dZ Z"YnXdd„Z$e$ƒZ%[$dd„Z&Gdd„dƒZ'dd„Ze(ƒZ)dd„Zej*e'fZ+e dk �r†e+e f7Z+edk �ršefe+Z+dd„Z,dd„Z-dS)Ú coroutineÚiscoroutinefunctionÚ iscoroutineéNé)Úcompat)Ú constants)Úevents)Ú base_futures)ÚloggerZ YIELD_FROMZPYTHONASYNCIODEBUGcCsdS)NF©)Úfuncr r ú*/usr/lib64/python3.6/asyncio/coroutines.pyÚ/sr)Ú CoroutineÚ AwaitablecCsFGdd„dƒ}dd„}d}|ƒ}||ƒ}t|ƒ|j|ƒ|j|fkS) Nc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) z!has_yield_from_bug..MyGencSs d|_dS)N)Ú send_args)Úselfr r r Ú__init__;sz*has_yield_from_bug..MyGen.__init__cSs|S)Nr )rr r r Ú__iter__=sz*has_yield_from_bug..MyGen.__iter__cSsdS)Né*r )rr r r Ú__next__?sz*has_yield_from_bug..MyGen.__next__cWs ||_dS)N)r)rZwhatr r r ÚsendAsz&has_yield_from_bug..MyGen.sendN)Ú__name__Ú __module__Ú __qualname__rrrrr r r r ÚMyGen:srcss|EdHdS)Nr )Úgenr r r Úyield_from_genDsz*has_yield_from_bug..yield_from_genréé)rrr)Únextrr)rrÚvaluerÚcoror r r Úhas_yield_from_bug9s  r#cCs t|dƒS)N)Ú CoroWrapper)rr r r Ú debug_wrapperPsr%c@sÌeZdZd%dd„Zdd„Zdd„Zdd „Zer8d d „Znd d „Zd&d d„Z dd„Z e dd„ƒZ e dd„ƒZ e dd„ƒZejrÀdd„Ze dd„ƒZe dd„ƒZe dd„ƒZe dd „ƒZe d!d"„ƒZd#d$„ZdS)'r$NcCsZtj|ƒstj|ƒst|ƒ‚||_||_tjtj dƒƒ|_ t |ddƒ|_ t |ddƒ|_ dS)Nrrr)ÚinspectÚ isgeneratorrÚAssertionErrorrr rÚ extract_stackÚsysÚ _getframeÚ_source_tracebackÚgetattrrr)rrr r r r r[s zCoroWrapper.__init__cCs@t|ƒ}|jr0|jd}|d|d|df7}d|jj|fS)Nrz, created at %s:%srz<%s %s>éÿÿÿÿ)Ú_format_coroutiner,Ú __class__r)rÚ coro_reprÚframer r r Ú__repr__cs  zCoroWrapper.__repr__cCs|S)Nr )rr r r rjszCoroWrapper.__iter__cCs |jjdƒS)N)rr)rr r r rmszCoroWrapper.__next__cGsBtjƒ}|j}|jdkst‚|jj|jtkr6|d}|jj |ƒS)Nr) r*r+Úf_backÚf_lastir(Úf_codeÚco_codeÚ _YIELD_FROMrr)rr!r2Zcallerr r r rus zCoroWrapper.sendcCs |jj|ƒS)N)rr)rr!r r r r}scCs|jj|||ƒS)N)rÚthrow)rÚtyper!Ú tracebackr r r r9€szCoroWrapper.throwcCs |jjƒS)N)rÚclose)rr r r r<ƒszCoroWrapper.closecCs|jjS)N)rÚgi_frame)rr r r r=†szCoroWrapper.gi_framecCs|jjS)N)rÚ gi_running)rr r r r>ŠszCoroWrapper.gi_runningcCs|jjS)N)rÚgi_code)rr r r r?ŽszCoroWrapper.gi_codecCs,t|jddƒ}|dk r(tdj|j|ƒƒ‚|S)NÚcr_awaitz;Cannot await on coroutine {!r} while it's awaiting for {!r})r-rÚ RuntimeErrorÚformat)rr@r r r Ú __await__”s  zCoroWrapper.__await__cCs|jjS)N)rÚ gi_yieldfrom)rr r r rDœszCoroWrapper.gi_yieldfromcCs|jjS)N)rr@)rr r r r@ szCoroWrapper.cr_awaitcCs|jjS)N)rÚ cr_running)rr r r rE¤szCoroWrapper.cr_runningcCs|jjS)N)rÚcr_code)rr r r rF¨szCoroWrapper.cr_codecCs|jjS)N)rÚcr_frame)rr r r rG¬szCoroWrapper.cr_framecCs’t|ddƒ}t|ddƒ}|dkr,t|ddƒ}|dk rŽ|jd krŽd|}t|dfƒ}|r„djtj|ƒƒ}|dtj›d �7}||jƒ7}tj |ƒdS) Nrr=rGrz%r was never yielded fromr,ÚzB Coroutine object created at (most recent call last, truncated to z last lines): r.) r-r5Újoinr;Ú format_listrZDEBUG_STACK_DEPTHÚrstripr Úerror)rrr2ÚmsgÚtbr r r Ú__del__°s     zCoroWrapper.__del__)N)NN)rrrrr3rrÚ_YIELD_FROM_BUGrr9r<Úpropertyr=r>r?rZPY35rCrDr@rErFrGrOr r r r r$Xs(           r$csptˆƒr ˆStjˆƒrˆ‰ntjˆƒ‡fdd„ƒ‰tsNtdkrDˆ}qftˆƒ}ntjˆƒ‡‡fdd„ƒ}t|_|S)z„Decorator to mark coroutines. If the coroutine is not yielded from before it is destroyed, an error message is logged. c ?svˆ||Ž}tj|ƒs(tj|ƒs(t|tƒr4|EdH}n>tdk rry |j}Wntk rZYnXt|tƒrr|ƒEdH}|S)N) r Zisfuturer&r'Ú isinstancer$Ú _AwaitableABCrCÚAttributeError)ÚargsÚkwÚresZ await_meth)r r r r"Òs      zcoroutine..coroNcs@tˆ||Žˆd�}|jr |jd=tˆddƒ|_tˆddƒ|_|S)N)r rrrr.)r$r,r-rr)rUÚkwdsÚw)r"r r r Úwrapperês zcoroutine..wrapper)Ú_inspect_iscoroutinefunctionr&ÚisgeneratorfunctionÚ functoolsÚwrapsÚ_DEBUGÚ_types_coroutineÚ _is_coroutine)r rZr )r"r r rÂs   cCst|ddƒtkpt|ƒS)z6Return True if func is a decorated coroutine function.raN)r-rar[)r r r r rÿscCs t|tƒS)z)Return True if obj is a coroutine object.)rRÚ_COROUTINE_TYPES)Úobjr r r rsc Cs&t|ƒs t‚t|dƒ ržt|dƒ ržt|dt|dt|ƒjƒƒ}dj|ƒ}d}y |j}Wn4tk rŠy |j }Wntk r„YnXYnX|ršdj|ƒS|Sd}t |t ƒrÌ|j }|j }|dk rÐdj|ƒ}n|}|dkrætj|fiƒ}d}t|dƒoø|j�r|j}nt|dƒ�r|j�r|j}d}t|dƒ�r>|j�r>|j}nt|d ƒ�rX|j�rX|j}d }|�rp|j�rp|j}d }|}t |t ƒ�rètj|j ƒ �rè|j dk �rètj|j ƒ} | dk �r¾| \}}|dk�rØd |||f}nd |||f}n:|dk �r|j}d|||f}n|�r"|j}d |||f}|S)NrFr?rrz{}()Fz {} runningrGr=zrz%s done, defined at %s:%sz%s running, defined at %s:%sz%s running at %s:%s)rr(Úhasattrr-r:rrBrErTr>rRr$r rrZ_format_callbackrFr?rGr=Ú co_filenamer&r\Z_get_function_sourceÚf_linenoÚco_firstlineno) r"Z coro_nameZrunningr Z coro_codeZ coro_frameÚfilenameÚlinenor1Úsourcer r r r/sz               r/).Ú__all__r]r&ZopcodeÚosr*r;ÚtypesrHrrrr Úlogr Zopmapr8ÚflagsÚignore_environmentÚboolÚenvironÚgetr_rr`Ú CoroutineTypeZ_types_CoroutineTyperTrr[Úcollections.abcrZ _CoroutineABCrrSÚ ImportErrorr#rPr%r$ÚobjectraÚ GeneratorTyperbrr/r r r r ÚsZ         j: