o
    øT·jw+  ã                   @  s´  U d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZmZmZmZmZmZ ejd
krcd dlm Z m!Z! nd dl"m Z m!Z! er±d dl#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< edƒZ=eddd�Z>e dƒZ?e@eAB ee@ B eeA B ZBdeCd< G dd„ ded�ZDdS ) é    )ÚannotationsN)ÚABCMetaÚabstractmethod)ÚAsyncIteratorÚ	AwaitableÚCallableÚ	CoroutineÚIterableÚMappingÚSequence)ÚAbstractContextManager)ÚPathLike)ÚSignals)ÚAddressFamilyÚ
SocketKindÚsocket)ÚIOÚTYPE_CHECKINGÚAnyÚ	TypeAliasÚTypeVarÚoverload)é   é   )ÚTypeVarTupleÚUnpack)ÚFileDescriptorLikeé   )ÚCapacityLimiterÚEventÚLockÚ	Semaphore)ÚCancelScope)ÚTaskInfoé   )ÚConnectedUDPSocketÚConnectedUNIXDatagramSocketÚIPSockAddrTypeÚSocketListenerÚSocketStreamÚ	UDPSocketÚUNIXDatagramSocketÚUNIXSocketStream)ÚProcess)Ú	TaskGroup)Ú
TestRunnerÚT_RetvalÚT_coT)Ú	covariantÚPosArgsTr   ÚStrOrBytesPathc                   @  s–  e Zd ZeedÎd
d„ƒƒZeedÏdd„ƒƒZeedÐdd„ƒƒZeedÑdd„ƒƒZeedÒdd„ƒƒZ	edÒdd„ƒZ
edÒdd„ƒZeedÓdd„ƒƒZeeejdd œdÔd%d&„ƒƒZeedÐd'd(„ƒƒZeedÕd*d+„ƒƒZeedÖd-d.„ƒƒZeed×d1d2„ƒƒZeed3dd4œdØd:d;„ƒƒZeedÙd>d?„ƒƒZee		3dÚdÛdDdE„ƒƒZeedÒdFdG„ƒƒZeedÜdKdL„ƒƒZeedÝdMdN„ƒƒZeed3d3d3dOddPd3d3d3dQdRœ
dÞdjdk„ƒƒZeedßdndo„ƒƒZee	3dàdádvdw„ƒƒZeedâd{d|„ƒƒZeedãd€d�„ƒƒZeedãd‚dƒ„ƒƒZeedäd‰dŠ„ƒƒZ ee!dådŽd�„ƒƒZ"ee!dæd‘d�„ƒƒZ"eedçd”d�„ƒƒZ"eedOdOdOdOd•œdèd�dž„ƒƒZ#ee	Odédêd¢d£„ƒƒZ$eedëd¦d§„ƒƒZ%eedëd¨d©„ƒƒZ&eedëdªd«„ƒƒZ'eedãd¬d­„ƒƒZ(eedìd®d¯„ƒƒZ)eedíd°d±„ƒƒZ*eedîd³d´„ƒƒZ+eedïd¶d·„ƒƒZ,eedðd¸d¹„ƒƒZ-eedñdºd»„ƒƒZ.eedòd¼d½„ƒƒZ/eedódÁdÂ„ƒƒZ0eedôdÄdÅ„ƒƒZ1eedõdÇdÈ„ƒƒZ2eedÒdÉdÊ„ƒƒZ3eedödÌdÍ„ƒƒZ4d3S )÷ÚAsyncBackendÚfuncú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]Úargsútuple[Unpack[PosArgsT]]Úkwargsúdict[str, Any]ÚoptionsÚreturnr0   c                 C  ó   dS )aÕ  
        Run the given coroutine function in an asynchronous event loop.

        The current thread must not be already running an event loop.

        :param func: a coroutine function
        :param args: positional arguments to ``func``
        :param kwargs: positional arguments to ``func``
        :param options: keyword arguments to call the backend ``run()`` implementation
            with
        :return: the return value of the coroutine function
        N© )Úclsr6   r8   r:   r<   r?   r?   úW/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/anyio/abc/_eventloop.pyÚrun<   ó    zAsyncBackend.runÚobjectc                 C  r>   )zÆ
        Return an object that allows other threads to run code inside the event loop.

        :return: a token object, specific to the event loop running in the current
            thread
        Nr?   ©r@   r?   r?   rA   Úcurrent_tokenR   rC   zAsyncBackend.current_tokenÚfloatc                 C  r>   )zz
        Return the current value of the event loop's internal clock.

        :return: the clock value (seconds)
        Nr?   rE   r?   r?   rA   Úcurrent_time\   rC   zAsyncBackend.current_timeútype[BaseException]c                 C  r>   )zFReturn the exception class that is raised in a task if it's cancelled.Nr?   rE   r?   r?   rA   Úcancelled_exception_classe   rC   z&AsyncBackend.cancelled_exception_classÚNonec                 Ã  ó   �dS )zä
        Check if the task has been cancelled, and allow rescheduling of other tasks.

        This is effectively the same as running :meth:`checkpoint_if_cancelled` and then
        :meth:`cancel_shielded_checkpoint`.
        Nr?   rE   r?   r?   rA   Ú
