관리-도구
편집 파일: tasks.cpython-39.opt-2.pyc
a �����DOgs�����������������������@���s���d�Z�ddlZddlZddlZddlZddlZddlZddlZddl Z ddlm Z �ddlmZ�ddlm Z �ddlmZ�ddlmZ�dd lmZ�dd l mZ�e�d�jZdDdd�ZdEd d�ZdFdd�Zdd��ZG�dd��dej�ZeZzddlZW�n�e�y����Y�n0�ej�ZZdd�dd�Zejj Z ejj!Z!ejj"Z"dde"d�dd�Z#dd��Z$dd�dd�Z%d d!��Z&d"d#��Z'ddd$�d%d&�Z(ej)d'd(���Z*dGdd�d)d*�Z+dd�d+d,�Z,ej)d-d.���Z-ee-_G�d/d0��d0ej.�Z/dd1d2�d3d4�Z0dd1d2�d5d6�Z1dd�d7d8�Z2d9d:��Z3e �4��Z5i�Z6d;d<��Z7d=d>��Z8d?d@��Z9dAdB��Z:e7Z;e:Z<e8Z=e9Z>z$ddClm7Z7m:Z:m8Z8m9Z9m5Z5m6Z6�W�n�e�yv���Y�n0�e7Z?e:Z@e8ZAe9ZBdS�)H)�Task�create_task�FIRST_COMPLETED�FIRST_EXCEPTION� ALL_COMPLETED�wait�wait_for�as_completed�sleep�gather�shield� ensure_future�run_coroutine_threadsafe�current_task� all_tasks�_register_task�_unregister_task�_enter_task�_leave_task�����N)�GenericAlias����)� base_tasks)� coroutines)�events)� exceptions)�futures)� _is_coroutinec�����������������C���s���|�d�u�rt����}�t�|��S��N)r����get_running_loop�_current_tasks�get��loop��r#����%/usr/lib64/python3.9/asyncio/tasks.pyr���#���s����r���c��������������������s\�����d�u�rt������d}ztt�}W�qJ�tyD���|d7�}|dkr@��Y�q0�qJq��fdd�|D��S�)Nr���r�������c��������������������s&���h�|�]}t��|���u�r|���s|�qS�r#���)r���� _get_loop�done��.0�tr!���r#���r$���� <setcomp>=���s����zall_tasks.<locals>.<setcomp>)r���r����list� _all_tasks�RuntimeError�r"����iZtasksr#���r!���r$���r���*���s����r���c��������������������s\�����d�u�rt������d}ztt�}W�qJ�tyD���|d7�}|dkr@��Y�q0�qJq��fdd�|D��S�)Nr���r���r%���c��������������������s���h�|�]}t��|���u�r|�qS�r#���)r���r&���r(���r!���r#���r$���r+���V��������z$_all_tasks_compat.<locals>.<setcomp>)r����get_event_loopr,���r-���r.���r/���r#���r!���r$����_all_tasks_compatA���s����r3���c�����������������C���s2���|d�ur.z |�j�}W�n�ty$���Y�n 0�||��d�S�r���)�set_name�AttributeError)�task�namer4���r#���r#���r$����_set_task_nameY���s���� r8���c�����������������������s����e�Zd�ZdZddd���fdd� Z��fdd�Zee�Zdd ��Z d d��Z dd ��Zdd��Zdd��Z dd��Zdd�dd�Zddd�dd�Zd dd�Zd!��fdd� Zdd��Z���ZS�)"r���TN)r"���r7���c�������������������s����t���j|d��|�jr|�jd=�t�|�s:d|�_td|����|d�u�rRdt�����|�_n t |�|�_d|�_ d�|�_||�_t ���|�_|�jj|�j|�jd��t|���d�S�)Nr!������Fza coroutine was expected, got zTask-��context)�super�__init__�_source_tracebackr����iscoroutine�_log_destroy_pending� TypeError�_task_name_counter�_name�str�_must_cancel�_fut_waiter�_coro�contextvarsZcopy_context�_context�_loop� call_soon�_Task__stepr���)�self�coror"���r7����� __class__r#���r$���r=���u���s���� z Task.__init__c��������������������sF���|�j�tjkr8|�jr8|�dd�}|�jr,|�j|d<�|�j�|��t������d�S�)Nz%Task was destroyed but it is pending!)r6����messageZsource_traceback) �_stater���Z_PENDINGr@���r>���rJ���Zcall_exception_handlerr<����__del__)rM���r;���rO���r#���r$���rS�������s����� zTask.__del__c�����������������C���s ���t��|��S�r���)r���Z_task_repr_info�rM���r#���r#���r$���� _repr_info����s����zTask._repr_infoc�����������������C���s���|�j�S�r���)rG���rT���r#���r#���r$����get_coro����s����z Task.get_coroc�����������������C���s���|�j�S�r���)rC���rT���r#���r#���r$����get_name����s����z Task.get_namec�����������������C���s���t�|�|�_d�S�r���)rD���rC���)rM����valuer#���r#���r$���r4�������s����z Task.set_namec�����������������C���s���t�d��d�S�)Nz*Task does not support set_result operation�r.���)rM����resultr#���r#���r$���� set_result����s����zTask.set_resultc�����������������C���s���t�d��d�S�)Nz-Task does not support set_exception operationrY���)rM���� exceptionr#���r#���r$���� set_exception����s����zTask.set_exception)�limitc����������������C���s���t��|�|�S�r���)r���Z_task_get_stack)rM���r^���r#���r#���r$���� get_stack����s����zTask.get_stack)r^����filec����������������C���s���t��|�||�S�r���)r���Z_task_print_stack)rM���r^���r`���r#���r#���r$����print_stack����s���� zTask.print_stackc�����������������C���s>���d|�_�|����rdS�|�jd�ur.|�jj|d�r.dS�d|�_||�_dS��NF��msgT)Z_log_tracebackr'���rF����cancelrE����_cancel_message)rM���rd���r#���r#���r$���re�������s���� zTask.cancelc�������������� ������s��|�����rt�d|��d|����|�jr>t|tj�s8|����}d|�_|�j}d�|�_t |�j |����z�z"|d�u�rp|�d��}n |�|�}W�n��t y��}�z:|�jr�d|�_t��j|�jd��nt���|j��W�Y�d�}~�n d�}~0��tj�y�}�z||�_t������W�Y�d�}~�n�d�}~0��ttf�y>�}�zt���|����W�Y�d�}~�n�d�}~0��t�yp�}�zt���|��W�Y�d�}~�n~d�}~0�0�t|dd��}|d�u�rjt�|�|�j u�r�td|��d|�d��}|�j j|�j||�jd ��n�|�r>||�u��r�td |����}|�j j|�j||�jd ��n>d|_|j |�j!|�jd ��||�_|�j�rh|�jj|�jd��rhd|�_n*td|��d|���}|�j j|�j||�jd ��n||d�u��r�|�j j|�j|�jd ��n\t"�#|��r�td |��d|���}|�j j|�j||�jd ��n$td|���}|�j j|�j||�jd ��W�t$|�j |���d�}�nt$|�j |���d�}�0�d�S�)Nz_step(): already done: z, Frc����_asyncio_future_blockingzTask z got Future z attached to a different loopr:���zTask cannot await on itself: z-yield was used instead of yield from in task z with z;yield was used instead of yield from for generator in task zTask got bad yield: )%r'���r����InvalidStateErrorrE���� isinstance�CancelledError�_make_cancelled_errorrG���rF���r���rJ����send�throw� StopIterationr<���re���rf���r[���rX���Z_cancelled_exc�KeyboardInterrupt� SystemExitr]���� BaseException�getattrr���r&���r.���rK���rL���rI���rg����add_done_callback� _Task__wakeup�inspectZisgeneratorr���)rM����excrN���rZ����blocking�new_excrO���r#���r$���Z__step����s������$ $ �� � � ������ � ��� � ��zTask.__stepc�������������� ���C���sL���z|�����W�n.�ty:�}�z|��|��W�Y�d�}~nd�}~0�0�|�����d�}�d�S�r���)rZ���rq���rL���)rM����futurerv���r#���r#���r$���Z__wakeupF��s���� z Task.__wakeup)N)N)�__name__� __module__�__qualname__r@���r=���rS����classmethodr����__class_getitem__rU���rV���rW���r4���r[���r]���r_���ra���re���rL���rt���� __classcell__r#���r#���rO���r$���r���c���s��� "Wr���)r7���c����������������C���s ���t����}|�|��}t||��|S�r���)r���r���r���r8���)rN���r7���r"���r6���r#���r#���r$���r���c��s���� r���)r"����timeout�return_whenc��������������������s����t��|��st�|��r(tdt|��j�����|�s4td��|tt t fvrPtd|�������d�u�rbt�����nt jdtdd��t|��}�tdd��|�D���r�t jd tdd����fd d�|�D��}�t|�||���I�d�H�S�)Nzexpect a list of futures, not z#Set of coroutines/Futures is empty.zInvalid return_when value: �[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.������ stacklevelc�����������������s���s���|�]}t��|�V��qd�S�r���)r���r?����r)����fr#���r#���r$���� <genexpr>���r1���zwait.<locals>.<genexpr>z�The explicit passing of coroutine objects to asyncio.wait() is deprecated since Python 3.8, and scheduled for removal in Python 3.11.c��������������������s���h�|�]}t�|��d���qS��r!����r���r����r!���r#���r$���r+������r1���zwait.<locals>.<setcomp>)r����isfuturer���r?���rA����typerz���� ValueErrorr���r���r���r���r����warnings�warn�DeprecationWarning�set�any�_wait)�fsr"���r����r����r#���r!���r$���r���u��s$���� ��r���c�����������������G���s���|�����s|��d���d�S�r���)r'���r[���)�waiter�argsr#���r#���r$����_release_waiter���s����r����r!���c������������� �������s���|d�u�rt����}ntjdtdd��|d�u�r4|�I�d�H�S�|dkr�t|�|d�}�|����rX|����S�t|�|d�I�d�H��z |����W�S��t j y��}�zt ���|�W�Y�d�}~n d�}~0�0�|���}|� |t|�}t�t|�}t|�|d�}�|��|��z�z|I�d�H��W�nT�t j �yB���|�����r |�����Y�W�|����S�|��|��t|�|d�I�d�H����Y�n0�|�����r`|����W�|����S�|��|��t|�|d�I�d�H��z|����W�W�|����S��t j �y��}�zt ���|�W�Y�d�}~n d�}~0�0�W�|����n |����0�d�S�)Nr����r����r����r���r!���)r���r���r����r����r����r���r'���rZ����_cancel_and_waitr���rj����TimeoutError� create_future� call_laterr����� functools�partialrs���re����remove_done_callback)�futr����r"���rv���r�����timeout_handle�cbr#���r#���r$���r������sZ���� � � � �"r���c�������������� �������s����|�����d��|d�ur"|�|t���t|���������fdd�}|�D�]}|�|��q@z2�I�d�H��W��d�urn�����|�D�]}|�|��qrn&�d�ur������|�D�]}|�|��q�0�t��t���}}|�D�]"}|���r�|� |��q�|� |��q�||fS�)Nc��������������������sZ�����d8�����dks4�t�ks4�tkrV|����sV|����d�urV�d�urD���������sV��d���d�S�)Nr���r���)r���r���� cancelledr\���re���r'���r[����r�����Zcounterr����r����r����r#���r$����_on_completion���s������� �z_wait.<locals>._on_completion) r����r����r�����lenrs���re���r����r����r'����add)r����r����r����r"���r����r����r'����pendingr#���r����r$���r�������s0�����r����c�������������� �������sP���|����}t�t|�}|��|��z |�����|I�d�H��W�|��|��n|��|��0�d�S�r���)r����r����r����r����rs���re���r����)r����r"���r����r����r#���r#���r$���r������s���� r����)r"���r����c����������������#���s����t��|��st�|��r(tdt|��j������d�ur@tjdt dd��ddl m}�|�d���d�u�rft� ����fdd �t|��D���d������fd d�}���fdd ����fdd�}�D�]}|�����q��r�|d�ur؈�||��tt���D�]}|��V��q�d�S�)Nz#expect an iterable of futures, not r����r����r����r���)�Queuer!���c��������������������s���h�|�]}t�|��d���qS�r����r����r����r!���r#���r$���r+���M��r1���zas_completed.<locals>.<setcomp>c���������������������s*����D�]}�|���������d���q�����d�S�r���)r����� put_nowait�clearr����)r����r'����todor#���r$����_on_timeoutP��s���� z!as_completed.<locals>._on_timeoutc��������������������s4����sd�S����|������|����s0�d�ur0�����d�S�r���)�remover����re���r����)r'���r����r����r#���r$���r����V��s���� z$as_completed.<locals>._on_completionc����������������������s$���������I�d�H�}�|�d�u�rtj�|����S�r���)r ���r���r����rZ���r����)r'���r#���r$���� _wait_for_one^��s����z#as_completed.<locals>._wait_for_one)r���r����r���r?���rA���r����rz���r����r����r�����queuesr����r���r2���r����rs���r�����ranger����)r����r"���r����r����r����r����r�����_r#���)r����r'���r"���r����r����r$���r���.��s*����� r���c�������������������c���s ���d�V��d�S�r���r#���r#���r#���r#���r$����__sleep0m��s���� r����c��������������������s~���|d�urt�jdtdd��|�dkr0t��I�d�H��|S�|d�u�r@t���}|���}|�|�tj ||�}z|I�d�H�W�|� ���S�|� ���0�d�S�)Nr����r����r����r���)r����r����r����r����r���r���r����r����r���Z_set_result_unless_cancelledre���)�delayrZ���r"���ry����hr#���r#���r$���r ���y��s&������ �r ���c����������������C���s����t��|��r6|d�u�rt���}|�|��}|jr2|jd=�|S�t�|��rb|d�ur^|t�|��ur^t d��|�S�t �|��r|tt |��|d�S�td��d�S�)Nr9���zRThe future belongs to a different loop than the one specified as the loop argumentr!���z:An asyncio.Future, a coroutine or an awaitable is required)r���r?���r���r2���r���r>���r���r����r&���r����ru���Zisawaitabler����_wrap_awaitablerA���)Zcoro_or_futurer"���r6���r#���r#���r$���r������s���� r���c�����������������c���s���|�����E�d�H�S�r���)� __await__)Z awaitabler#���r#���r$���r�������s����r����c�����������������������s,���e�Zd�Zdd���fdd� Zddd�Z���ZS�)�_GatheringFutureNr!���c�������������������s���t���j|d��||�_d|�_d�S�)Nr!���F)r<���r=���� _children�_cancel_requested)rM����childrenr"���rO���r#���r$���r=������s����z_GatheringFuture.__init__c�����������������C���s:���|�����rdS�d}|�jD�]}|j|d�rd}q|r6d|�_|S�rb���)r'���r����re���r����)rM���rd����ret�childr#���r#���r$���re������s���� z_GatheringFuture.cancel)N)rz���r{���r|���r=���re���r���r#���r#���rO���r$���r�������s���r����F�r"����return_exceptionsc�����������������G���s(���|�d�urt�jdtdd��t||�|d��S�)Nr����r����r����r����)r����r����r�����_gather)r"���r�����coros_or_futuresr#���r#���r$���r ������s �����r ���c��������������������s����|s*|�d�u�rt����}�|�������g����S�������fdd�}i�}g���d�d�d��|D�]f}||vr�t||�d�}|�d�u�r�t�|�}�||ur�d|_�d7��|||<�|�|��n||�}��� |��qVt ��|�d���S�)Nc��������������������s�����d7���d�u�s�����r,|����s(|�����d�S��sl|����rN|����}��|��d�S�|����}|d�url��|��d�S���kr�g�}��D�]J}�|����r�t�|�jd�u�r�dn|�j�}n|����}|d�u�r�|����}|� |��q|�j r�|����}��|��n ��|��d�S�)Nr�����)r'���r����r\���rk���r]���r���rj���rf���rZ����appendr����r[���)r����rv����results�res�r����Z nfinishedZnfuts�outerr����r#���r$����_done_callback���s<���� �z_gather.<locals>._done_callbackr���r!���Fr���)r���r2���r����r[���r���r���r&���r@���rs���r����r����)r"���r����r����r����Z arg_to_fut�argr����r#���r����r$���r�������s4���� 7 r����c�������������������st���|d�urt�jdtdd��t|�|d������r0�S�t���}|�����fdd������fdd�}��������|���S�) Nr����r����r����r!���c��������������������s\���������r|�����s|�����d�S�|�����r.������n*|����}|d�urJ���|��n���|������d�S�r���)r����r\���re���r]���r[���rZ���)�innerrv����r����r#���r$����_inner_done_callbackz��s���� z$shield.<locals>._inner_done_callbackc��������������������s��������s������d�S�r���)r'���r����r����)r����r����r#���r$����_outer_done_callback���s����z$shield.<locals>._outer_done_callback) r����r����r����r���r'���r���r&���r����rs���)r����r"���r����r#���)r����r����r����r$���r���U��s����� r���c��������������������s:���t�����std��tj��������fdd�}��|���S�)NzA coroutine object is requiredc��������������� ������sl���zt��t���d����W�nN�ttfy0�����Y�n8�tyf�}��z ����rP��|�����W�Y�d�}�~�n d�}�~�0�0�d�S�)Nr!���)r���Z _chain_futurer���rp���ro���rq����set_running_or_notify_cancelr]���)rv����rN���ry���r"���r#���r$����callback���s���� z*run_coroutine_threadsafe.<locals>.callback)r���r?���rA���� concurrentr����FutureZcall_soon_threadsafe)rN���r"���r����r#���r����r$���r ������s���� r ���c�����������������C���s���t��|���d�S�r���)r-���r�����r6���r#���r#���r$���r������s����r���c�����������������C���s4���t��|��}|d�ur(td|�d|�d���|t�|�<�d�S�)NzCannot enter into task z while another task z is being executed.�r���r ���r.����r"���r6���r���r#���r#���r$���r������s���� � r���c�����������������C���s2���t��|��}||ur(td|�d|�d���t�|�=�d�S�)Nz Leaving task z! does not match the current task �.r����r����r#���r#���r$���r������s���� � r���c�����������������C���s���t��|���d�S�r���)r-����discardr����r#���r#���r$���r������s����r���)r���r���r���r���r-���r���)N)N)N)N)C�__all__�concurrent.futuresr����rH���r����ru���� itertools�typesr�����weakrefr���r����r���r���r���r���r���r����count�__next__rB���r���r���r3���r8���Z _PyFuturer���Z_PyTaskZ_asyncio�ImportErrorZ_CTaskr���r���r���r���r���r����r���r����r����r���� coroutiner����r ���r���r����r����r����r ���r����r���r ����WeakSetr-���r���r���r���r���r���Z_py_register_taskZ_py_unregister_taskZ_py_enter_taskZ_py_leave_taskZ_c_register_taskZ_c_unregister_taskZ _c_enter_taskZ _c_leave_taskr#���r#���r#���r$����<module>���s���� �u +L,? &^?$