o
    Þ­j…)  ã                   @  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 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r]d 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,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 edƒZ:edƒZ;e<e=B ee< B ee= B Z>de?d< G dd„ ded�Z@dS )é    )ÚannotationsN)ÚABCMetaÚabstractmethod)ÚAsyncIteratorÚ	AwaitableÚCallableÚ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Ú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ÉdIdJ„ƒƒZeedÊdKdL„ƒƒZeedËdUdV„ƒƒZeedÌdYdZ„ƒƒZee	3dÍdÎdadb„ƒƒZeedÏdfdg„ƒƒZeedÐdkdl„ƒƒZeedÐdmdn„ƒƒZeedÑdtdu„ƒƒZ ee!dÒdydz„ƒƒZ"ee!dÓd|dz„ƒƒZ"eedÔddz„ƒƒZ"eed€d€d€d€d�œdÕdŠd‹„ƒƒZ#ee	€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Ð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Úreturnr-   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© )Úclsr1   r3   r5   r7   r:   r:   úQ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/anyio/abc/_eventloop.pyÚrun3   ó    zAsyncBackend.runÚobjectc                 C  r9   )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:   r<   Úcurrent_tokenI   r>   zAsyncBackend.current_tokenÚfloatc                 C  r9   )zz
        Return the current value of the event loop's internal clock.

        :return: the clock value (seconds)
        Nr:   r@   r:   r:   r<   Úcurrent_timeS   r>   zAsyncBackend.current_timeútype[BaseException]c                 C  r9   )zFReturn the exception class that is raised in a task if it's cancelled.Nr:   r@   r:   r:   r<   Úcancelled_exception_class\   r>   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:   r@   r:   r:   r<   Ú
checkpointa   ó    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ÚinfrH   r@   r:   r:   r<   Úcheckpoint_if_cancelledk   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Úsleepr@   r:   r:   r<   Úcancel_shielded_checkpointw   s   €	"ÿz'AsyncBackend.cancel_shielded_checkpointÚdelayc                 Ã  rG   )zt
        Pause the current task for the specified duration.

        :param delay: the duration, in seconds
        Nr:   )r;   rR   r:   r:   r<   rP   ƒ   rI   zAsyncBackend.sleepF)ÚdeadlinerN   rS   rN   Úboolr   c                C  ó   d S ©Nr:   )r;   rS   rN   r:   r:   r<   rO   Œ   ó   z AsyncBackend.create_cancel_scopec                 C  r9   )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:   r@   r:   r:   r<   rJ   “   r>   z'AsyncBackend.current_effective_deadliner+   c                 C  rU   rV   r:   r@   r:   r:   r<   Úcreate_task_group¡   ó   zAsyncBackend.create_task_groupr   c                 C  rU   rV   r:   r@   r:   r:   r<   Úcreate_event¦   rY   zAsyncBackend.create_eventÚfast_acquirer   c                C  rU   rV   r:   )r;   r[   r:   r:   r<   Úcreate_lock«   rY   zAsyncBackend.create_lockN)Ú	max_valuer[   Úinitial_valueÚintr]   ú
