ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3

  \a                 @   s  d ddddddddd	d
ddgZ ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddl
mZ G dd  d ejZeZyddlZW n ek
r   Y nX ej ZZejjZejjZejjZeddedddZdd ZeddddZedd Zdddd dZed.ddd!dZddd"d#Zee d< de_[ddd$dZ ed%d& Z!G d'd( d(ejZ"dd)d*d+d	Z#ddd,d
Z$d-d Z%dS )/TaskFIRST_COMPLETEDFIRST_EXCEPTIONALL_COMPLETEDwaitwait_foras_completedsleepasyncgathershieldensure_futurerun_coroutine_threadsafe    N   )
base_tasks)compat)
coroutines)events)futures)	coroutinec                   s   e Zd Zej Zi ZdZedddZ	edddZ
dd fdd	
ZejrTd
d Zdd ZddddZdddddZdd Zd fdd	Zdd Z  ZS )r   TNc             C   s   |d krt j }| jj|S )N)r   get_event_loop_current_tasksget)clsloop r   %/usr/lib64/python3.6/asyncio/tasks.pycurrent_task.   s    zTask.current_taskc                s$    d krt j   fdd| jD S )Nc                s   h | ]}|j  kr|qS r   )_loop).0t)r   r   r   	<setcomp>B   s    z!Task.all_tasks.<locals>.<setcomp>)r   r   
_all_tasks)r   r   r   )r   r   	all_tasks:   s    zTask.all_tasks)r   c               sN   t  j|d | jr| jd= || _d | _d| _| jj| j | j	j
j|  d S )N)r   r   F)super__init___source_traceback_coro_fut_waiter_must_cancelr   	call_soon_step	__class__r"   add)selfcoror   )r-   r   r   r&   D   s    zTask.__init__c             C   sH   | j tjkr8| jr8| dd}| jr,| j|d< | jj| tjj|  d S )Nz%Task was destroyed but it is pending!)taskmessageZsource_traceback)	Z_stater   Z_PENDING_log_destroy_pendingr'   r   Zcall_exception_handlerFuture__del__)r/   contextr   r   r   r5   S   s    
zTask.__del__c             C   s
   t j| S )N)r   Z_task_repr_info)r/   r   r   r   
_repr_info^   s    zTask._repr_info)limitc            C   s   t j| |S )N)r   Z_task_get_stack)r/   r8   r   r   r   	get_stacka   s    zTask.get_stack)r8   filec            C   s   t j| ||S )N)r   Z_task_print_stack)r/   r8   r:   r   r   r   print_stackx   s    	zTask.print_stackc             C   s4   d| _ | j rdS | jd k	r*| jj r*dS d| _dS )NFT)Z_log_tracebackdoner)   cancelr*   )r/   r   r   r   r=      s    

zTask.cancelc                sf  | j r t|tjstj }d| _ | j}d | _| | jj| j< zy"|d krT|j	d }n
|j
|}W n tk
r } z.| j rd| _ | jtj  n| j|j W Y d d }~X n tjk
r   t j  Y n| tk
r } z| j| W Y d d }~X nP tk
r( } z| j|  W Y d d }~X n X t|dd }|d k	r|j| jk	rl| jj| jtdj| | n||r|| kr| jj| jtdj|  n2d|_|j| j || _| j r| jj rd| _ n| jj| jtdj| | n^|d kr| jj| j nDtj|r.| jj| jtdj| | n| jj| jtdj| W d | jjj| j d } X d S )NF_asyncio_future_blockingz6Task {!r} got Future {!r} attached to a different loopz!Task cannot await on itself: {!r}z;yield was used instead of yield from in task {!r} with {!r}zIyield was used instead of yield from for generator in task {!r} with {!r}zTask got bad yield: {!r})r*   
isinstancer   CancelledErrorr(   r)   r-   r   r   sendthrowStopIterationset_exception
set_resultvaluer%   r=   	ExceptionBaseExceptiongetattrr+   r,   RuntimeErrorformatr>   add_done_callback_wakeupinspectZisgeneratorpop)r/   excr0   resultZblocking)r-   r   r   r,      s~    



