3
ãde  ã               @   sÐ   d dl Z d dlZd dlZd dlmZ yd dlmZ W n  ek
rT   d dlmZ Y nX dddg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   úH/var/www/agendate/envp3/lib/python3.6/site-packages/urllib3/util/wait.pyr      s   é   é   c             C   s   | |ƒS )Nr   )ÚfnÚtimeoutr   r   r   Ú_retry_on_intr*   s    r   c             C   s”   |d krt dƒ}n
tƒ | }xry| |ƒS  ttjfk
rŠ } zB|jd tjkrR‚ n(|tƒ  }|dk rhd}|t dƒkrxd }wW Y d d }~X qX qW d S )NÚinfr   )Úfloatr   ÚOSErrorÚselectÚerrorÚargsÚerrnoZEINTR)r   r   ÚdeadlineÚer   r   r   r   /   s    


Fc       
      C   sh   | r| rt dƒ‚g }g }|r*|j| ƒ |r8|j| ƒ ttj|||ƒ}t||ƒ\}}}	t|pd|pd|	ƒS )Nz2must 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                sb   | r| rt dƒ‚d}|r&|tjO }|r4|tjO }tjƒ ‰ ˆ j| |ƒ ‡ fdd„}tt||ƒƒS )Nz2must specify at least one of read=True, write=Truer   c                s   | d k	r| d9 } ˆ j | ƒ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    

r/   c              O   s   t dƒ‚d S )Nzno select-equivalent available)r   )r   Úkwargsr   r   r   Únull_wait_for_socketm   s    r1   c              C   s:   yt jƒ } t| jdƒ W n ttfk
r0   dS X dS d S )Nr   FT)r   r'   r   ÚAttributeErrorr   )r)   r   r   r   Ú_have_working_pollq   s    r3   c              O   s*   t ƒ rtanttdƒrtantat| |ŽS )Nr   )r3   r/   Úwait_for_socketÚhasattrr   r&   r1   )r   r0   r   r   r   r4   ~   s    
r4   c             C   s   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   )r4   )r   r   r   r   r   r   �   s    c             C   s   t | d|d�S )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   )r4   )r   r   r   r   r   r   ”   s    )r   r   )FFN)FFN)N)N)r   r   ÚsysÚ	functoolsr   r   r   ÚImportErrorÚ__all__Ú	Exceptionr   Úversion_infor   r&   r/   r1   r3   r4   r   r   r   r   r   r   Ú<module>   s&   