checkpointj   ó    zAsyncBackend.checkpointc                 Ã  s(   �|   ¡ tj kr|  ¡ I dH  dS dS )z¾
        Check if the current task group has been cancelled.

        This will check if the task has been cancelled, but will not allow other tasks
        to be scheduled if not.

        N)Úcurrent_effective_deadlineÚmathÚinfrM   rE   r?   r?   rA   Úcheckpoint_if_cancelledt   s   €	ÿz$AsyncBackend.checkpoint_if_cancelledc                 Ã  sD   �| j dd�� |  d¡I dH  W d  ƒ dS 1 sw   Y  dS )zà
        Allow the rescheduling of other tasks.

        This will give other tasks the opportunity to run, but without checking if the
        current task group has been cancelled, unlike with :meth:`checkpoint`.

        T)Úshieldr   N)Úcreate_cancel_scopeÚsleeprE   r?   r?   rA   Úcancel_shielded_checkpoint€   s   €	"ÿz'AsyncBackend.cancel_shielded_checkpointÚdelayc                 Ã  rL   )zt
        Pause the current task for the specified duration.

        :param delay: the duration, in seconds
        Nr?   )r@   rW   r?   r?   rA   rU   Œ   rN   zAsyncBackend.sleepF)ÚdeadlinerS   rX   rS   Úboolr"   c                C  ó   d S ©Nr?   )r@   rX   rS   r?   r?   rA   rT   •   ó   z AsyncBackend.create_cancel_scopec                 C  r>   )aQ  
        Return the nearest deadline among all the cancel scopes effective for the
        current task.

        :return:
            - a clock value from the event loop's internal clock
            - ``inf`` if there is no deadline in effect
            - ``-inf`` if the current scope has been cancelled
        :rtype: float
        Nr?   rE   r?   r?   rA   rO   œ   rC   z'AsyncBackend.current_effective_deadliner.   c                 C  rZ   r[   r?   rE   r?   r?   rA   Úcreate_task_groupª   ó   zAsyncBackend.create_task_groupr   c                 C  rZ   r[   r?   rE   r?   r?   rA   Úcreate_event¯   r^   zAsyncBackend.create_eventÚfast_acquirer    c                C  rZ   r[   r?   )r@   r`   r?   r?   rA   Úcreate_lock´   r^   zAsyncBackend.create_lockN)Ú	max_valuer`   Úinitial_valueÚintrb   ú
