
    ǄgG                        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Z	 	 	 d	 	 	 	 	 	 	 	 	 ddZddZ		 	 	 d	 	 	 	 	 	 	 	 	 dd	a
ddd
ZdddZy)    )annotationsN)partialwait_for_readwait_for_writec                    |s|st        d      g }g }|r|j                  |        |r|j                  |        t        t        j                  |||      } ||      \  }}}	t	        |xs |xs |	      S )N2must specify at least one of read=True, write=True)RuntimeErrorappendr   selectbool)
sockreadwritetimeoutrcheckwcheckfnrreadywreadyxreadys
             Y/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/urllib3/util/wait.pyselect_wait_for_socketr   !   sx     OPPFFdd 
	7B[FFF*&*F++    c                    |s|st        d      d}|r|t        j                  z  }|r|t        j                  z  }t        j                         j                  | |       dfd}t         ||            S )Nr   r   c                4    | | dz  } j                  |       S )Ni  )poll)tpoll_objs    r   do_pollz%poll_wait_for_socket.<locals>.do_pollJ   s     =IA}}Qr   )r   float | Nonereturnzlist[tuple[int, int]])r	   r   POLLINPOLLOUTr   registerr   )r   r   r   r   maskr   r   s         @r   poll_wait_for_socketr&   9   so     OPPD{{}HdD! 
  !!r   c                 z    	 t        j                         } | j                  d       y# t        t        f$ r Y yw xY w)Nr   TF)r   r   AttributeErrorOSError)r   s    r   _have_working_pollr*   R   s<    ;;=a  G$ s   %( ::c                l    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   s       r   r,   r,   _   s/     .		"04ug66r   c                    t        | 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   s     r   r   r   q   s     4dG<<r   c                    t        | 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   r/   r0   s     r   r   r   x   s     4tW==r   )FFN)
r   socket.socketr   r   r   r   r   r    r!   r   )r!   r   )N)r   r2   r   r    r!   r   )
__future__r   r   socket	functoolsr   __all__r   r&   r*   r,   r   r    r   r   <module>r8      s    "   ,
-8  	,
,
, , 	,
 
,4  	"
"
" " 	"
 
"2
  	7
7
7 7 	7
 
7$=>r   