й¼]§Dã@sHddddddgZddlZddlZddlZddlZddlZdd lmZdd lm Z d Z d Z d Z ej jjZej jZej jZejdZGdd„deƒZGdd„dƒZdd„ZGdd„dƒZdd„Zdd„Zdd„Zdd„Zdddd„ZdS)ÚCancelledErrorÚ TimeoutErrorÚInvalidStateErrorÚFutureÚ wrap_futureÚisfutureéNé)Úcompat)ÚeventsÚPENDINGÚ CANCELLEDÚFINISHEDc@seZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú,/opt/alt/python35/lib64/python3.5/futures.pyrs c@sFeZdZdZdd„Zdd„Zd d „Zd d „Zd S)Ú_TracebackLoggerÚloopÚsource_tracebackÚexcÚtbcCs.|j|_|j|_||_d|_dS)N)Ú_looprÚ_source_tracebackrrr)ÚselfÚfuturerrrrÚ__init__Us   z_TracebackLogger.__init__cCs@|j}|dk r<d|_tj|j||jƒ|_dS)N)rÚ tracebackÚformat_exceptionÚ __class__Ú __traceback__r)rrrrrÚactivate[s    z_TracebackLogger.activatecCsd|_d|_dS)N)rr)rrrrÚclearbs z_TracebackLogger.clearcCs‡|jrƒd}|jrQdjtj|jƒƒ}|d7}|d|jƒ7}|dj|jƒjƒ7}|jjd|iƒdS)Nz*Future/Task exception was never retrieved Úz0Future/Task created at (most recent call last): z%s Úmessage)rrÚjoinrÚ format_listÚrstriprÚcall_exception_handler)rÚmsgÚsrcrrrÚ__del__fs   z_TracebackLogger.__del__N)rrrr)rrrÚ __slots__rr!r"r+rrrrr!s 2   rcCst|jdƒo|jdk S)NÚ_asyncio_future_blocking)Úhasattrrr-)Úobjrrrrqsc@seZdZeZdZdZdZdZdZ dZ dZ dddd„Z dd„Z dd „Zd d „Zejr‡d d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„ZejreZdS)$rNFrcCs^|dkrtjƒ|_n ||_g|_|jjƒrZtjtjdƒƒ|_ dS)Nr) r Úget_event_looprÚ _callbacksZ get_debugrÚ extract_stackÚsysÚ _getframer)rrrrrr¡s    zFuture.__init__cCsÂ|j}t|ƒ}|s!d}dd„}|dkrL||dƒ}nn|dkr�dj||dƒ||dƒƒ}n9|dkrºdj||dƒ|d||d ƒƒ}d |S) Nr#cSstj|fƒS)N)r Z_format_callback_source)ÚcallbackrrrÚ format_cb¶sz,Future.__format_callbacks..format_cbrréz{}, {}z{}, <{} more>, {}zcb=[%s]éÿÿÿÿ)r1ÚlenÚformat)rÚcbÚsizer6rrrZ__format_callbacks°s     ) zFuture.__format_callbackscCsÉ|jjƒg}|jtkrt|jdk rL|jdj|jƒƒn(tj|jƒ}|jdj|ƒƒ|j r�|j|j ƒƒ|j rÅ|j d}|jd|d|dfƒ|S)Nzexception={!r}z result={}rzcreated at %s:%srr8) Ú_stateÚlowerÚ _FINISHEDÚ _exceptionÚappendr:ÚreprlibÚreprÚ_resultr1Ú_Future__format_callbacksr)rÚinfoÚresultÚframerrrÚ _repr_infoÃs   zFuture._repr_infocCs)|jƒ}d|jjdj|ƒfS)Nz<%s %s>ú )rIrrr%)rrFrrrÚ__repr__Ôs zFuture.__repr__cCsb|js dS|j}dd|jjd|d|i}|jrN|j|d<|jj|ƒdS)Nr$z %s exception was never retrievedÚ exceptionrr)Ú_log_tracebackr@rrrrr()rrÚcontextrrrr+Üs      zFuture.__del__cCs3d|_|jtkrdSt|_|jƒdS)NFT)rMr=Ú_PENDINGÚ _CANCELLEDÚ_schedule_callbacks)rrrrÚcancelìs    z Future.cancelcCsX|jdd…}|sdSg|jdd…Ns z/Future.remove_done_callback..)r1r9)rrWZfiltered_callbacksZ removed_countr)rWrÚremove_done_callbackIs zFuture.remove_done_callbackcCsJ|jtkr*tdj|j|ƒƒ‚||_t|_|jƒdS)Nz{}: {!r})r=rOrr:rDr?rQ)rrGrrrÚ set_resultVs   zFuture.set_resultcCs½|jtkr*tdj|j|ƒƒ‚t|tƒrB|ƒ}t|ƒtkr`tdƒ‚||_t |_|j ƒt j r‘d|_ n(t||ƒ|_|jj|jjƒdS)Nz{}: {!r}zPStopIteration interacts badly with generators and cannot be raised into a FutureT)r=rOrr:Ú isinstanceÚtypeÚ StopIterationÚ TypeErrorr@r?rQr ÚPY34rMrrVrrSr!)rrLrrrÚ set_exceptionbs       zFuture.set_exceptionccs$|jƒsd|_|V|jƒS)NT)rUr-rG)rrrrÚ__iter__zs  zFuture.__iter__) rrrrOr=rDr@rrr-rMrVrrErIrKr rbr+rRrQrTrUrGrLrXr\r]rcrdZPY35Ú __await__rrrrr|s6                 cCs!|jƒrdS|j|ƒdS)N)rTr])ZfutrGrrrÚ_set_result_unless_cancelled…s rfcCsk|jƒr|jƒ|jƒs&dS|jƒ}|dk rN|j|ƒn|jƒ}|j|ƒdS)N)rTrRÚset_running_or_notify_cancelrLrcrGr])Ú concurrentÚsourcerLrGrrrÚ_set_concurrent_future_stateŒs      rjcCsn|jƒrdS|jƒr)|jƒnA|jƒ}|dk rQ|j|ƒn|jƒ}|j|ƒdS)N)rTrRrLrcrGr])riÚdestrLrGrrrÚ_copy_future_state›s      rlcsñtˆƒ r/tˆtjjƒ r/tdƒ‚tˆƒ r^tˆtjjƒ r^tdƒ‚tˆƒrsˆjnd‰tˆƒrŽˆjnd‰dd„‰‡‡‡fdd†}‡‡‡‡fdd†}ˆj|ƒˆj|ƒdS) Nz(A future is required for source argumentz-A future is required for destination argumentcSs-t|ƒrt||ƒn t||ƒdS)N)rrlrj)rÚotherrrrÚ _set_state¿s z!_chain_future.._set_statecsE|jƒrAˆdks$ˆˆkr1ˆjƒnˆjˆjƒdS)N)rTrRÚcall_soon_threadsafe)Ú destination)Ú dest_loopriÚ source_looprrÚ_call_check_cancelÅs  z)_chain_future.._call_check_cancelcs?ˆdksˆˆkr(ˆˆ|ƒnˆjˆˆ|ƒdS)N)ro)ri)rnrqrprrrrÚ_call_set_stateÌsz&_chain_future.._call_set_state)rr^rhÚfuturesrrarrX)rirprsrtr)rnrqrprirrrÚ _chain_future¯s    rvrcCsEt|ƒr|S|dkr(tjƒ}|jƒ}t||ƒ|S)N)rr r0Z create_futurerv)rrZ new_futurerrrrÖs     )Ú__all__Úconcurrent.futures._baserhÚloggingrBr3rr#r r rOrPr?ruÚ_baseÚErrorrrÚDEBUGZ STACK_DEBUGrrrrrfrjrlrvrrrrrÚs4        P ÿ    '