o d@sddlZddlZddlZddlmZzddlmZWney)ddlmZYnwgdZGddde Z ej dkr@d d Z nd d Z dd dZ dddZddZddZddadddZdddZdS)N)partial) monotonic)time)NoWayToWaitForSocketError wait_for_readwait_for_writec@s eZdZdS)rN)__name__ __module__ __qualname__r r l/private/var/folders/v1/_jykv66s6qd26_69j1njbrl80000gr/T/pip-target-p1gutpg6/lib/python/urllib3/util/wait.pyrsr)cCs||SNr )fntimeoutr r r _retry_on_intr*rc Cs|dur td}nt|} z||WSttjfyE}z"|jdtjkr(|t}|dkr3d}|tdkr;d}WYd}~qd}~ww)NinfTr)floatrOSErrorselecterrorargserrnoZEINTR)rrdeadlineer r r r/s"      Fc Csd|s|stdg}g}|r|||r||ttj|||}t||\}}} t|p0|p0| S)N2must specify at least one of read=True, write=True) RuntimeErrorappendrrrbool) sockreadwriterrcheckwcheckrrreadywreadyxreadyr r r select_wait_for_socketFs  r)cs^|s|stdd}|r|tjO}|r|tjO}t||fdd}tt||S)Nrrcs|dur|d9}|S)Ni)poll)tpoll_objr r do_polles z%poll_wait_for_socket..do_poll)rrPOLLINPOLLOUTr*registerr r)r!r"r#rmaskr.r r,r poll_wait_for_socketYs    r3cOstd)Nzno select-equivalent available)rrkwargsr r r null_wait_for_socketmrr6c Cs4z t}t|jdWdSttfyYdSw)NrFT)rr*rAttributeErrorrr,r r r _have_working_pollqsr8cOs.trtan ttdrtantat|i|S)Nr)r8r3wait_for_sockethasattrrr)r6r4r r r r9~s  r9cCt|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)r"rr9r!rr r r rrcCr;)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#rr<r=r r r rr>r)FFNr)rrsys functoolsrrr ImportError__all__ Exceptionr version_inforr)r3r6r8r9rrr r r r s*