o ai@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 /builddir/build/BUILDROOT/alt-python310-pip-21.3.1-5.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/pip/_vendor/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 r0s"      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_socketGs  r)cs^|s|stdd}|r|tjO}|r|tjO}t||fdd}tt||S)Nrrcs|dur|d9}|S)Ni)poll)tpoll_objr r do_pollfs z%poll_wait_for_socket..do_poll)rrPOLLINPOLLOUTr*registerr r)r!r"r#rmaskr.r r,r poll_wait_for_socketZs    r3cOstd)Nzno select-equivalent available)rrkwargsr r r null_wait_for_socketnrr6c Cs4z t}t|jdWdSttfyYdSw)NrFT)rr*rAttributeErrorrr,r r r _have_working_pollrsr8cOs.trtan ttdrtantat|i|S)Nr)r8r3wait_for_sockethasattrrr)r6r4r r r r9s  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*