Edit File: selectors.pyc
� ��abc�����������@���s��d��d�l��Z��d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�m�Z�m�Z�y �e�j �Z �Wn �e �e�f�k �r��e�j�Z �n�Xd#�Z�d$�Z �e�Z�e����Z�d�a�d�e�f�d�������YZ�d����Z�e�j�d%�k�r��d ����Z�n �d����Z�e�d�d �d�d�d�g���Z�d�e�f�d�������YZ�d�e�f�d�������YZ�e�e�d���rad�e�f�d�������YZ�n��e�e�d���r�d�e�f�d�������YZ�n��e�e�d���r�d�e�f�d�������YZ�n��e�e�d���r�d�e�f�d �������YZ �n��e�e�d���s�e!�Z�n��d!����Z"�d"����Z#�d�S(&���i����N(���t ���namedtuplet���Mappingi���i����t ���SelectorErrorc�����������B���s#���e��Z�d�����Z�d����Z�d����Z�RS(���c���������C���s ���t��t�|����j����|�|��_�d��S(���N(���t���superR���t���__init__t���errno(���t���selft���errcode(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s����c���������C���s���d�j��|��j���S(���Ns���<SelectorError errno={0}>(���t���formatR���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���__repr__"���s����c���������C���s ���|��j�����S(���N(���R ���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���__str__%���s����(���t���__name__t ���__module__R���R ���R ���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s��� c���������C���s����t��|��t���r�|��}�nH�y�t�|��j������}�Wn/�t�t�t�f�k �r_�t�d�j�|��������n�X|�d�k��r��t�d�j�|�������n��|�S(���sl��� Return a file descriptor from a file object. If given an integer will simply return that integer back. s���Invalid file object: {0!r}i����s���Invalid file descriptor: {0}(���t ���isinstancet���intt���filenot���AttributeErrort ���TypeErrort ���ValueErrorR���(���t���fileobjt���fd(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���_fileobj_to_fd)���s���� i���i���c���������O���sd���y�|��|�|����SWnL�t��t�t�j�f�k �r_�}�d�}�t�|�d���rP�|�j�}�n��t�|�����n�Xd�S(���s���� This is the short-circuit version of the below logic because in Python 3.5+ all system calls automatically restart and recalculate their timeouts. R���N(���t���OSErrort���IOErrort���selectt���errort���Nonet���hasattrR���R���(���t���funct���_t���argst���kwargst���eR���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���_syscall_wrapper;���s����c���������O���s���|�j��d�d���}�|�d�k�r-�d�}�t�}�n.�t�|���}�|�d�k��rN�d�}�n �t����|�}�t�|���}�|�r��d�|�k�r��t�d�����n��t�}�x5|�t�k�r�y�|��|�|����}�Wq��t�t �t �j�f�k �r�}�d�}�t�|�d���r��|�j �}�n�t�|�d���r|�j�d�}�n��|�t �j�k�p8t�t �d���o8|�t �j�k�} �| �r�|�d�k �r��t����} �| �|�k�rwt�d�t �j�����n��|�r�d�|�k�r�|�| �|�d�<q�q�q��q��n��|�r�t�|�����q����q��Xq��W|�S( ���s���� Wrapper function for syscalls that could fail due to EINTR. All functions should be retried if there is time left in the timeout in accordance with PEP 475. t���timeoutg��������s4���Timeout must be in args or kwargs to be recalculatedR���R���i����t���WSAEINTRN(���t���getR���t���Falset���floatt ���monotonict���listR���t���_SYSCALL_SENTINELR���R���R���R���R���R���R���t���EINTRR#���t ���ETIMEDOUTR���(���R���t���recalc_timeoutR���R���R"���t���expirest���resultR ���R���t���is_interruptt���current_time(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR!���G���sJ���� t���SelectorKeyR���R���t���eventst���datat���_SelectorMappingc�����������B���s2���e��Z�d��Z�d����Z�d����Z�d����Z�d����Z�RS(���s*��� Mapping of file objects to selector keys c���������C���s ���|�|��_��d��S(���N(���t ���_selector(���R���t���selector(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR�������s����c���������C���s���t��|��j�j���S(���N(���t���lenR5���t ���_fd_to_key(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���__len__����s����c���������C���sQ���y$�|��j��j�|���}�|��j��j�|�SWn&�t�k �rL�t�d�j�|�������n�Xd��S(���Ns���{0!r} is not registered.(���R5���t���_fileobj_lookupR8���t���KeyErrorR���(���R���R���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���__getitem__����s ���� c���������C���s���t��|��j�j���S(���N(���t���iterR5���R8���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���__iter__����s����(���R���R���t���__doc__R���R9���R<���R>���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR4�������s ��� t���BaseSelectorc�����������B���s����e��Z�d��Z�d����Z�d����Z�d �d���Z�d����Z�d �d���Z�d �d���Z �d����Z �d����Z�d ����Z�d ����Z �d����Z�d����Z�RS(���s/�� Abstract Selector class A selector supports registering file objects to be monitored for specific I/O events. A file object is a file descriptor or any object with a `fileno()` method. An arbitrary object can be attached to the file object which can be used for example to store context info, a callback, etc. A selector can use various implementations (select(), poll(), epoll(), and kqueue()) depending on the platform. The 'DefaultSelector' class uses the most efficient implementation for the current platform. c���������C���s���i��|��_��t�|����|��_�d��S(���N(���R8���R4���t���_map(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR�������s���� c���������C���sY���y�t��|���SWnD�t�k �rT�x-�|��j�j����D]�}�|�j�|�k�r.�|�j�Sq.�W���n�Xd�S(���sa�� Return a file descriptor from a file object. This wraps _fileobj_to_fd() to do an exhaustive search in case the object is invalid but we still have it in our map. Used by unregister() so we can unregister an object that was previously registered even if it is closed. It is also used by _SelectorMapping N(���R���R���R8���t���valuesR���R���(���R���R���t���key(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR:�������s���� c���������C���s����|�s�|�t��t�B@r.�t�d�j�|�������n��t�|�|��j�|���|�|���}�|�j�|��j�k�r|�t�d�j�|�|�j�������n��|�|��j�|�j�<|�S(���s8��� Register a file object for a set of events to monitor. s���Invalid events: {0!r}s$���{0!r} (FD {1}) is already registered( ���t ���EVENT_READt���EVENT_WRITER���R���R1���R:���R���R8���R;���(���R���R���R2���R3���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���register����s���� c���������C���s����y�|��j��j�|��j�|�����}�Wn��t�k �rG�t�d�j�|�������n��t�j�k �r��}�|�j�t�j�k�rq����q��xV�|��j��j ����D],�}�|�j �|�k�r��|��j��j�|�j���Pq��q��Wt�d�j�|�������n�X|�S(���s0��� Unregister a file object from being monitored. s���{0!r} is not registered(���R8���t���popR:���R;���R���t���socketR���R���t���EBADFRB���R���R���(���R���R���RC���R ���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt ���unregister����s���� c���������C���s����y�|��j��|��j�|���}�Wn&�t�k �rB�t�d�j�|�������n�X|�|�j�k�rw�|��j�|���|��j�|�|�|���}�n4�|�|�j�k�r��|�j�d�|���}�|�|��j��|�j �<n��|�S(���s<��� Change a registered file object monitored events and data. s���{0!r} is not registeredR3���( ���R8���R:���R;���R���R2���RJ���RF���R3���t���_replaceR���(���R���R���R2���R3���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���modify����s���� c���������C���s ���t�������d�S(���sj��� Perform the actual selection until some monitored file objects are ready or the timeout expires. N(���t���NotImplementedError(���R���R"���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR�������s����c���������C���s���|��j��j����d�|��_�d�S(���sd��� Close the selector. This must be called to ensure that all underlying resources are freed. N(���R8���t���clearR���RA���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���close����s���� c���������C���s`���|��j�����}�|�d�k�r'�t�d�����n��y�|�|�SWn&�t�k �r[�t�d�j�|�������n�Xd�S(���s:��� Return the key associated with a registered file object. s���Selector is closeds���{0!r} is not registeredN(���t���get_mapR���t���RuntimeErrorR;���R���(���R���R���t���mapping(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���get_key���s���� c���������C���s���|��j��S(���s3��� Return a mapping of file objects to selector keys (���RA���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRP��� ��s����c���������C���s(���y�|��j��|�SWn�t�k �r#�d�SXd�S(���s_��� Return the key associated to a given file descriptor Return None if it is not found. N(���R8���R;���R���(���R���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���_key_from_fd��s���� c���������C���s���|��S(���N(����(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt ���__enter__��s����c���������G���s���|��j�����d��S(���N(���RO���(���R���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���__exit__��s����N(���R���R���R?���R���R:���R���RF���RJ���RL���R���RO���RS���RP���RT���RU���RV���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR@�������s��� R���t���SelectSelectorc�����������B���sD���e��Z�d��Z�d����Z�d�d���Z�d����Z�d�d���Z�d�d���Z�RS(���s��� Select-based selector. c���������C���s/���t��t�|����j����t����|��_�t����|��_�d��S(���N(���R���RW���R���t���sett���_readerst���_writers(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR���!��s����c���������C���sb���t��t�|����j�|�|�|���}�|�t�@r>�|��j�j�|�j���n��|�t�@r^�|��j�j�|�j���n��|�S(���N( ���R���RW���RF���RD���RY���t���addR���RE���RZ���(���R���R���R2���R3���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRF���&��s���� c���������C���sB���t��t�|����j�|���}�|��j�j�|�j���|��j�j�|�j���|�S(���N(���R���RW���RJ���RY���t���discardR���RZ���(���R���R���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRJ���.��s����c���������C���s���t��j��|�|�g��|���S(���s?��� Wrapper for select.select because timeout is a positional arg (���R���(���R���t���rt���wR"���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���_select4��s����c��� ������C���s��t��|��j���r$�t��|��j���r$�g��S|�d��k�r6�d��n�t�|�d���}�g��}�t�|��j�t�|��j�|��j�|���\�}�}�}�t�|���}�t�|���}�x|�|�|�BD]p�}�d�}�|�|�k�r��|�t �O}�n��|�|�k�r��|�t �O}�n��|��j�|���}�|�r��|�j�|�|�|�j �@f���q��q��W|�S(���Ng��������i����(���R7���RY���RZ���R���t���maxR!���R_���t���TrueRX���RD���RE���RT���t���appendR2���( ���R���R"���t���readyR]���R^���R���R���R2���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR���8��s$���� ! !N( ���R���R���R?���R���R���RF���RJ���R_���R���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRW�����s��� t���pollt���PollSelectorc�����������B���sD���e��Z�d��Z�d����Z�d�d���Z�d����Z�d�d���Z�d�d���Z�RS(���s��� Poll-based selector c���������C���s&���t��t�|����j����t�j����|��_�d��S(���N(���R���Re���R���R���Rd���t���_poll(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR���S��s����c���������C���sr���t��t�|����j�|�|�|���}�d�}�|�t�@r>�|�t�j�O}�n��|�t�@rX�|�t�j�O}�n��|��j�j�|�j �|���|�S(���Ni����( ���R���Re���RF���RD���R���t���POLLINRE���t���POLLOUTRf���R���(���R���R���R2���R3���RC���t ���event_mask(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRF���W��s���� c���������C���s/���t��t�|����j�|���}�|��j�j�|�j���|�S(���N(���R���Re���RJ���Rf���R���(���R���R���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRJ���a��s����c���������C���sM���|�d�k �r7�|�d�k�r!�d�}�q7�t�j�|�d���}�n��|��j�j�|���}�|�S(���sj��� Wrapper function for select.poll.poll() so that _syscall_wrapper can work with only seconds. i����g�����@�@N(���R���t���matht���ceilRf���Rd���(���R���R"���R.���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt ���_wrap_pollf��s���� c���������C���s����g��}�t��|��j�t�d�|��}�x��|�D]z�\�}�}�d�}�|�t�j�@rR�|�t�O}�n��|�t�j�@rm�|�t�O}�n��|��j�|���}�|�r%�|�j �|�|�|�j �@f���q%�q%�W|�S(���NR"���i����(���R!���Rl���Ra���R���Rg���RE���Rh���RD���RT���Rb���R2���(���R���R"���Rc���t ���fd_eventsR���Ri���R2���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR���t��s���� !N( ���R���R���R?���R���R���RF���RJ���Rl���R���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRe���Q��s��� t���epollt ���EpollSelectorc�����������B���sJ���e��Z�d��Z�d����Z�d����Z�d�d���Z�d����Z�d�d���Z�d����Z �RS(���s��� Epoll-based selector c���������C���s&���t��t�|����j����t�j����|��_�d��S(���N(���R���Ro���R���R���Rn���t���_epoll(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s����c���������C���s ���|��j��j����S(���N(���Rp���R���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s����c���������C���sx���t��t�|����j�|�|�|���}�d�}�|�t�@r>�|�t�j�O}�n��|�t�@rX�|�t�j�O}�n��t�|��j �j�t �|�j�|���|�S(���Ni����(���R���Ro���RF���RD���R���t���EPOLLINRE���t���EPOLLOUTR!���Rp���R%���R���(���R���R���R2���R3���RC���t���events_mask(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRF������s���� c���������C���sM���t��t�|����j�|���}�y�t�|��j�j�t�|�j���Wn�t�k �rH�n�X|�S(���N(���R���Ro���RJ���R!���Rp���R%���R���R���(���R���R���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRJ������s���� c��� ������C���s��|�d��k �rG�|�d�k�r!�d�}�n�t�j�|�d���d�}�t�|���}�n�d�}�t�t�|��j���d���}�g��}�t�|��j�j �t �d�|�d�|��}�x��|�D]z�\�}�}�d�}�|�t�j�@r��|�t �O}�n��|�t�j�@r��|�t�O}�n��|��j�|���}�|�r��|�j�|�|�|�j�@f���q��q��W|�S( ���Ni����g��������g�����@�@g����MbP?g�������i���R"���t ���maxevents(���R���Rj���Rk���R&���R`���R7���R8���R!���Rp���Rd���Ra���R���Rq���RE���Rr���RD���RT���Rb���R2���( ���R���R"���t ���max_eventsRc���Rm���R���Ri���R2���RC���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s*���� !c���������C���s$���|��j��j����t�t�|����j����d��S(���N(���Rp���RO���R���Ro���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRO������s���� N( ���R���R���R?���R���R���R���RF���RJ���R���RO���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRo������s��� !t���kqueuet���KqueueSelectorc�����������B���sJ���e��Z�d��Z�d����Z�d����Z�d�d���Z�d����Z�d�d���Z�d����Z �RS(���s ��� Kqueue / Kevent-based selector c���������C���s&���t��t�|����j����t�j����|��_�d��S(���N(���R���Rw���R���R���Rv���t���_kqueue(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s����c���������C���s ���|��j��j����S(���N(���Rx���R���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s����c���������C���s����t��t�|����j�|�|�|���}�|�t�@rh�t�j�|�j�t�j�t�j���}�t �|��j �j�t�|�g�d�d���n��|�t �@r��t�j�|�j�t�j�t�j���}�t �|��j �j�t�|�g�d�d���n��|�S(���Ni����(���R���Rw���RF���RD���R���t���keventR���t���KQ_FILTER_READt ���KQ_EV_ADDR!���Rx���t���controlR%���RE���t���KQ_FILTER_WRITE(���R���R���R2���R3���RC���Ry���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRF������s���� " "c���������C���s����t��t�|����j�|���}�|�j�t�@r}�t�j�|�j�t�j�t�j ���}�y#�t �|��j�j�t �|�g�d�d���Wq}�t�k �ry�q}�Xn��|�j�t�@r��t�j�|�j�t�j�t�j ���}�y#�t �|��j�j�t �|�g�d�d���Wq��t�k �r��q��Xn��|�S(���Ni����(���R���Rw���RJ���R2���RD���R���Ry���R���Rz���t���KQ_EV_DELETER!���Rx���R|���R%���R���RE���R}���(���R���R���RC���Ry���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRJ������s$���� # # c���������C���s9��|�d��k �r�t�|�d���}�n��t�|��j���d�}�i��}�t�|��j�j�t�d��|�|���}�x��|�D]��}�|�j�}�|�j �}�d�}�|�t �j�k�r��|�t�O}�n��|�t �j �k�r��|�t�O}�n��|��j�|���} �| �r\�| �j�|�k�r��| �|�| �j�@f�|�| �j�<q%|�| �j�d�} �| �|�| �B| �j�@f�|�| �j�<q\�q\�Wt�|�j������S(���Ni����i���i���(���R���R`���R7���R8���R!���Rx���R|���Ra���t���identt���filterR���Rz���RD���R}���RE���RT���R���R2���R(���RB���(���R���R"���Ru���t ���ready_fdst���kevent_listRy���R���Ri���R2���RC���t ���old_events(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyR������s*���� %c���������C���s$���|��j��j����t�t�|����j����d��S(���N(���Rx���RO���R���Rw���(���R���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRO�����s���� N( ���R���R���R?���R���R���R���RF���RJ���R���RO���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyRw������s��� c���������C���sg���yF�|��d�k�r+�t��j����}�|�j�d���n�t�t��|�������j����t�SWn�t�t�f�k �rb�}�t�SXd�S(���s �� Checks that select structs can be allocated by the underlying operating system, not just advertised by the select module. We don't check select() because we'll be hopeful that most platforms that don't have it available will not advertise it. (ie: GAE) Rd���i����N(���R���Rd���t���getattrRO���Ra���R���R���R%���(���t���structt���pR ���(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt ���_can_allocate��s����c�����������C���sy���t��d�k�rr�t�d���r!�t�a��qr�t�d���r6�t�a��qr�t�d���rK�t�a��qr�t�t�d���rc�t�a��qr�t �d�����n��t�����S(���s���� This function serves as a first call for DefaultSelector to detect if the select module is being monkey-patched incorrectly by eventlet, greenlet, and preserve proper behavior. Rv���Rn���Rd���R���s!���Platform does not have a selectorN( ���t���_DEFAULT_SELECTORR���R����Rw���Ro���Re���R���R���RW���R���(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���DefaultSelector5��s���� i���i���(���i���i���($���R���Rj���R���RH���t���syst���timet���collectionsR����R���R'���R���t���ImportErrorRD���RE���Ra���t ���HAS_SELECTt���objectR)���R���R����t ���ExceptionR���R���t���version_infoR!���R1���R4���R@���R���RW���Re���Ro���Rw���R%���R����R����(����(����(����sF���/usr/lib/python2.7/site-packages/pip/_vendor/urllib3/util/selectors.pyt���<module>���sF��� 8�14BR