o
    #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   W/var/www/libsmr.ru/venvDJ/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   /   s"   



Fc           
      C   sd   |s|st dg }g }|r||  |r||  ttj|||}t||\}}}	t|p0|p0|	S )N2must 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_socketF   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_polle   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_socketY   s   

r4   c                  O   s   t d)Nzno select-equivalent available)r   r   kwargsr   r   r   null_wait_for_socketm   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_pollq   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 )zWaits 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<   )zWaits 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*    




