3 ”Reã @sÐddlZddlmZddlZddlZyddlmZWn ek rTddlmZYnXdddgZGdd„de ƒZ ej dkr„d d „Z nd d „Z ddd„Z ddd„Zdd„Zdd„Zdd„addd„Zddd„ZdS) éN)Úpartial)Ú monotonic)ÚtimeÚNoWayToWaitForSocketErrorÚ wait_for_readÚwait_for_writec@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r úŒ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/urllib3/util/wait.pyrséécCs||ƒS)Nr )ÚfnÚtimeoutr r r Ú_retry_on_intr*srcCs”|dkrtdƒ}n tƒ|}xry||ƒSttjfk rŠ}zB|jdtjkrR‚n(|tƒ}|dkrhd}|tdƒkrxd}wWYdd}~XqXqWdS)NÚinfr)ÚfloatrÚOSErrorÚselectÚerrorÚargsÚerrnoZEINTR)rrÚdeadlineÚer r r r0s    Fc Csh| r| rtdƒ‚g}g}|r*|j|ƒ|r8|j|ƒttj|||ƒ}t||ƒ\}}} t|pd|pd| ƒS)Nz2must specify at least one of read=True, write=True)Ú RuntimeErrorÚappendrrrÚbool) ÚsockÚreadÚwriterÚrcheckÚwcheckrÚrreadyÚwreadyÚxreadyr r r Úselect_wait_for_socketGs   r&csb| r| rtdƒ‚d}|r&|tjO}|r4|tjO}tjƒ‰ˆj||ƒ‡fdd„}tt||ƒƒS)Nz2must specify at least one of read=True, write=Truercs|dk r|d9}ˆj|ƒS)Niè)Úpoll)Út)Úpoll_objr r Údo_pollfsz%poll_wait_for_socket..do_poll)rrÚPOLLINÚPOLLOUTr'Úregisterrr)rrr rÚmaskr*r )r)r Úpoll_wait_for_socketZs     r/cOs tdƒ‚dS)Nzno select-equivalent available)r)rÚkwargsr r r Únull_wait_for_socketnsr1c Cs:ytjƒ}t|jdƒWnttfk r0dSXdSdS)NrFT)rr'rÚAttributeErrorr)r)r r r Ú_have_working_pollrs r3cOs*tƒr tanttdƒrtantat||ŽS)Nr)r3r/Úwait_for_socketÚhasattrrr&r1)rr0r r r r4s  r4cCst|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)rr)r4)rrr r r rŽscCst|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)r4)rrr r r r•s)r r)FFN)FFN)N)N)rÚ functoolsrrÚsysrrÚ ImportErrorÚ__all__Ú ExceptionrÚ version_inforr&r/r1r3r4rrr r r r Ús&