a
    QSic                     @   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yR   d dlmZ Y n0 g dZG dd de	Z
ejdkrd	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   M/var/www/html/django/DPS/env/lib/python3.9/site-packages/urllib3/util/wait.pyr      s   r   )      c                 C   s   | |S )Nr   )fntimeoutr   r   r   _retry_on_intr*   s    r   c              
   C   s   |d u rt d}n
t | }z
| |W S  ttjfy } zR|jd tjkrP n2|t  }|dk rfd}|t dkrvd }W Y d }~qW Y d }~qd }~0 0 qd S )Ninfr   )floatr   OSErrorselecterrorargserrnoZEINTR)r   r   deadlineer   r   r   r   /   s    



Fc           
      C   sd   |s|st dg }g }|r&||  |r4||  ttj|||}t||\}}}	t|p`|p`|	S )N2must 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_socketF   s    

r"   c                    s^   |s|st dd}|r"|tjO }|r0|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_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    

r+   c                  O   s   t dd S )Nzno select-equivalent available)r   r   kwargsr   r   r   null_wait_for_socketm   s    r.   c               	   C   s:   zt  } t| jd W n ttfy0   Y dS 0 dS d S )Nr   FT)r   r#   r   AttributeErrorr   r%   r   r   r   _have_working_pollq   s    r0   c                  O   s.   t  rtanttdrtantat| i |S )Nr   )r0   r+   wait_for_sockethasattrr   r"   r.   r,   r   r   r   r1   ~   s    
r1   c                 C   s   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   r1   r   r   r   r   r   r      s    r   c                 C   s   t | d|dS )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   r3   r4   r   r   r   r      s    r   )FFN)FFN)N)N)r   r   sys	functoolsr   r   r   ImportError__all__	Exceptionr   version_infor   r"   r+   r.   r0   r1   r   r   r   r   r   r   <module>   s&   




