o |nhG@sddlmZddlZddlZddlmZddgZ   ddddZ   ddddZdddZ   dddda ddddZ ddddZ dS)) annotationsN)partial wait_for_readwait_for_writeFsock socket.socketreadboolwritetimeout float | Nonereturnc Csb|s|stdg}g}|r|||r||ttj|||}||\}}} t|p/|p/| S)N2must specify at least one of read=True, write=True) RuntimeErrorappendrselectr ) rrr r rcheckwcheckfnrreadywreadyxreadyrI/usr/local/bin/dhwp/env/lib/python3.10/site-packages/urllib3/util/wait.pyselect_wait_for_socket!s  rcs^|s|stdd}|r|tjO}|r|tjO}t||d fdd }t||S) Nrrtr r list[tuple[int, int]]cs|dur|d9}|S)Ni)poll)rpoll_objrrdo_pollJs z%poll_wait_for_socket..do_poll)rr r r)rrPOLLINPOLLOUTrregisterr )rrr r maskr rrrpoll_wait_for_socket9s    r%c Cs2z t}|dWdSttfyYdSw)NrFT)rrAttributeErrorOSErrorrrrr_have_working_pollRs r(cCs(trtanttdr tat||||S)Nr)r(r%wait_for_sockethasattrrr)rrr r rrrr)_s   r)cCt|d|dS)zWaits for reading to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. T)rr r)rr rrrrqcCr+)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,r-rrrrxr.)FFN) rrrr r r r r r r )r r )N)rrr r r r ) __future__rrsocket functoolsr__all__rr%r(r)rrrrrrs(