z
Task._stepc             C   sJ   y|j   W n, tk
r8 } z| j| W Y d d }~X n
X | j  d } d S )N)rQ   rG   r,   )r/   futurerP   r   r   r   rM      s    zTask._wakeup)N)N)N)__name__
__module____qualname__weakrefWeakSetr"   r   r3   classmethodr   r#   r&   r   ZPY34r5   r7   r9   r;   r=   r,   rM   __classcell__r   r   )r-   r   r      s    	!T)r   timeoutreturn_whenc            #   s   t j| stj| r&tdt| j | s2td|tt	t
fkrNtdj| d kr^tj   fddt| D } t| || E d H S )Nz expect a list of futures, not %sz#Set of coroutines/Futures is empty.zInvalid return_when value: {}c                s   h | ]}t | d qS ))r   )r   )r   f)r   r   r   r!   7  s    zwait.<locals>.<setcomp>)r   isfuturer   iscoroutine	TypeErrortyperS   
ValueErrorr   r   r   rK   r   r   set_wait)fsr   rZ   r[   r   )r   r   r     s    c             G   s   | j  s| jd  d S )N)r<   rE   )waiterargsr   r   r   _release_waiter<  s    rg   )r   c            c   s   |d krt j }|d kr"| E d H S |j }|j|t|}tjt|}t| |d} | j| zhy|E d H  W n* t	j
k
r   | j| | j   Y nX | j r| j S | j| | j  t	j W d |j  X d S )N)r   )r   r   create_future
call_laterrg   	functoolspartialr   rL   r   r@   remove_done_callbackr=   r<   rQ   TimeoutError)futrZ   r   re   timeout_handlecbr   r   r   r   A  s,    



c             #   s   |j  d |d k	r"|j|tt|   fdd}x| D ]}|j| qBW zE d H  W d d k	rtj  X t t  }}x4| D ],}|j| |j r|j	| q|j	| qW ||fS )Nc                s\    d8   dks6t ks6tkrX| j  rX| j d k	rXd k	rFj  j sXjd  d S )Nr   r   )r   r   	cancelled	exceptionr=   r<   rE   )r\   )counterr[   ro   re   r   r   _on_completion|  s    z_wait.<locals>._on_completion)
rh   ri   rg   lenrL   r=   rb   rl   r<   r.   )rd   rZ   r[   r   rt   r\   r<   pendingr   )rs   r[   ro   re   r   rc   o  s&    



rc   )r   rZ   c            #   s   t j| stj| r&tdt| j d k	r2ntj fddt	| D ddl
m} |dd  fdd}fd	d
 tfdd}xD ]}|j  qW r|d k	rʈj||xttD ]}| V  qW d S )Nz expect a list of futures, not %sc                s   h | ]}t | d qS ))r   )r   )r   r\   )r   r   r   r!     s    zas_completed.<locals>.<setcomp>r   )Queue)r   c                 s.   x D ]} | j   jd  qW j  d S )N)rl   
put_nowaitclear)r\   )rt   r<   todor   r   _on_timeout  s    

z!as_completed.<locals>._on_timeoutc                s6   sd S j |   j|   r2d k	r2j  d S )N)removerx   r=   )r\   )r<   ro   rz   r   r   rt     s    

z$as_completed.<locals>._on_completionc              3   s$    j  E d H } | d krtj| j S )N)r   r   rm   rQ   )r\   )r<   r   r   _wait_for_one  s    z#as_completed.<locals>._wait_for_one)r   r]   r   r^   r_   r`   rS   r   r   rb   Zqueuesrw   r   rL   ri   rangeru   )rd   r   rZ   rw   r{   r}   r\   _r   )rt   r<   r   ro   rz   r   r     s     

c         
   c   sX   | dkrd V  |S |d kr"t j }|j }|jj| tj||}z
