ó Eu\dc@sddlZddlZddlZddlmZyddlmZWn!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__(((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyRsiicCs ||ƒS(N((tfnttimeout((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/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((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyR /s       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((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pytselect_wait_for_socketFscs| 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(sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pytdo_polles  (RRtPOLLINtPOLLOUTR#tregisterRR (RRRR tmaskR&((R%sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pytpoll_wait_for_socketYs cOstdƒ‚dS(Nsno select-equivalent available(R(Rtkwargs((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pytnull_wait_for_socketmscCsCy tjƒ}t|jdƒWnttfk r:tSXtSdS(Ni(RR#R tAttributeErrorRtFalseR(R%((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyt_have_working_pollqs  cOs=tƒrtanttdƒr*tantat||ŽS(NR(R0R+twait_for_socketthasattrRR"R-(RR,((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyR1~s    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 ((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyRscCst|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 ((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyR”s(ii(RRtsyst functoolsRRRt ImportErrort__all__t ExceptionRt version_infoR R/R R"R+R-R0R1RR(((sj/private/var/folders/49/mc35vj0j30g7w0ryjvyy2vz80000gs/T/pip-target-MP7kiJ/lib/python/urllib3/util/wait.pyts&