й¼]Ý)ã@s(dddgZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z dd l m Z ejd Zejj oÒeejjd ƒƒZyejZejZWnek r dZdZYnXy ejZWnek r9d d „ZYnXyddlmZm Z!Wne"k rrdZZ!YnXdd„Z#e#ƒZ$[#dd„Z%Gdd„dƒZ&dd„Ze'ƒZ(dd„Zej)e&fZ*edk róe*ef7Z*edk r efe*Z*dd„Z+dd„Z,dS)Ú coroutineÚiscoroutinefunctionÚ iscoroutineéNé)Úcompat)Úevents)Úfutures)ÚloggerZ YIELD_FROMZPYTHONASYNCIODEBUGcCsdS)NF©)Úfuncr r ú//opt/alt/python35/lib64/python3.5/coroutines.pyÚ.sr )Ú CoroutineÚ AwaitablecCsaGdd„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 Úsend@s z&has_yield_from_bug..MyGen.sendN)Ú__name__Ú __module__Ú __qualname__rrrrr r r r ÚMyGen9s    rcss |EdHdS)Nr )Úgenr r r Úyield_from_genCsz*has_yield_from_bug..yield_from_genréé)rrr)Únextrr)rrÚvaluerÚcoror r r Úhas_yield_from_bug8s     r"cCs t|dƒS)N)Ú CoroWrapper)rr r r Ú debug_wrapperOsr$c@s3eZdZddd„Zdd„Zdd„Zdd „ZerTd d „Zn d d „Zddd 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#NcCs[||_||_tjtjdƒƒ|_t|ddƒ|_t|ddƒ|_ dS)Nrrr) rr Ú tracebackÚ extract_stackÚsysÚ _getframeÚ_source_tracebackÚgetattrrr)rrr r r r rZs   zCoroWrapper.__init__cCsRt|ƒ}|jr>|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__bs    zCoroWrapper.__repr__cCs|S)Nr )rr r r riszCoroWrapper.__iter__cCs|jjdƒS)N)rr)rr r r rlszCoroWrapper.__next__cGsHtjƒ}|j}|jj|jtkr8|d}|jj|ƒS)Nr) r'r(Úf_backÚf_codeÚco_codeÚf_lastiÚ _YIELD_FROMrr)rr r/Zcallerr r r rts    zCoroWrapper.sendcCs|jj|ƒS)N)rr)rr r r r r|scCs|jj|||ƒS)N)rÚthrow)rÚtyper r%r r r r6szCoroWrapper.throwcCs |jjƒS)N)rÚclose)rr r r r8‚szCoroWrapper.closecCs |jjS)N)rÚgi_frame)rr r r r9…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 r@›szCoroWrapper.gi_yieldfromcCs |jjS)N)rr<)rr r r r<ŸszCoroWrapper.cr_awaitcCs |jjS)N)rÚ cr_running)rr r r rA£szCoroWrapper.cr_runningcCs |jjS)N)rÚcr_code)rr r r rB§szCoroWrapper.cr_codecCs |jjS)N)rÚcr_frame)rr r r rC«szCoroWrapper.cr_framecCsÂt|ddƒ}t|ddƒ}|dkrBt|ddƒ}|dk r¾|jd kr¾d|}t|dfƒ}|r±djtj|ƒƒ}|d7}||jƒ7}tj|ƒdS) Nrr9rCrz%r was never yielded fromr)Úz6 Coroutine object created at (most recent call last): r+)r*r4Újoinr%Ú format_listÚrstripr Úerror)rrr/ÚmsgÚtbr r r Ú__del__¯s   zCoroWrapper.__del__)rrrrr0rrÚ_YIELD_FROM_BUGrr6r8Úpropertyr9r:r;rZPY35r?r@r<rArBrCrKr r r r r#Ws(        r#cs¤tˆƒrˆStjˆƒr(ˆ‰n!tjˆƒ‡fdd†ƒ‰tsstdkrdˆ}q—tˆƒ}n$tjˆƒ‡‡fdd†ƒ}t|_|S)Nc ?s™ˆ||Ž}tj|ƒs<tj|ƒs<t|tƒrJ|EdH}nKtdk r•y |j}Wntk rwYnXt|tƒr•|ƒEdH}|S)N) rZisfutureÚinspectZ isgeneratorÚ isinstancer#Ú _AwaitableABCr?ÚAttributeError)ÚargsÚkwÚresZ await_meth)r r r r!Ðs   zcoroutine..corocs\tˆ||Ždˆƒ}|jr.|jd=tˆddƒ|_tˆddƒ|_|S)Nr rrrr+)r#r)r*rr)rRÚkwdsÚw)r!r r r Úwrapperès   zcoroutine..wrapper)Ú_inspect_iscoroutinefunctionrNÚisgeneratorfunctionÚ functoolsÚwrapsÚ_DEBUGÚ_types_coroutineÚ _is_coroutine)r rWr )r!r r rÀs  !  $ cCs"t|ddƒtkp!t|ƒS)Nr^)r*r^rX)r r r r rýscCs t|tƒS)N)rOÚ_COROUTINE_TYPES)Úobjr r r r sc "Csft|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 rdj|ƒ}n|}|dkr#t j |fiƒ}y |j}Wntk rM|j}YnXy |j}Wntk rx|j}YnX|j}d}t|t ƒrtj|j ƒ r|j dk rt j|j ƒ}|dk rã|\}}|dkrd |||f} qbd |||f} nG|dk rF|j}d |||f} n|j}d |||f} | S) NrBr;rrz{}()Fz {} runningrz%s done, defined at %s:%sz%s running, defined at %s:%sz%s running at %s:%s)Úhasattrr*r7rr>rArQr:rOr#r rrZ_format_callbackr;rBr9rCÚ co_filenamerNrYZ_get_function_sourceÚf_linenoÚco_firstlineno) r!Z coro_nameÚrunningr Z coro_codeZ coro_frameÚfilenameÚlinenoÚsourcer.r r r r,sl                      r,)-Ú__all__rZrNZopcodeÚosr'r%ÚtypesrDrrrÚlogr Zopmapr5ÚflagsÚignore_environmentÚboolÚenvironÚgetr\rr]Ú CoroutineTypeZ_types_CoroutineTyperQrrXÚcollections.abcrZ _CoroutineABCrrPÚ ImportErrorr"rLr$r#Úobjectr^Ú GeneratorTyper_rr,r r r r ÚsX                   i :