
    h                       % S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJr  SSKJr  SSKJr  SS	KJrJrJr  SS
KJr  SSKJr  SS jr\S:X  a  \rO\R                  r SSKJr  \r\" S5      r"        SS jr#        SS jr$\" \5       " S S\RJ                  \5      5       r&S r'S/r(g! \ a
    \ rS\!S'    NYf = f)z
Select reactor
    )annotationsN)EBADFEINTR)sleep)CallableTypeTypeVar)implementer)	posixbase)IReactorFDSetIReadDescriptorIWriteDescriptor)log)platformTypec                    U (       d)  U(       d"  Uc  SnO[        US5      n[        U5        / / / 4$ Ub  US:  a  Sn[        R                  " XX5      u  pnXU-   / 4$ )zWin32 select wrapper.g{Gz?gMbP?g      ?)minr   select)rwetimeouts       e/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/internet/selectreactor.pywin32selectr      sd    ?G'5)Gg2rz 'C-mmA!-GA!!eR<    win32)_ThreadedWin32EventsMixinzType[object]
_extraBase_Tc                   UR                  5         U  H1  n [        R                  " U/U/U/S5        UR                  U5        M3     g ! [         a-  n[        R
                  " SU-  5        U" X4S5         S nAMh  S nAff = f)Nr   zbad descriptor %sF)clearr   add	Exceptionr   msg)toPreen	preenInto
disconnect
selectabler   s        r   	_onePreenr(   :   st    
 OO
	&MM:,zlAF
 MM*%   	-GG'*45ze,,	-s   A		
B "A;;B c                    [         R                  " S5        [        U 5      n[        U5      n[        X0U5        [        XAU5        g )Nz1Malformed file descriptor found.  Preening lists.)r   r#   listr(   )readswritesr&   readerswriterss        r   _preenDescriptorsr/   J   s7    
 GG?@%)%[G&*6lGgj)gz*r   c                  f    \ rS rSrSrSS jrSS jrS r\rS r	S r
S rS	 rS
 rS rS rS rSrg)SelectReactorV   a  
A select() based reactor - runs on all POSIX platforms and on Win32.

@ivar _reads: A set containing L{FileDescriptor} instances which will be
    checked for read events.

@ivar _writes: A set containing L{FileDescriptor} instances which will be
    checked for writability.
c                ~    [        5       U l        [        5       U l        [        R                  R                  U 5        g)zF
Initialize file descriptor tracking dictionaries and the base class.
N)set_reads_writesr   PosixReactorBase__init__selfs    r   r8   SelectReactor.__init__b   s*     -0E.1e""++D1r   c                Z    [        U R                  U R                  U R                  5        g N)r/   r5   r6   _disconnectSelectabler9   s    r   r/   SelectReactor._preenDescriptorsj   s    $++t||T5O5OPr   c                    [        U R                  U R                  / U5      u  p#nU R                  n[        R                  nUSU R                  4USU R                  44 H  u  pn
U H  nX;  a  M
  U" XX5        M     M!     g! [         a    U R	                  5          g[
         a(    [        R                  " 5         U R	                  5          g[         a  nUR                  S   S;   a(  U R                  (       d  U R                  (       d   SnAge UR                  S   [        :X  a   SnAgUR                  S   [        :X  a  U R	                  5          SnAge SnAff = f)z
Run one iteration of the I/O monitor loop.

This will run all selectables who had input or output readiness
waiting for them.
Nr   )r      doReaddoWrite)_selectr5   r6   
ValueErrorr/   	TypeErrorr   errOSErrorargsr   r   _doReadOrWritecallWithLogger)r:   r   r   r   ignoredse_drdw_logrunselectablesmethodfdsetr'   s               r   doSelectSelectReactor.doSelectm   s0   	#DKKr7KMA'< ##$$$++&	4<<(+
&K *
 *
:> *	+
?  	""$ 	 GGI""$ 	 wwqzV#dllu$u$&&( #	s5   %B E#!.E#	E#5EE1'EEE#c                     [        X5      " 5       nU(       a  U R                  XUS:H  5        g g ! [         a0    [        R                  " 5       S   n[        R
                  " 5          NWf = f)N   rB   )getattrBaseExceptionsysexc_infor   rG   r>   )r:   r'   rQ   whys       r   rJ   SelectReactor._doReadOrWrite   s]    	*-/C &&z(8JK   	,,.#CGGI	s   0 7A*)A*c                :    U R                   R                  U5        g)zB
Add a FileDescriptor for notification of data available to read.
N)r5   r!   r:   readers     r   	addReaderSelectReactor.addReader   s     	r   c                :    U R                   R                  U5        g)zC
Add a FileDescriptor for notification of data available to write.
N)r6   r!   r:   writers     r   	addWriterSelectReactor.addWriter   s     	 r   c                :    U R                   R                  U5        g)zA
Remove a Selectable for notification of data available to read.
N)r5   discardr^   s     r   removeReaderSelectReactor.removeReader   s     	F#r   c                :    U R                   R                  U5        g)zB
Remove a Selectable for notification of data available to write.
N)r6   rh   rc   s     r   removeWriterSelectReactor.removeWriter   s     	V$r   c                N    U R                  U R                  U R                  5      $ r=   )
_removeAllr5   r6   r9   s    r   	removeAllSelectReactor.removeAll   s    t{{DLL99r   c                ,    [        U R                  5      $ r=   )r*   r5   r9   s    r   
getReadersSelectReactor.getReaders   s    DKK  r   c                ,    [        U R                  5      $ r=   )r*   r6   r9   s    r   
getWritersSelectReactor.getWriters   s    DLL!!r   )r5   r6   N)returnNone)__name__
__module____qualname____firstlineno____doc__r8   r/   rS   doIterationrJ   r`   re   ri   rl   rp   rs   rv   __static_attributes__ r   r   r1   r1   V   sH    2Q2?h KL !$%:!"r   r1   c                 4    [        5       n SSKJn  U" U 5        g)zDConfigure the twisted mainloop to be run using the select() reactor.r   )installReactorN)r1   twisted.internet.mainr   )reactorr   s     r   installr      s    oG47r   r   r=   )r$   zlist[_T]r%   zset[_T]r&   z%Callable[[_T, Exception, bool], None]rx   ry   )r+   zset[IReadDescriptor]r,   zset[IWriteDescriptor]r&   zECallable[[IReadDescriptor | IWriteDescriptor, Exception, bool], None]rx   ry   ))r~   
__future__r   r   rY   errnor   r   timer   typingr   r   r	   zope.interfacer
   twisted.internetr   twisted.internet.interfacesr   r   r   twisted.pythonr   twisted.python.runtimer   r   rD   "twisted.internet.win32eventreactorr   r   ImportErrorobject__annotations__r   r(   r/   r7   r1   r   __all__r   r   r   <module>r      s  
 #  
   * * & & X X  /$ 7GmmG+L +JT]&&& 6& 
	& 	+	+!	+ V	+ 
		+ ]t"I..
 t" t"n +I  &%J%&s   'B9 9C	C	