
    i                    |    S r SSKJr  SSKrSSKrSSKJrJrJr  \	" \S5      r
\" \S\5      rS
S jr " S S	5      rg)zSelect / poll helper    )annotationsN)AnyOptionalcastpollerrorc                    [        U S5      (       a  [        [        U R                  5      $ U R                  (       a  [        [        U R                  S   5      $ g )Nerrnor   )hasattrr   intr
   args)excs    C/app/mltbenv/lib/python3.13/site-packages/pymongo/socket_checker.py_errno_from_exceptionr      s?    sGC##
xxC!%%    c                  J    \ rS rSrSS jr S         S	S jjrS
S jrSrg)SocketChecker"   c                b    U   [         (       a  [        R                  " 5       U l        g S U l        g )N)
_HAVE_POLLselectr   _poller)selfs    r   __init__SocketChecker.__init__#   s    :!;;=DLDLr   c                     U R                   (       a  [        R                  [        R                  -  nU(       a$  U[        R                  -  [        R
                  -  nU(       a  U[        R                  -  nU R                   R                  X5         Uc  SOUS-  nU R                   R                  U5      n[        U5      U R                   R                  U5        $ U(       a  U/O/ nU(       a  U/O/ n	[        R                  " XU/U5      n[        U5      $ ! U R                   R                  U5        f = f! [        [        4 a:  n
[        U
5      [        R                   [        R"                  4;   a   Sn
A
GM  e Sn
A
ff = f)zSelect for reads or writes with a timeout in seconds (or None).

Returns True if the socket is readable/writable, False on timeout.
Ni  )r   r   POLLERRPOLLHUPPOLLINPOLLPRIPOLLOUTregisterr   bool
unregisterany_SelectErrorOSErrorr   r
   EINTREAGAIN)r   sockreadwritetimeoutmasktimeout_resrlistwlistr   s              r   r   SocketChecker.select*   s(    <<!>>FNN:D#fmm3fnnD#fnn4LL))$56 ,3?4$"ll//9
  $Cy//5&*TFE&+TFE --tfgFC s8O //5 !'* (-%++u||1LLs<   BD= /D D= !;D= D::D= =F-FFFc                z     U R                  USS9$ ! [        [        4 a    e [         a     g[         a     gf = f)z?Return True if we know socket has been closed, False otherwise.T)r+   )r   RuntimeErrorKeyError
ValueError	Exception)r   r*   s     r   socket_closedSocketChecker.socket_closedT   sM    	;;t$;//h' 	
  	  	 	s    :	::)r   N)returnNone)FFr   )
r*   r   r+   r#   r,   r#   r-   zOptional[float]r;   r#   )r*   r   r;   r#   )__name__
__module____qualname____firstlineno__r   r   r9   __static_attributes__ r   r   r   r   "   sA      ^_((#(48(KZ(	(Tr   r   )r   BaseExceptionr;   zOptional[int])__doc__
__future__r   r
   r   typingr   r   r   r   r   getattrr'   r&   r   r   rB   r   r   <module>rH      sD     "   & &VV$
vw0D Dr   