U
    âßŽiG  ã                   @  s²   d dl mZ d dlZd dlZd dlmZ ddgZddddd	dd
œdd„Zddddd	dd
œdd„Zddœdd„Z	ddddd	dd
œdd„a
ddd	ddœdd„Zddd	ddœdd„ZdS )é    )ÚannotationsN)ÚpartialÚwait_for_readÚwait_for_writeFzsocket.socketÚboolúfloat | None)ÚsockÚreadÚwriteÚtimeoutÚreturnc           
      C  sb   |s|st dƒ‚g }g }|r&| | ¡ |r4| | ¡ ttj|||ƒ}||ƒ\}}}	t|p^|p^|	ƒS )Nú2must specify at least one of read=True, write=True)ÚRuntimeErrorÚappendr   Úselectr   )
r   r	   r
   r   ZrcheckZwcheckÚfnZrreadyZwreadyZxready© r   úO/var/www/html/IITS/school/venv/lib/python3.8/site-packages/urllib3/util/wait.pyÚselect_wait_for_socket!   s    

r   c                   sd   |s|st dƒ‚d}|r"|tjO }|r0|tjO }t ¡ ‰ ˆ  | |¡ dddœ‡ fdd„}t||ƒƒS )Nr   r   r   zlist[tuple[int, int]])Útr   c                   s   | d k	r| d9 } ˆ   | ¡S )Niè  )Úpoll)r   ©Zpoll_objr   r   Údo_pollJ   s    z%poll_wait_for_socket.<locals>.do_poll)r   r   ÚPOLLINÚPOLLOUTr   Úregisterr   )r   r	   r
   r   Úmaskr   r   r   r   Úpoll_wait_for_socket9   s    

r   )r   c               	   C  s:   zt  ¡ } |  d¡ W n ttfk
r0   Y dS X dS d S )Nr   FT)r   r   ÚAttributeErrorÚOSErrorr   r   r   r   Ú_have_working_pollR   s    r    c                 C  s(   t ƒ rtanttdƒrtat| |||ƒS )Nr   )r    r   Úwait_for_socketÚhasattrr   r   )r   r	   r
   r   r   r   r   r!   _   s
    
r!   )r   r   r   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   ©r!   ©r   r   r   r   r   r   q   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   r#   r$   r   r   r   r   x   s    )FFN)FFN)FFN)N)N)Ú
__future__r   r   ÚsocketÚ	functoolsr   Ú__all__r   r   r    r!   r   r   r   r   r   r   Ú<module>   s&      ü   ü   ü