� ��^c@sddlZddlmZddlZddlZyddlmZWn!ek rkddlmZnXdddgZde fd��YZ ej dkr�d �Z n d �Z e e dd �Ze e dd�Zd�Zd�Zd�add�Zdd�ZdS(i����N(tpartial(t monotonic(ttimetNoWayToWaitForSocketErrort wait_for_readtwait_for_writecBseZRS((t__name__t __module__(((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyRsiicCs ||�S(N((tfnttimeout((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyt_retry_on_intr*scCs�|dkrtd�}n t�|}x�tr�y||�SWq+ttjfk r�}|jdtj krv�q�|t�}|dkr�d}n|td�kr+d}q+q+q+Xq+WdS(Ntinfi( tNonetfloatRtTruetOSErrortselectterrortargsterrnotEINTR(RR tdeadlinete((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyR 0s       c Cs�| r| rtd��ng}g}|r?|j|�n|rU|j|�nttj|||�}t||�\}}} t|p�|p�| �S(Ns2must specify at least one of read=True, write=True(t RuntimeErrortappendRRR tbool( tsocktreadtwriteR trchecktwcheckRtrreadytwreadytxready((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pytselect_wait_for_socketGscs�| r| rtd��nd}|r9|tjO}n|rO|tjO}ntj���j||��fd�}tt||��S(Ns2must specify at least one of read=True, write=Trueics&|dk r|d9}n�j|�S(Ni�(R tpoll(tt(tpoll_obj(s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pytdo_pollfs  (RRtPOLLINtPOLLOUTR#tregisterRR (RRRR tmaskR&((R%s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pytpoll_wait_for_socketZs cOstd��dS(Nsno select-equivalent available(R(Rtkwargs((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pytnull_wait_for_socketnscCsCy tj�}t|jd�Wnttfk r:tSXtSdS(Ni(RR#R tAttributeErrorRtFalseR(R%((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyt_have_working_pollrs  cOs=t�rtanttd�r*tantat||�S(NR(R0R+twait_for_socketthasattrRR"R-(RR,((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyR1s    cCst|dtd|�S(s� Waits for reading to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. RR (R1R(RR ((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyR�scCst|dtd|�S(s� Waits for writing to be available on a given socket. Returns True if the socket is readable, or False if the timeout expired. RR (R1R(RR ((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyR�s(ii(Rt functoolsRRtsysRRt ImportErrort__all__t ExceptionRt version_infoR R/R R"R+R-R0R1RR(((s2/tmp/pip-build-1THPZW/urllib3/urllib3/util/wait.pyts&