PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  lYK@s$ddlmZmZddlmZmZddlZddlZddlZd(Z d)Z ddZ eddd d d gZ d e _ ejd*krde j_ de j_ de j_ de j_ GdddeZGddddeZGdddeZGdddeZeedrKGdddeZeedrpGd d!d!eZeed"rGd#d$d$eZeed%rGd&d'd'eZd'ekreZnNd!ekreZn6d$ekreZndekreZneZdS)+)ABCMetaabstractmethod) namedtupleMappingNc Cst|tr|}nLyt|j}Wn3tttfk rctdj|dYnX|dkrtdj||S)NzInvalid file object: {!r}rzInvalid file descriptor: {}) isinstanceintfilenoAttributeError TypeError ValueErrorformat)fileobjfdr(/opt/python35/lib/python3.5/selectors.py_fileobj_to_fds    r SelectorKeyrreventsdatazSelectorKey(fileobj, fd, events, data) Object used to associate a file object to its backing file descriptor, selected event mask, and attached data. zFile object registered.zUnderlying file descriptor.z3Events that must be waited for on this file object.zzOptional opaque data associated to this file object. For example, this could be used to store a per-client session ID.c@s@eZdZddZddZddZddZd S) _SelectorMappingcCs ||_dS)N) _selector)selfselectorrrr__init__>sz_SelectorMapping.__init__cCst|jjS)N)lenr _fd_to_key)rrrr__len__Asz_SelectorMapping.__len__c CsUy$|jj|}|jj|SWn*tk rPtdj|dYnXdS)Nz{!r} is not registered)r_fileobj_lookuprKeyErrorr )rrrrrr __getitem__Ds  z_SelectorMapping.__getitem__cCst|jjS)N)iterrr)rrrr__iter__Ksz_SelectorMapping.__iter__N)__name__ __module__ __qualname__rrr"r$rrrrr;s    rc@seZdZedddZeddZdddZeddd Zd d Zd d Z eddZ ddZ ddZ dS) BaseSelectorNcCs tdS)N)NotImplementedError)rrrrrrrregister^szBaseSelector.registercCs tdS)N)r))rrrrr unregisteruszBaseSelector.unregistercCs |j||j|||S)N)r+r*)rrrrrrrmodifys zBaseSelector.modifycCs tdS)N)r))rtimeoutrrrselectszBaseSelector.selectcCsdS)Nr)rrrrcloseszBaseSelector.closec Csa|j}|dkr$tdy ||SWn*tk r\tdj|dYnXdS)NzSelector is closedz{!r} is not registered)get_map RuntimeErrorr!r )rrmappingrrrget_keys     zBaseSelector.get_keycCs tdS)N)r))rrrrr0szBaseSelector.get_mapcCs|S)Nr)rrrr __enter__szBaseSelector.__enter__cGs|jdS)N)r/)rargsrrr__exit__szBaseSelector.__exit__) r%r&r'rr*r+r,r.r/r3r0r4r6rrrrr(Os    r( metaclassc@sveZdZddZddZdddZdd Zdd d Zd d ZddZ ddZ dS)_BaseSelectorImplcCsi|_t||_dS)N)rr_map)rrrrrs z_BaseSelectorImpl.__init__c CsZyt|SWnEtk rUx-|jjD]}|j|kr.|jSq.WYnXdS)N)rr rvaluesrr)rrkeyrrrr s   z!_BaseSelectorImpl._fileobj_lookupNcCs| s|ttB@r+tdj|t||j|||}|j|jkrvtdj||j||j|j<|S)NzInvalid events: {!r}z"{!r} (FD {}) is already registered) EVENT_READ EVENT_WRITEr r rr rrr!)rrrrr;rrrr*s z_BaseSelectorImpl.registerc CsPy|jj|j|}Wn*tk rKtdj|dYnX|S)Nz{!r} is not registered)rpopr r!r )rrr;rrrr+s  z_BaseSelectorImpl.unregisterc Csy|j|j|}Wn*tk rFtdj|dYnX||jkr{|j||j|||}n1||jkr|jd|}||j|j <|S)Nz{!r} is not registeredr) rr r!r rr+r*r_replacer)rrrrr;rrrr,s  z_BaseSelectorImpl.modifycCs|jjd|_dS)N)rclearr9)rrrrr/ s z_BaseSelectorImpl.closecCs|jS)N)r9)rrrrr0sz_BaseSelectorImpl.get_mapc Cs,y|j|SWntk r'dSYnXdS)N)rr!)rrrrr _key_from_fds  z_BaseSelectorImpl._key_from_fd) r%r&r'rr r*r+r,r/r0rArrrrr8s      r8cseZdZfddZdfddZfddZejdkrfdd d Zn e j Zdd d Z S) SelectSelectorcs)tjt|_t|_dS)N)superrset_readers_writers)r) __class__rrr%s  zSelectSelector.__init__NcsVtj|||}|t@r5|jj|j|t@rR|jj|j|S)N)rCr*r<rEaddrr=rF)rrrrr;)rGrrr**s   zSelectSelector.registercs<tj|}|jj|j|jj|j|S)N)rCr+rEdiscardrrF)rrr;)rGrrr+2szSelectSelector.unregisterwin32cCs2tj||||\}}}|||gfS)N)r.)rrw_r-xrrr_select9s!zSelectSelector._selectc Cs|dkrdn t|d}g}y+|j|j|jg|\}}}Wntk rj|SYnXt|}t|}xs||BD]g}d}||kr|tO}||kr|tO}|j|}|r|j |||j @fqW|S)Nr) maxrOrErFInterruptedErrorrDr<r=rAappendr) rr-readyrKrLrMrrr;rrrr.?s$!+        zSelectSelector.select) r%r&r'rr*r+sysplatformrOr.rr)rGrrB"s  rBpollcsXeZdZfddZdfddZfddZddd ZS) PollSelectorcs tjtj|_dS)N)rCrr.rV_poll)r)rGrrrZs zPollSelector.__init__Ncsftj|||}d}|t@r5|tjO}|t@rL|tjO}|jj|j||S)Nr) rCr*r<r.POLLINr=POLLOUTrXr)rrrrr; poll_events)rGrrr*^s    zPollSelector.registercs)tj|}|jj|j|S)N)rCr+rXr)rrr;)rGrrr+hszPollSelector.unregisterc Cs|dkrd}n(|dkr*d}ntj|d}g}y|jj|}Wntk rq|SYnXxy|D]q\}}d}|tj@r|tO}|tj@r|t O}|j |}|ry|j |||j @fqyW|S)Nrg@@) mathceilrXrVrQr.rYr=rZr<rArRr)rr-rS fd_event_listreventrr;rrrr.ms(        zPollSelector.select)r%r&r'rr*r+r.rr)rGrrWWs  rWepollcsveZdZfddZddZdfddZfdd Zdd d Zfd d ZS) EpollSelectorcs tjtj|_dS)N)rCrr.r`_epoll)r)rGrrrs zEpollSelector.__init__cCs |jjS)N)rbr )rrrrr szEpollSelector.filenoNc stj|||}d}|t@r5|tjO}|t@rL|tjO}y|jj|j|Wn%t k rtj |YnX|S)Nr) rCr*r<r.EPOLLINr=EPOLLOUTrbr BaseExceptionr+)rrrrr; epoll_events)rGrrr*s     zEpollSelector.registerc sBtj|}y|jj|jWntk r=YnX|S)N)rCr+rbrOSError)rrr;)rGrrr+s  zEpollSelector.unregisterc Cs|dkrd}n,|dkr*d}ntj|dd}tt|jd}g}y|jj||}Wntk r|SYnXxy|D]q\}}d}|tj @r|t O}|tj @r|t O}|j |}|r|j|||j@fqW|S)Nrrg@@gMbP?)r\r]rPrrrbrVrQr.rcr=rdr<rArRr) rr-max_evrSr^rr_rr;rrrr.s*        zEpollSelector.selectcs|jjtjdS)N)rbr/rC)r)rGrrr/s zEpollSelector.close) r%r&r'rr r*r+r.r/rr)rGrras    radevpollcsveZdZfddZddZdfddZfdd Zdd d Zfd d ZS)DevpollSelectorcs tjtj|_dS)N)rCrr.rj_devpoll)r)rGrrrs zDevpollSelector.__init__cCs |jjS)N)rlr )rrrrr szDevpollSelector.filenoNcsftj|||}d}|t@r5|tjO}|t@rL|tjO}|jj|j||S)Nr) rCr*r<r.rYr=rZrlr)rrrrr;r[)rGrrr*s    zDevpollSelector.registercs)tj|}|jj|j|S)N)rCr+rlr)rrr;)rGrrr+szDevpollSelector.unregisterc Cs|dkrd}n(|dkr*d}ntj|d}g}y|jj|}Wntk rq|SYnXxy|D]q\}}d}|tj@r|tO}|tj@r|t O}|j |}|ry|j |||j @fqyW|S)Nrg@@) r\r]rlrVrQr.rYr=rZr<rArRr)rr-rSr^rr_rr;rrrr.s(        zDevpollSelector.selectcs|jjtjdS)N)rlr/rC)r)rGrrr/s zDevpollSelector.close) r%r&r'rr r*r+r.r/rr)rGrrks   rkkqueuecsveZdZfddZddZdfddZfdd Zdd d Zfd d ZS)KqueueSelectorcs tjtj|_dS)N)rCrr.rm_kqueue)r)rGrrrs zKqueueSelector.__init__cCs |jjS)N)ror )rrrrr szKqueueSelector.filenoNc stj|||}y|t@r\tj|jtjtj}|jj |gdd|t @rtj|jtj tj}|jj |gddWn%t k rtj |YnX|S)Nr)rCr*r<r.keventrKQ_FILTER_READZ KQ_EV_ADDrocontrolr=KQ_FILTER_WRITErer+)rrrrr;kev)rGrrr*s     zKqueueSelector.registercstj|}|jt@rotj|jtjtj}y|j j |gddWnt k rnYnX|jt @rtj|jtj tj}y|j j |gddWnt k rYnX|S)Nr)rCr+rr<r.rprrqZ KQ_EV_DELETErorrrgr=rs)rrr;rt)rGrrr+'s       zKqueueSelector.unregisterc Cs|dkrdn t|d}t|j}g}y|jjd||}Wntk rj|SYnXx|D]}|j}|j}d}|tj kr|t O}|tj kr|t O}|j |} | rr|j| || j@fqrW|S)Nr)rPrrrorrrQidentfilterr.rqr<rsr=rArRr) rr-rirSZkev_listrtrflagrr;rrrr.<s&!       zKqueueSelector.selectcs|jjtjdS)N)ror/rC)r)rGrrr/Rs zKqueueSelector.close) r%r&r'rr r*r+r.r/rr)rGrrn s  rnr)rr)abcrr collectionsrrr\r.rTr<r=rr__doc__ version_inforrrrrr(r8rBhasattrrWrarkrnglobalsDefaultSelectorrrrrsF         ~U31G8M