|E d H S |j  X d S )Nr   )r   r   rh   r   ri   r   Z_set_result_unless_cancelledr=   )ZdelayrQ   r   rR   hr   r   r   r     s    
c            C   s   t jdtdd t| |dS )Nz;asyncio.async() function is deprecated, use ensure_future()   )
stacklevel)r   )warningswarnDeprecationWarningr   )coro_or_futurer   r   r   r   async_  s    r   c            C   s   t j| r(|d k	r$|| jk	r$td| S tj| r^|d krBtj }|j| }|j	rZ|j	d= |S t
jr~tj| r~tt| |dS tdd S )Nz$loop argument must agree with Futurer   )r   z:An asyncio.Future, a coroutine or an awaitable is requiredr$   )r   r]   r   ra   r   r^   r   r   Zcreate_taskr'   r   ZPY35rN   Zisawaitabler   _wrap_awaitabler_   )r   r   r1   r   r   r   r     s    


c             c   s   | j  E d H S )N)	__await__)Z	awaitabler   r   r   r     s    r   c                   s*   e Zd Zdd fdd
Zdd Z  ZS )_GatheringFutureN)r   c               s   t  j|d || _d| _d S )N)r   F)r%   r&   	_children_cancel_requested)r/   childrenr   )r-   r   r   r&   $  s    z_GatheringFuture.__init__c             C   s:   | j  rdS d}x| jD ]}|j rd}qW |r6d| _|S )NFT)r<   r   r=   r   )r/   ZretZchildr   r   r   r=   )  s    z_GatheringFuture.cancel)rS   rT   rU   r&   r=   rY   r   r   )r-   r   r     s   r   F)r   return_exceptionsc                s  |s*| d krt j } | j jg  S i  xjt|D ]^}tj|sht|| d}| d kr`|j} d|_	n&|}| d kr||j} n|j| k	rt
d| |< q8W  fdd|D }t|t|| ddd g fdd}x&t|D ]\}}|jtj|| qW S )	N)r   Fz)futures are tied to different event loopsc                s   g | ]} | qS r   r   )r   arg)
arg_to_futr   r   
<listcomp>h  s    zgather.<locals>.<listcomp>r   c                s   j  r|j s|j  d S |j r@tj }slj| d S n,|jd k	rf|j }slj| d S n|j}|| < d7  krjrjtj  n
j	 d S )Nr   )
r<   rq   rr   r   r@   rD   Z
_exceptionZ_resultr   rE   )irn   res)	nchildren	nfinishedouterresultsr   r   r   _done_callbackn  s*    


zgather.<locals>._done_callback)r   r   rh   rE   rb   r   r]   r   r   r3   ra   ru   r   	enumeraterL   rj   rk   )r   r   Zcoros_or_futuresr   rn   r   r   r   r   )r   r   r   r   r   r   r   r
   8  s8    



c               s@   t | |d}|j r|S |j}|j   fdd}|j|  S )N)r   c                s\    j  r| j  s| j  d S | j  r. j  n*| j }|d k	rJ j| n j| j  d S )N)rq   rr   r=   rD   rE   rQ   )innerrP   )r   r   r   r     s    
zshield.<locals>._done_callback)r   r<   r   rh   rL   )r   r   r   r   r   )r   r   r     s    
c                s:   t j stdtjj  fdd}j| S )NzA coroutine object is requiredc                 sT   yt jt d W n6 tk
rN }  zj r<j|   W Y d d } ~ X nX d S )N)r   )r   Z_chain_futurer   rG   Zset_running_or_notify_cancelrD   )rP   )r0   rR   r   r   r   callback  s    
z*run_coroutine_threadsafe.<locals>.callback)r   r^   r_   
concurrentr   r4   Zcall_soon_threadsafe)r0   r   r   r   )r0   rR   r   r   r     s    


)N)&__all__Zconcurrent.futuresr   rj   rN   r   rV    r   r   r   r   r   r   r4   r   Z_PyTaskZ_asyncioImportErrorZ_CTaskr   r   r   r   rg   r   rc   r   r   r   globalsrS   r   r   r   r
   r   r   r   r   r   r   <module>   sX   
 s
--8

W5