+eC%@sdddgZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z dd l m Z ejd Zejj oeejjd Zy ejZWnek rdZYnXy ejZWnek r*d d ZYnXyddlmZmZWne k rcdZZYnXddZ!e!Z"[!ddZ#GdddZ$ddZddZej%e$fZ&edk re&ef7Z&nddZ'ddZ(dS) coroutineiscoroutinefunction iscoroutineN)compat)events)futures)loggerZ YIELD_FROMZPYTHONASYNCIODEBUGcCsdS)NF)funcr r 7/opt/alt/python34/lib64/python3.4/asyncio/coroutines.py*sr ) Coroutine AwaitablecCsaGddd}dd}d}|}||}t||j||j|fkS) Nc@s@eZdZddZddZddZddZd S) z!has_yield_from_bug..MyGencSs d|_dS)N) send_args)selfr r r __init__6sz*has_yield_from_bug..MyGen.__init__cSs|S)Nr )rr r r __iter__8sz*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 MyGen5s    rcss |DdHdS)Nr )genr r r yield_from_gen?sz*has_yield_from_bug..yield_from_genr)rrr)nextrr)rrvaluercoror r r has_yield_from_bug4s     r"cCs t|dS)N) CoroWrapper)rr r r debug_wrapperKsr$c@s0eZdZdddZddZddZdd ZerTd d Zn d d Zd dZ ddZ e ddZ e ddZ e ddZejr ddZe ddZe ddZe ddZe dd Ze d!d"Znd#d$ZdS)%r#NcCstj|s*tj|s*t|||_||_tjtj d|_ t |dd|_ t |dd|_ dS)Nrrr)inspect isgeneratorrAssertionErrorrr traceback extract_stacksys _getframe_source_tracebackgetattrrr)rrr r r r rVs *  zCoroWrapper.__init__cCsUt|}|jrA|jd}|d|d|df7}nd|jj|fS)Nrz, created at %s:%srz<%s %s>)_format_coroutiner, __class__r)r coro_reprframer r r __repr__^s    zCoroWrapper.__repr__cCs|S)Nr )rr r r reszCoroWrapper.__iter__cCs|jjdS)N)rr)rr r r rhszCoroWrapper.__next__cGs`tj}|j}|jdks*t|jj|jtkrP|d}n|jj |S)Nr) r*r+f_backf_lastir'f_codeco_code _YIELD_FROMrr)rr r2Zcallerr r r rps    zCoroWrapper.sendcCs|jj|S)N)rr)rr r r r rxscCs|jj|S)N)rthrow)rexcr r r r9{szCoroWrapper.throwcCs |jjS)N)rclose)rr r r r;~szCoroWrapper.closecCs |jjS)N)rgi_frame)rr r r r<szCoroWrapper.gi_framecCs |jjS)N)r gi_running)rr r r r=szCoroWrapper.gi_runningcCs |jjS)N)rgi_code)rr r r r>szCoroWrapper.gi_codecCsCt|jdd}|dk r?tdj|j|n|S)Ncr_awaitz;Cannot await on coroutine {!r} while it's awaiting for {!r})r-r RuntimeErrorformat)rr?r r r __await__s  zCoroWrapper.__await__cCs |jjS)N)r gi_yieldfrom)rr r r rCszCoroWrapper.gi_yieldfromcCs |jjS)N)rr?)rr r r r?szCoroWrapper.cr_awaitcCs |jjS)N)r cr_running)rr r r rDszCoroWrapper.cr_runningcCs |jjS)N)rcr_code)rr r r rEszCoroWrapper.cr_codecCs |jjS)N)rcr_frame)rr r r rFszCoroWrapper.cr_framecCst|dd}t|dd}|dkrEt|dd}n|dk r|jd krd|}t|df}|rdjtj|}|d7}||j7}ntj|ndS) Nrr<rFrz%r was never yielded fromr,z6 Coroutine object created at (most recent call last): r.)r-r5joinr( format_listrstripr error)rrr2msgtbr r r __del__s   zCoroWrapper.__del__)rrrrr3rr_YIELD_FROM_BUGrr9r;propertyr<r=r>rZPY35rBrCr?rDrErFrNr r r r r#Ss(         r#cstrStjr(n!tjfddtsstdkrd}qt}n$tjfdd}d|_|S)zDecorator to mark coroutines. If the coroutine is not yielded from before it is destroyed, an error message is logged. c ?s||}t|tjs0tj|r>|DdH}nQtdk ry |j}Wntk rkYqXt|tr|DdH}qn|S)N) isinstancerZFuturer%r& _AwaitableABCrBAttributeError)argskwresZ await_meth)r r r r!s!   zcoroutine..coroNcs_t||d}|jr1|jd=ntdd|_tdd|_|S)Nr rrrr.)r#r,r-rr)rTkwdsw)r!r r r wrappers   zcoroutine..wrapperT)_inspect_iscoroutinefunctionr%isgeneratorfunction functoolswraps_DEBUG_types_coroutine _is_coroutine)r rYr )r!r r rs  !  $ cCst|ddpt|S)z6Return True if func is a decorated coroutine function.r`F)r-rZ)r r r r rscCs t|tS)z)Return True if obj is a coroutine object.)rQ_COROUTINE_TYPES)objr r r rsc Cst|std}t|trZ|j}|j}|dk r`dj|}q`n|}|dkrtj|f}ny |j }Wnt k r|j }YnXy |j }Wnt k r|j }YnX|j}d}t|tr|tj|j r||jdk r|tj|j}|dk rD|\}}n|dkrfd|||f}qd|||f}nG|dk r|j}d|||f}n|j}d|||f}|S)Nz{}()rz%s done, defined at %s:%sz%s running, defined at %s:%sz%s running at %s:%s)rr'rQr#r rrArZ_format_callbackr>rSrEr<rF co_filenamer%r[Z_get_function_sourcef_linenoco_firstlineno) r!Z coro_namer Z coro_codeZ coro_framefilenamelinenosourcer1r r r r/sN              r/))__all__r\r%Zopcodeosr*r(typesrGrrrlogr Zopmapr8flagsignore_environmentboolenvirongetr^rr_rSrrZZcollections.abcrZ _CoroutineABCrrR ImportErrorr"rOr$r# GeneratorTyperarr/r r r r sN                  i 8