int | Noner   c                C  rU   rV   r:   )r;   r^   r]   r[   r:   r:   r<   Úcreate_semaphore°   s   	zAsyncBackend.create_semaphoreÚtotal_tokensr   c                 C  rU   rV   r:   )r;   rb   r:   r:   r<   Úcreate_capacity_limiter»   rY   z$AsyncBackend.create_capacity_limiterú&Callable[[Unpack[PosArgsT]], T_Retval]Úabandon_on_cancelÚlimiterúCapacityLimiter | Nonec                 Ã  ó   �d S rV   r:   )r;   r1   r3   re   rf   r:   r:   r<   Úrun_sync_in_worker_threadÀ   ó   €	z&AsyncBackend.run_sync_in_worker_threadc                 C  rU   rV   r:   r@   r:   r:   r<   Úcheck_cancelledË   rY   zAsyncBackend.check_cancelledÚtokenc                 C  rU   rV   r:   ©r;   r1   r3   rl   r:   r:   r<   Úrun_async_from_threadÐ   ó   z"AsyncBackend.run_async_from_threadc                 C  rU   rV   r:   rm   r:   r:   r<   Úrun_sync_from_threadÚ   ro   z!AsyncBackend.run_sync_from_threadÚcommandú)StrOrBytesPath | Sequence[StrOrBytesPath]Ústdinúint | IO[Any] | NoneÚstdoutÚstderrr   r*   c                Ë  rh   rV   r:   )r;   rq   rs   ru   rv   r5   r:   r:   r<   Úopen_processä   s   €zAsyncBackend.open_processÚworkersúset[Process]c                 C  rU   rV   r:   )r;   rx   r:   r:   r<   Ú#setup_process_pool_exit_at_shutdownñ   rY   z0AsyncBackend.setup_process_pool_exit_at_shutdownÚhostÚstrÚportÚlocal_addressúIPSockAddrType | Noner&   c                 Ã  rh   rV   r:   )r;   r{   r}   r~   r:   r:   r<   Úconnect_tcpö   ó   €zAsyncBackend.connect_tcpÚpathústr | bytesr)   c                 Ã  rh   rV   r:   )r;   r‚   r:   r:   r<   Úconnect_unixý   ó   €zAsyncBackend.connect_unixÚsockr   r%   c                 C  rU   rV   r:   ©r;   r†   r:   r:   r<   Úcreate_tcp_listener  rY   z AsyncBackend.create_tcp_listenerc                 C  rU   rV   r:   r‡   r:   r:   r<   Úcreate_unix_listener  rY   z!AsyncBackend.create_unix_listenerÚfamilyr   Úremote_addressÚ
reuse_portúUDPSocket | ConnectedUDPSocketc                 Ã  rh   rV   r:   )r;   rŠ   r~   r‹   rŒ   r:   r:   r<   Úcreate_udp_socket  rj   zAsyncBackend.create_udp_socketÚ
raw_socketÚremote_pathr(   c                 Ã  rh   rV   r:   ©r;   r�   r�   r:   r:   r<   Úcreate_unix_datagram_socket  ó   €z(AsyncBackend.create_unix_datagram_socketr#   c                 Ã  rh   rV   r:   r‘   r:   r:   r<   r’     r“   ústr | bytes | Noneú0UNIXDatagramSocket | ConnectedUNIXDatagramSocketc                 Ã  rh   rV   r:   r‘   r:   r:   r<   r’   #  r�   r   )rŠ   ÚtypeÚprotoÚflagsúbytes | str | Noneústr | int | Noneúint | AddressFamilyr–   úint | SocketKindr—   r˜   úuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c                Ã  rh   rV   r:   )r;   r{   r}   rŠ   r–   r—   r˜   r:   r:   r<   Úgetaddrinfo*  s   €zAsyncBackend.getaddrinfoÚsockaddrr$   útuple[str, str]c                 Ã  rh   rV   r:   )r;   rŸ   r˜   r:   r:   r<   Úgetnameinfo@  r�   zAsyncBackend.getnameinfoÚobjr   c                 Ã  rh   rV   r:   ©r;   r¢   r:   r:   r<   Úwait_readableG  r…   zAsyncBackend.wait_readablec                 Ã  rh   rV   r:   r£   r:   r:   r<   Úwait_writableL  r…   zAsyncBackend.wait_writablec                 C  rU   rV   r:   r£   r:   r:   r<   Únotify_closingQ  rY   zAsyncBackend.notify_closingc                 Ã  rh   rV   r:   r‡   r:   r:   r<   Úwrap_listener_socketV  r…   z!AsyncBackend.wrap_listener_socketc                 Ã  rh   rV   r:   r‡   r:   r:   r<   Úwrap_stream_socket[  r…   zAsyncBackend.wrap_stream_socketc                 Ã  rh   rV   r:   r‡   r:   r:   r<   Úwrap_unix_stream_socket`  r…   z$AsyncBackend.wrap_unix_stream_socketr'   c                 Ã  rh   rV   r:   r‡   r:   r:   r<   Úwrap_udp_sockete  r…   zAsyncBackend.wrap_udp_socketr"   c                 Ã  rh   rV   r:   r‡   r:   r:   r<   Úwrap_connected_udp_socketj  r…   z&AsyncBackend.wrap_connected_udp_socketc                 Ã  rh   rV   r:   r‡   r:   r:   r<   Úwrap_unix_datagram_socketo  r…   z&AsyncBackend.wrap_unix_datagram_socketc                 Ã  rh   rV   r:   r‡   r:   r:   r<   Ú#wrap_connected_unix_datagram_sockett  r�   z0AsyncBackend.wrap_connected_unix_datagram_socketc                 C  rU   rV   r:   r@   r:   r:   r<   Úcurrent_default_thread_limiter{  rY   z+AsyncBackend.current_default_thread_limiterÚsignalsr   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  rU   rV   r:   )r;   r¯   r:   r:   r<   Úopen_signal_receiver€  rW   z!AsyncBackend.open_signal_receiverr    c                 C  rU   rV   r:   r@   r:   r:   r<   Úget_current_task‡  rY   zAsyncBackend.get_current_taskúSequence[TaskInfo]c                 C  rU   rV   r:   r@   r:   r:   r<   Úget_running_tasksŒ  rY   zAsyncBackend.get_running_tasksc                 Ã  rh   rV   r:   r@   r:   r:   r<   Úwait_all_tasks_blocked‘  r…   z#AsyncBackend.wait_all_tasks_blockedr,   c                 C  rU   rV   r:   )r;   r7   r:   r:   r<   Úcreate_test_runner–  rY   zAsyncBackend.create_test_runner)
r1   r2   r3   r4   r5   r6   r7   r6   r8   r-   )r8   r?   )r8   rB   )r8   rD   )r8   rF   )rR   rB   r8   rF   )rS   rB   rN   rT   r8   r   )r8   r+   )r8   r   )r[   rT   r8   r   )r^   r_   r]   r`   r[   rT   r8   r   )rb   rB   r8   r   )FN)
r1   rd   r3   r4   re   rT   rf   rg   r8   r-   )r1   r2   r3   r4   rl   r?   r8   r-   )r1   rd   r3   r4   rl   r?   r8   r-   )rq   rr   rs   rt   ru   rt   rv   rt   r5   r   r8   r*   )rx   ry   r8   rF   rV   )r{   r|   r}   r_   r~   r   r8   r&   )r‚   rƒ   r8   r)   )r†   r   r8   r%   )
rŠ   r   r~   r   r‹   r   rŒ   rT   r8   r�   )r�   r   r�   rF   r8   r(   )r�   r   r�   rƒ   r8   r#   )r�   r   r�   r”   r8   r•   )r{   r™   r}   rš   rŠ   r›   r–   rœ   r—   r_   r˜   r_   r8   r�   )r   )rŸ   r$   r˜   r_   r8   r    )r¢   r   r8   rF   )r†   r   r8   r&   )r†   r   r8   r)   )r†   r   r8   r'   )r†   r   r8   r"   )r†   r   r8   r(   )r†   r   r8   r#   )r8   r   )r¯   r   r8   r°   )r8   r    )r8   r³   )r7   r6   r8   r,   )5Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r=   rA   rC   rE   rH   rM   rQ   rP   rK   rL   rO   rJ   rX   rZ   r\   ra   rc   ri   rk   rn   rp   rw   rz   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<   r0   2   s.   ÿû	û	ÿ	øÿr0   )Ú	metaclass)AÚ
__future__r   rK   ÚsysÚabcr   r   Úcollections.abcr   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,   r-   r.   r|   Úbytesr/   Ú__annotations__r0   r:   r:   r:   r<   Ú<module>   s4     
	(
 