HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //proc/self/root/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyc
�
1�3\c@@s�dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZejZej
Z
y
e	jZWnek
r�e	j	ZnXdZdZdZd	Zd
Zddd
ddgZd2Zd3Zdae�ZeeejfZed
ddddg�Z de
fd��YZ!d�Z"defd��YZ#e$ed�r�de#fd��YZ%ej&d�ej'r�defd��YZ(de%fd��YZ)ej&d�e)Z%q�ne$ed �rd!e#fd"��YZ*ej&d!�ne$ed#�rPd$e#fd%��YZ+ej&d$�ne$ed&�r�d'e#fd(��YZ,ej&d'�ne$ed)�r�d*e#fd+��YZ-ej&d*�nd,�Z.ej/d4kr�d/�Z0n	d0�Z0d1�Z1dS(5s. Back-ported, durable, and portable selectors i(tabsolute_importNi(tpycompatsSeth Michael Larsons sethmichaellarson@protonmail.coms2.0.0tMITs3https://www.github.com/SethMichaelLarson/selectors2t
EVENT_READtEVENT_WRITEtSelectorKeytDefaultSelectortBaseSelectoritfileobjtfdteventstdatat_SelectorMappingcB@s2eZdZd�Zd�Zd�Zd�ZRS(s* Mapping of file objects to selector keys cC@s
||_dS(N(t	_selector(tselftselector((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt__init__FscC@st|jj�S(N(tlenR
t
_fd_to_key(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt__len__IscC@sQy$|jj|�}|jj|SWn&tk
rLtdj|���nXdS(Ns{0!r} is not registered.(R
t_fileobj_lookupRtKeyErrortformat(RRR	((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt__getitem__Ls

cC@st|jj�S(N(titerR
R(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt__iter__Ss(t__name__t
__module__t__doc__RRRR(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRCs
			cC@s�t|t�r|}nHyt|j��}Wn/tttfk
r_tdj|���nX|dkr�tdj|���n|S(sl Return a file descriptor from a file object. If
    given an integer will simply return that integer back. sInvalid file object: {0!r}isInvalid file descriptor: {0}(t
isinstancetinttfilenotAttributeErrort	TypeErrort
ValueErrorR(RR	((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt_fileobj_to_fdWs	cB@s�eZdZd�Zd�Zd
d�Zd�Zd
d�Zd
d�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�ZRS(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.
    cC@si|_t|�|_dS(N(RRt_map(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRus	cC@sYyt|�SWnDtk
rTx-|jj�D]}|j|kr.|jSq.W�nXdS(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"RtvaluesRR	(RRtkey((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR|s
cC@s�|s|ttB@r.tdj|���nt||j|�||�}|j|jkr|tdj||j���n||j|j<|S(s8 Register a file object for a set of events to monitor. sInvalid events: {0!r}s${0!r} (FD {1}) is already registered(	RRR"RRRR	RR(RRR
RR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pytregister�s	cC@s�y|jj|j|��}Wn�tk
rGtdj|���n�tjk
r�}|jtjkrq�q�xV|jj	�D],}|j
|kr�|jj|j�Pq�q�Wtdj|���nX|S(s0 Unregister a file object from being monitored. s{0!r} is not registered(RtpopRRRtsocketterrorterrnotEBADFR%RR	(RRR&terr((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt
unregister�s
cC@s�y|j|j|�}Wn&tk
rBtdj|���nX||jkrw|j|�|j|||�}n4||jkr�|jd|�}||j|j	<n|S(s< Change a registered file object monitored events and data. s{0!r} is not registeredR(
RRRRR
R.R'Rt_replaceR	(RRR
RR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pytmodify�s

cC@s
t��dS(sj Perform the actual selection until some monitored file objects
        are ready or the timeout expires. N(tNotImplementedError(Rttimeout((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pytselect�scC@s|jj�d|_dS(sd Close the selector. This must be called to ensure that all
        underlying resources are freed. N(RtcleartNoneR$(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pytclose�s
cC@s`|j�}|dkr'td��ny||SWn&tk
r[tdj|���nXdS(s: Return the key associated with a registered file object. sSelector is closeds{0!r} is not registeredN(tget_mapR5tRuntimeErrorRR(RRtmapping((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pytget_key�s
cC@s|jS(s3 Return a mapping of file objects to selector keys (R$(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR7�scC@s(y|j|SWntk
r#dSXdS(s_ Return the key associated to a given file descriptor
         Return None if it is not found. N(RRR5(RR	((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt_key_from_fd�s
cC@s|S(N((R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt	__enter__�scG@s|j�dS(N(R6(Rt_((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt__exit__�sN(RRRRRR5R'R.R0R3R6R:R7R;R<R>(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRfs					
			R3tSelectSelectorcB@sDeZdZd�Zdd�Zd�Zdd�Zdd�ZRS(s Select-based selector. cC@s/tt|�j�t�|_t�|_dS(N(tsuperR?Rtsett_readerst_writers(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR�scC@sbtt|�j|||�}|t@r>|jj|j�n|t@r^|jj|j�n|S(N(	R@R?R'RRBtaddR	RRC(RRR
RR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR'�s

cC@sBtt|�j|�}|jj|j�|jj|j�|S(N(R@R?R.RBtdiscardR	RC(RRR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR.�sc	C@st|j�r$t|j�r$gS|dkr6dnt|d�}g}t|jt|j|j|�\}}}t|�}t|�}x|||BD]p}d}||kr�|t	O}n||kr�|t
O}n|j|�}|r�|j|||j
@f�q�q�W|S(Ngi(RRBRCR5tmaxt_syscall_wrappert_wrap_selecttTrueRARRR;tappendR
(	RR2treadytrtwR=R	R
R&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR3s$ !

!cC@stj||g|�S(s? Wrapper for select.select because timeout is a positional arg (R3(RRLRMR2((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRHsN(	RRRRR5R'R.R3RH(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR?�s		t_JythonSelectorMappingcB@s)eZdZd�Zd�Zd�ZRS(s� This is an implementation of _SelectorMapping that is built
            for use specifically with Jython, which does not provide a hashable
            value from socket.socket.fileno(). cC@s"t|t�st�||_dS(N(RtJythonSelectSelectortAssertionErrorR
(RR((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR(scC@st|jj�S(N(RR
t_sockets(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR,scC@sFx?|jjD]\}}||kr
|Sq
Wtdj|���dS(Ns{0!r} is not registered.(R
RQRR(RRtsockR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR/s(RRRRRR(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRN#s		ROcB@s8eZdZd�Zdd�Zd�Zdd�ZRS(sz This is an implementation of SelectSelector that is for Jython
            which works around that Jython's socket.socket.fileno() does not
            return an integer fd value. All SelectorKey.fd will be equal to -1
            and should not be used. This instead uses object id to compare fileobj
            and will only use select.select as it's the only selector that allows
            directly passing in socket objects rather than registering fds.
            See: http://bugs.jython.org/issue1678
                 https://wiki.python.org/jython/NewSocketModule#socket.fileno.28.29_does_not_return_an_integer
            cC@sYtt|�j�g|_t|�|_g|_g|_tt	dt	j	�|_
dS(Ntcpython_compatible_select(R@RORRQRNR$RBRCtgetattrR3t_select_func(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRAs			cC@s�x>|jD]3\}}||kr
tdj||���q
q
Wt|d||�}|jj||f�|t@r�|jj|�n|t@r�|jj|�n|S(Ns{0!r} is already registeredi����(	RQRRRRJRRBRRC(RRR
RRRR=R&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR'Ls	

cC@s�xHt|j�D]"\}\}}||krPqqWtdj|���|jt@rk|jj|�n|jt@r�|j	j|�n|j|=|S(Ns{0!r} is not registered.(
t	enumerateRQRRR
RRBtremoveRRC(RRtiRRR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR.[s"


cC@s|j||g|�S(s? Wrapper for select.select because timeout is a positional arg (RU(RRLRMR2((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRHjsN(RRRRR5R'R.RH(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRO6s
			tpolltPollSelectorcB@sDeZdZd�Zdd�Zd�Zdd�Zdd�ZRS(s Poll-based selector cC@s&tt|�j�tj�|_dS(N(R@RZRR3RYt_poll(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRuscC@srtt|�j|||�}d}|t@r>|tjO}n|t@rX|tjO}n|jj|j	|�|S(Ni(
R@RZR'RR3tPOLLINRtPOLLOUTR[R	(RRR
RR&t
event_mask((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR'ys

cC@s/tt|�j|�}|jj|j�|S(N(R@RZR.R[R	(RRR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR.�scC@sM|dk	r7|dkr!d}q7tj|d�}n|jj|�}|S(sj Wrapper function for select.poll.poll() so that
            _syscall_wrapper can work with only seconds. ii�N(R5tmathtceilR[RY(RR2tresult((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt
_wrap_poll�s	cC@s�g}t|jtd|�}x�|D]z\}}d}|tj@rR|tO}n|tj@rm|tO}n|j|�}|r%|j	|||j
@f�q%q%W|S(NR2i(RGRbRIR3R\RR]RR;RJR
(RR2RKt	fd_eventsR	R^R
R&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR3�s

!N(	RRRRR5R'R.RbR3(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRZss	
	tepollt
EpollSelectorcB@sJeZdZd�Zd�Zdd�Zd�Zdd�Zd�Z	RS(s Epoll-based selector cC@s&tt|�j�tj�|_dS(N(R@ReRR3Rdt_epoll(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR�scC@s
|jj�S(N(RfR(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR�scC@sxtt|�j|||�}d}|t@r>|tjO}n|t@rX|tjO}nt|j	jt
|j|�|S(Ni(R@ReR'RR3tEPOLLINRtEPOLLOUTRGRftFalseR	(RRR
RR&tevents_mask((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR'�s

cC@sMtt|�j|�}yt|jjt|j�Wntk
rHnX|S(N(R@ReR.RGRfRiR	t_ERROR_TYPES(RRR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR.�s
c	C@s|dk	rG|dkr!d}ntj|d�d}t|�}nd}tt|j�d�}g}t|jj	t
d|d|�}x�|D]z\}}d}|tj@r�|t
O}n|tj@r�|tO}n|j|�}|r�|j|||j@f�q�q�W|S(	Nigi�g����MbP?g�iR2t	maxevents(R5R_R`tfloatRFRRRGRfRYRIR3RgRRhRR;RJR
(	RR2t
max_eventsRKRcR	R^R
R&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR3�s*		

!cC@s$|jj�tt|�j�dS(N(RfR6R@Re(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR6�s
N(
RRRRRR5R'R.R3R6(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRe�s		
		!tdevpolltDevpollSelectorcB@sVeZdZd�Zd�Zdd�Zd�Zdd�Zdd�Z	d�Z
RS(	sSolaris /dev/poll selector.cC@s&tt|�j�tj�|_dS(N(R@RpRR3Rot_devpoll(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR�scC@s
|jj�S(N(RqR(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR�scC@srtt|�j|||�}d}|t@r>|tjO}n|t@rX|tjO}n|jj|j	|�|S(Ni(
R@RpR'RR3R\RR]RqR	(RRR
RR&tpoll_events((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR'�s

cC@s/tt|�j|�}|jj|j�|S(N(R@RpR.RqR	(RRR&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR.scC@sM|dk	r7|dkr!d}q7tj|d�}n|jj|�}|S(sj Wrapper function for select.poll.poll() so that
            _syscall_wrapper can work with only seconds. ii�N(R5R_R`RqRY(RR2Ra((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRbs	cC@s�g}t|jtd|�}x�|D]z\}}d}|tj@rR|tO}n|tj@rm|tO}n|j|�}|r%|j	|||j
@f�q%q%W|S(NR2i(RGRbRIR3R\RR]RR;RJR
(RR2RKRcR	R^R
R&((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR3s

!cC@s$|jj�tt|�j�dS(N(RqR6R@Rp(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR6%s
N(RRRRRR5R'R.RbR3R6(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRp�s		
	tkqueuetKqueueSelectorcB@sJeZdZd�Zd�Zdd�Zd�Zdd�Zd�Z	RS(s  Kqueue / Kevent-based selector cC@s&tt|�j�tj�|_dS(N(R@RtRR3Rst_kqueue(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR/scC@s
|jj�S(N(RuR(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR3scC@s�tt|�j|||�}|t@rhtj|jtjtj�}t	|j
jt|gdd�n|t
@r�tj|jtjtj�}t	|j
jt|gdd�n|S(Ni(R@RtR'RR3tkeventR	tKQ_FILTER_READt	KQ_EV_ADDRGRutcontrolRiRtKQ_FILTER_WRITE(RRR
RR&Rv((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR'6s
"
"cC@s�tt|�j|�}|jt@r}tj|jtjtj	�}y#t
|jjt
|gdd�Wq}tk
ryq}Xn|jt@r�tj|jtjtj	�}y#t
|jjt
|gdd�Wq�tk
r�q�Xn|S(Ni(R@RtR.R
RR3RvR	RwtKQ_EV_DELETERGRuRyRiRkRRz(RRR&Rv((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR.Hs$
#

#
cC@s9|dk	rt|d�}nt|j�d}i}t|jjtd||�}x�|D]�}|j}|j	}d}|t
jkr�|tO}n|t
j
kr�|tO}n|j|�}	|	r\|	j|kr�|	||	j@f||	j<q%||	jd}
|	||
B|	j@f||	j<q\q\Wt|j��S(Niii(R5RFRRRGRuRyRItidenttfilterR3RwRRzRR;R	R
tlistR%(RR2Rnt	ready_fdstkevent_listRvR	R^R
R&t
old_events((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR3]s*
		

%cC@s$|jj�tt|�j�dS(N(RuR6R@Rt(R((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR6zs
N(
RRRRRR5R'R.R3R6(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRt-s			cC@seyF|dkr+tj�}|jd�ntt|��j�tSWnttfk
r`tSXdS(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) RYiN(R3RYRTR6RItOSErrorR Ri(tstructtp((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt
_can_allocate�siicO@s
|||�S(sy This is the short-circuit version of the below logic
        because in Python 3.5+ all selectors restart system calls. ((tfuncR=targstkwargs((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRG�scO@s�|jdd	�}|d	kr-d	}t}n.t|�}|dkrNd	}n
t�|}t|�}|r�d|kr�td��nt}x |tkr�y|||�}Wq�tt	t
jfk
r�}d	}t|d�r�|j
}nt|d�r|jd}n|t
jkp8tt
d�o8|t
jk}	|	r�|d	k	r�t�}
|
|krwtt
jd��n|r�d|kr�||
|d<q�q�q�q�n�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. R2gs4Timeout must be in args or kwargs to be recalculatedR+R�itWSAEINTRsConnection timed outN(tgetR5RiRmt	monotonicR~R"t_SYSCALL_SENTINELR�tIOErrorR3R*thasattrR+R�tEINTRR�t	ETIMEDOUT(R�trecalc_timeoutR�R�R2texpiresRateterrcodetis_interrupttcurrent_time((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyRG�sF		
	cC@s�tdkr�tjrtaq�td�r3taq�td�rHtaq�td�r]taq�td�rrt	aq�t
td�r�taq�t
d��nt�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. RsRoRdRYR3s"Platform does not have a selector.N(t_DEFAULT_SELECTORR5RtisjythonROR�RtRpReRZR�R3R?R8(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyR�s							ii(ii(2Rt
__future__RtcollectionsR+R_R3R)tsysttimetRt
namedtupletMappingR�R t
__author__t	__email__t__version__t__license__t__url__t__all__RRR5R�tobjectR�R�R�R*RkRRR#RR�R?RJR�RNRORZReRpRtR�tversion_infoRGR(((sE/usr/lib64/python2.7/site-packages/mercurial/thirdparty/selectors2.pyt<module>sv		


			�0
	8
3A;Q		8