o
    g}”e  ã                   @   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   úf/Users/abhinavbhinder/Documents/map/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ÚerrnoZEINTR)r   r   Z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   ZrcheckZwcheckr   ZrreadyZwreadyZ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©Z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   

r,   c                  O   s   t dƒ‚)Nzno select-equivalent available)r   ©r   Úkwargsr   r   r   Únull_wait_for_socketn   r   r/   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   ýÿr1   c                  O   s.   t ƒ rtan
ttdƒrtantat| i |¤ŽS )Nr   )r1   r,   Úwait_for_socketÚhasattrr   r#   r/   r-   r   r   r   r2      s   
r2   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   ©r2   ©r    r   r   r   r   r   Ž   ó   r   c                 C   r4   )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   r5   r6   r   r   r   r   •   r7   r   )FFNr   )r   r   ÚsysÚ	functoolsr   r   r   ÚImportErrorÚ__all__Ú	Exceptionr   Úversion_infor   r#   r,   r/   r1   r2   r   r   r   r   r   r   Ú<module>   s*    ÿ