int | Noner!   c                C  rZ   r[   r?   )r@   rc   rb   r`   r?   r?   rA   Úcreate_semaphore¹   s   	zAsyncBackend.create_semaphoreÚtotal_tokensr   c                 C  rZ   r[   r?   )r@   rg   r?   r?   rA   Úcreate_capacity_limiterÄ   r^   z$AsyncBackend.create_capacity_limiterú&Callable[[Unpack[PosArgsT]], T_Retval]Úabandon_on_cancelÚlimiterúCapacityLimiter | Nonec                 Ã  ó   �d S r[   r?   )r@   r6   r8   rj   rk   r?   r?   rA   Úrun_sync_in_worker_threadÉ   ó   €	z&AsyncBackend.run_sync_in_worker_threadc                 C  rZ   r[   r?   rE   r?   r?   rA   Úcheck_cancelledÔ   r^   zAsyncBackend.check_cancelledú7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]Útokenr1   c                 C  rZ   r[   r?   ©r@   r6   r8   rr   r?   r?   rA   Úrun_async_from_threadÙ   ó   z"AsyncBackend.run_async_from_threadc                 C  rZ   r[   r?   rs   r?   r?   rA   Úrun_sync_from_threadã   ru   z!AsyncBackend.run_sync_from_threadr   r?   éÿÿÿÿ)
ÚcwdÚenvÚstartupinfoÚcreationflagsÚstart_new_sessionÚpass_fdsÚuserÚgroupÚextra_groupsÚumaskÚcommandú)StrOrBytesPath | Sequence[StrOrBytesPath]Ústdinúint | IO[Any] | NoneÚstdoutÚstderrrx   úStrOrBytesPath | Nonery   úMapping[str, str] | Nonerz   r   r{   r|   r}   úSequence[int]r~   ústr | int | Noner   r€   úIterable[str | int] | Noner�   r-   c                Ë  rm   r[   r?   )r@   r‚   r„   r†   r‡   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   r:   r?   r?   rA   Úopen_processí   s   €zAsyncBackend.open_processÚworkersúset[Process]c                 C  rZ   r[   r?   )r@   rŽ   r?   r?   rA   Ú#setup_process_pool_exit_at_shutdown  r^   z0AsyncBackend.setup_process_pool_exit_at_shutdownÚhostÚstrÚportÚlocal_addressúIPSockAddrType | Noner)   c                 Ã  rm   r[   r?   )r@   r‘   r“   r”   r?   r?   rA   Úconnect_tcp	  ó   €zAsyncBackend.connect_tcpÚpathústr | bytesr,   c                 Ã  rm   r[   r?   )r@   r˜   r?   r?   rA   Úconnect_unix  ó   €zAsyncBackend.connect_unixÚsockr   r(   c                 C  rZ   r[   r?   ©r@   rœ   r?   r?   rA   Úcreate_tcp_listener  r^   z AsyncBackend.create_tcp_listenerc                 C  rZ   r[   r?   r�   r?   r?   rA   Úcreate_unix_listener  r^   z!AsyncBackend.create_unix_listenerÚfamilyr   Úremote_addressÚ
reuse_portúUDPSocket | ConnectedUDPSocketc                 Ã  rm   r[   r?   )r@   r    r”   r¡   r¢   r?   r?   rA   Úcreate_udp_socket  ro   zAsyncBackend.create_udp_socketÚ
raw_socketÚremote_pathr+   c                 Ã  rm   r[   r?   ©r@   r¥   r¦   r?   r?   rA   Úcreate_unix_datagram_socket*  ó   €z(AsyncBackend.create_unix_datagram_socketr&   c                 Ã  rm   r[   r?   r§   r?   r?   rA   r¨   0  r©   ústr | bytes | Noneú0UNIXDatagramSocket | ConnectedUNIXDatagramSocketc                 Ã  rm   r[   r?   r§   r?   r?   rA   r¨   6  r—   )r    ÚtypeÚprotoÚflagsúbytes | str | Noneúint | AddressFamilyr¬   úint | SocketKindr­   r®   úuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c                Ã  rm   r[   r?   )r@   r‘   r“   r    r¬   r­   r®   r?   r?   rA   Úgetaddrinfo=  s   €zAsyncBackend.getaddrinfoÚsockaddrr'   útuple[str, str]c                 Ã  rm   r[   r?   )r@   r´   r®   r?   r?   rA   ÚgetnameinfoS  r—   zAsyncBackend.getnameinfoÚobjr   c                 Ã  rm   r[   r?   ©r@   r·   r?   r?   rA   Úwait_readableZ  r›   zAsyncBackend.wait_readablec                 Ã  rm   r[   r?   r¸   r?   r?   rA   Úwait_writable_  r›   zAsyncBackend.wait_writablec                 C  rZ   r[   r?   r¸   r?   r?   rA   Únotify_closingd  r^   zAsyncBackend.notify_closingc                 Ã  rm   r[   r?   r�   r?   r?   rA   Úwrap_listener_socketi  r›   z!AsyncBackend.wrap_listener_socketc                 Ã  rm   r[   r?   r�   r?   r?   rA   Úwrap_stream_socketn  r›   zAsyncBackend.wrap_stream_socketc                 Ã  rm   r[   r?   r�   r?   r?   rA   Úwrap_unix_stream_sockets  r›   z$AsyncBackend.wrap_unix_stream_socketr*   c                 Ã  rm   r[   r?   r�   r?   r?   rA   Úwrap_udp_socketx  r›   zAsyncBackend.wrap_udp_socketr%   c                 Ã  rm   r[   r?   r�   r?   r?   rA   Úwrap_connected_udp_socket}  r›   z&AsyncBackend.wrap_connected_udp_socketc                 Ã  rm   r[   r?   r�   r?   r?   rA   Úwrap_unix_datagram_socket‚  r›   z&AsyncBackend.wrap_unix_datagram_socketc                 Ã  rm   r[   r?   r�   r?   r?   rA   Ú#wrap_connected_unix_datagram_socket‡  r—   z0AsyncBackend.wrap_connected_unix_datagram_socketc                 C  rZ   r[   r?   rE   r?   r?   rA   Úcurrent_default_thread_limiterŽ  r^   z+AsyncBackend.current_default_thread_limiterÚsignalsr   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  rZ   r[   r?   )r@   rÄ   r?   r?   rA   Úopen_signal_receiver“  r\   z!AsyncBackend.open_signal_receiverr#   c                 C  rZ   r[   r?   rE   r?   r?   rA   Úget_current_taskš  r^   zAsyncBackend.get_current_taskúSequence[TaskInfo]c                 C  rZ   r[   r?   rE   r?   r?   rA   Úget_running_tasksŸ  r^   zAsyncBackend.get_running_tasksc                 Ã  rm   r[   r?   rE   r?   r?   rA   Úwait_all_tasks_blocked¤  r›   z#AsyncBackend.wait_all_tasks_blockedr/   c                 C  rZ   r[   r?   )r@   r<   r?   r?   rA   Úcreate_test_runner©  r^   zAsyncBackend.create_test_runner)
r6   r7   r8   r9   r:   r;   r<   r;   r=   r0   )r=   rD   )r=   rG   )r=   rI   )r=   rK   )rW   rG   r=   rK   )rX   rG   rS   rY   r=   r"   )r=   r.   )r=   r   )r`   rY   r=   r    )rc   rd   rb   re   r`   rY   r=   r!   )rg   rG   r=   r   )FN)
r6   ri   r8   r9   rj   rY   rk   rl   r=   r0   )r6   rq   r8   r9   rr   rD   r=   r1   )r6   ri   r8   r9   rr   rD   r=   r0   ) r‚   rƒ   r„   r…   r†   r…   r‡   r…   rx   rˆ   ry   r‰   rz   r   r{   rd   r|   rY   r}   rŠ   r~   r‹   r   r‹   r€   rŒ   r�   rd   r:   r   r=   r-   )rŽ   r�   r=   rK   r[   )r‘   r’   r“   rd   r”   r•   r=   r)   )r˜   r™   r=   r,   )rœ   r   r=   r(   )
r    r   r”   r•   r¡   r•   r¢   rY   r=   r£   )r¥   r   r¦   rK   r=   r+   )r¥   r   r¦   r™   r=   r&   )r¥   r   r¦   rª   r=   r«   )r‘   r¯   r“   r‹   r    r°   r¬   r±   r­   rd   r®   rd   r=   r²   )r   )r´   r'   r®   rd   r=   rµ   )r·   r   r=   rK   )rœ   r   r=   r)   )rœ   r   r=   r,   )rœ   r   r=   r*   )rœ   r   r=   r%   )rœ   r   r=   r+   )rœ   r   r=   r&   )r=   r   )rÄ   r   r=   rÅ   )r=   r#   )r=   rÈ   )r<   r;   r=   r/   )5Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   rB   rF   rH   rJ   rM   rR   rV   rU   rP   rQ   rT   rO   r]   r_   ra   rf   rh   rn   rp   rt   rv   r�   r�   r–   rš   rž   rŸ   r¤   r   r¨   r³   r¶   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÆ   rÇ   rÉ   rÊ   rË   r?   r?   r?   rA   r5   ;   sB   ÿû	û	ðÿ	øÿr5   )Ú	metaclass)EÚ
__future__r   rP   ÚsysÚabcr   r   Úcollections.abcr   r   r   r   r	   r
   r   Ú
contextlibr   Úosr   Úsignalr   r   r   r   Útypingr   r   r   r   r   r   Úversion_infor   r   Útyping_extensionsÚ	_typeshedr   Ú_core._synchronizationr   r   r    r!   Ú_core._tasksr"   Ú_core._testingr#   Ú_socketsr%   r&   r'   r(   r)   r*   r+   r,   Ú_subprocessesr-   Ú_tasksr.   Ú_testingr/   r0   r1   r3   r’   Úbytesr4   Ú__annotations__r5   r?   r?   r?   rA   Ú<module>   s6    $	 
	(
 