o
    Ëý°j  ã                   @   sÌ   d dl Z d dlZd dlZd dlmZ zd dlmZ W n ey)   d dlmZ Y nw g d¢ZG dd„ de	ƒZ
ejdkr@d	d
„ Zndd
„ Zddd„Zddd„Zdd„ Zdd„ Zdd„ addd„Zddd„ZdS )é    N)Úpartial)Ú	monotonic)Útime)ÚNoWayToWaitForSocketErrorÚwait_for_readÚwait_for_writec                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.pyr      s    r   )é   é   c                 C   s   | |ƒS ©Nr   )ÚfnÚtimeoutr   r   r   Ú_retry_on_intr*   ó   r   c              
   C   sŒ   |d u r	t dƒ}ntƒ | }	 z| |ƒW S  ttjfyE } z"|jd tjkr(‚ |tƒ  }|dk r3d}|t dƒkr;d }W Y d }~qd }~ww )NÚinfTr   )Úfloatr   ÚOSErrorÚselectÚerrorÚargsÚerrnoÚEINTR)r   r   ÚdeadlineÚer   r   r   r   0   s"   



€öFc           
      C   sd   |s|st dƒ‚g }g }|r| | ¡ |r| | ¡ ttj|||ƒ}t||ƒ\}}}	t|p0|p0|	ƒS )Nú2must specify at least one of read=True, write=True)ÚRuntimeErrorÚappendr   r   r   Úbool)
ÚsockÚreadÚwriter   ÚrcheckÚwcheckr   ÚrreadyÚwreadyÚxreadyr   r   r   Úselect_wait_for_socketG   s   

r*   c                    s^   |s|st dƒ‚d}|r|tjO }|r|tjO }t ¡ ‰ ˆ  | |¡ ‡ fdd„}tt||ƒƒS )Nr   r   c                    s   | d ur| d9 } ˆ   | ¡S )Niè  )Úpoll)Út©Úpoll_objr   r   Údo_pollf   s   
z%poll_wait_for_socket.<locals>.do_poll)r   r   ÚPOLLINÚPOLLOUTr+   Úregisterr!   r   )r"   r#   r$   r   Úmaskr/   r   r-   r   Úpoll_wait_for_socketZ   s   

r4   c                  O   s   t dƒ‚)Nzno select-equivalent available)r   ©r   Úkwargsr   r   r   Únull_wait_for_socketn   r   r7   c               	   C   s4   zt  ¡ } t| jdƒ W dS  ttfy   Y dS w )Nr   FT)r   r+   r   ÚAttributeErrorr   r-   r   r   r   Ú_have_working_pollr   s   ýÿr9   c                  O   s.   t ƒ rtan
ttdƒrtantat| i |¤ŽS )Nr   )r9   r4   Úwait_for_socketÚhasattrr   r*   r7   r5   r   r   r   r:      s   
r:   c                 C   ó   t | d|d�S )z†Waits for reading to be available on a given socket.
    Returns True if the socket is readable, or False if the timeout expired.
    T)r#   r   ©r:   ©r"   r   r   r   r   r   Ž   ó   r   c                 C   r<   )z†Waits for writing to be available on a given socket.
    Returns True if the socket is readable, or False if the timeout expired.
    T)r$   r   r=   r>   r   r   r   r   •   r?   r   )FFNr   )r   r   ÚsysÚ	functoolsr   r   r   ÚImportErrorÚ__all__Ú	Exceptionr   Úversion_infor   r*   r4   r7   r9   r:   r   r   r   r   r   r   Ú<module>   s*    ÿ




