a
    Bù’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   ÚrcheckÚwcheckÚfnÚrreadyÚwreadyÚxready© r   úN/home/httpd/docs/test/DocsMgr/lib/python3.9/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 ur| d9 } ˆ   | ¡S )Niè  )Úpoll)r   ©Ú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  s8   zt  ¡ } |  d¡ W n ttfy.   Y dS 0 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&      ü   ü   ü