“tÆ_ã @s,ddlZddlmZddlZddlZyddlmZWn"ek rlddlmZYnXdddgZGdd„de ƒZ ej dkr°d d „Z n d d „Z ddddd„Z ddddd„Zdd„Zdd„Zdd„addd„Zddd„ZdS)éN)Úpartial)Ú monotonic)ÚtimeÚNoWayToWaitForSocketErrorÚ wait_for_readÚwait_for_writec@seZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r úŒ/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-1.el7.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/urllib3/util/wait.pyrs éécCs ||ƒS)Nr )ÚfnÚtimeoutr r r Ú_retry_on_intr*srcCsÈ|dkrtdƒ}n tƒ|}x™y||ƒSWq+ttjfk r¿}z[|jdtjkrs‚n:|tƒ}|dkr’d}|tdƒkrªd}w+WYdd}~Xq+Xq+WdS)NÚinfr)ÚfloatrÚOSErrorÚselectÚerrorÚargsÚerrnoZEINTR)rrÚdeadlineÚer r r r0s    Fc Cs’| r| rtdƒ‚g}g}|r9|j|ƒ|rL|j|ƒttj|||ƒ}t||ƒ\}}} t|pŽ|pŽ| ƒ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&cs‡| r| rtdƒ‚d}|r3|tjO}|rF|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_pollfs  z%poll_wait_for_socket..do_poll)rrÚPOLLINÚPOLLOUTr'Úregisterrr)rrr rÚmaskr*r )r)r Úpoll_wait_for_socketZs    r/cOstdƒ‚dS)Nzno select-equivalent available)r)rÚkwargsr r r Únull_wait_for_socketnsr1c CsGy tjƒ}t|jdƒWnttfk r>dSYnXdSdS)NrFT)rr'rÚAttributeErrorr)r)r r r Ú_have_working_pollrs   r3cOs=tƒrtanttdƒr*tantat||ŽS)Nr)r3r/Úwait_for_socketÚhasattrrr&r1)rr0r r r r4s    r4cCst|ddd|ƒ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. rTr)r4)rrr r r rŽscCst|ddd|ƒ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. r Tr)r4)rrr r r r•s)r r)rÚ functoolsrrÚsysrrÚ ImportErrorÚ__all__Ú ExceptionrÚ version_inforr&r/r1r3r4rrr r r r Ús&