
    0Fieh                       d dl mZ 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Zd dl	Z	d dl
Z
d dlZd dlmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZ d dlZd d
lmZ d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;  ej<        e=          Z>e
j?        dk     rd ej@        ejA                  z  dz  dz
  ZBnd ej@        ejC                  z  dz
  ZBe5dz  ZDd ZEd ZFd ZGd ZH G d de%          ZIdBd"ZJdCd&ZK G d' d(eI          ZLd) ZM G d* d+          ZNejO        ejP        z  ZQejR        d,d-ZS G d. d/ejT                  ZU G d0 d1e'eN          ZV G d2 d3eV          ZW G d4 d5eV          ZX G d6 d7e$eN          ZY G d8 d9eY          ZZ G d: d;eY          Z[ G d< d=e*          Z\ G d> d?e\          Z] G d@ dAe\          Z^dS )D    )annotationsN)SSLCertVerificationErrorSSLError)AnyClassVar)sliding_window)gennetutil)IOStreamStreamClosedError)	TCPClient)	TCPServer)parse_timedelta)parse_host_portunparse_host_port)BaseListenerCommCommClosedError	ConnectorFatalCommClosedError)Backend)ensure_concrete_hostfrom_framesget_tcp_server_address	to_frames)
host_arraypack_frames_preludeunpack_frames)MEMORY_LIMIT)	ensure_ipensure_memoryviewget_ipget_ipv6nbytes)   
            c                :   |                                  rdS t          j                            d          }t	          t          |d                    }| j        }d}||dz   k    s
J d            t          d|d	z            }t          d||z
  |z            }|||z  z
  }|d
k    sJ 	 t          j	        
                    d          rFt                              d||           |                    t          j        d|dz  |dz  f           n|                    t          j        t          j        d           	 t          j        }t          j        }t          j        }n)# t*          $ r t          j	        dk    rd}d}d}nd}Y nw xY w|t                              d|||           |                    t          j        ||           |                    t          j        ||           |                    t          j        ||           t          j	        
                    d          rFt                              d|dz             d}	|                    t          j        |	|dz             dS dS # t.          $ r t                              d           Y dS w xY w)z5
    Set kernel-level TCP timeout on the stream.
    Nzdistributed.comm.timeouts.tcpseconds)defaultr&   r)   zTimeout too lowr(      r   winz+Setting TCP keepalive: idle=%d, interval=%di  darwin   i  i  z7Setting TCP keepalive: nprobes=%d, idle=%d, interval=%dlinuxzSetting TCP user timeout: %d ms   z$Could not set timeout on TCP stream.)closeddaskconfiggetintr   socketmaxsysplatform
startswithloggerdebugioctlSIO_KEEPALIVE_VALS
setsockopt
SOL_SOCKETSO_KEEPALIVETCP_KEEPIDLETCP_KEEPINTVLTCP_KEEPCNTAttributeErrorSOL_TCPOSError	exception)
commtimeoutsocknprobesidleintervalrD   rE   rF   TCP_USER_TIMEOUTs
             4lib/python3.11/site-packages/distributed/comm/tcp.pyset_tcp_timeoutrS   :   s    {{}} koo=>>G/'9===>>G;D Ggk!!!#4!!!q'Q,D1w~'122HX''D!8888"A<""5)) 	ILLFhWWWJJv01dTk8d?2STTTTOOF-v/BAFFF
(%2 & 4$0! ( ( (<8++#'L$)M"'KK#'L( 'M	   WEEEdCCCxHHH<""7++ 	NLL:GdNKKK!OOFN,<gnMMMMM	N 	N  A A A?@@@@@@As8   *BI2 ;$E  I2  #FI2 FC(I2 2$JJc                    |                                  rt                      t          | j                                        dd          S )z'
    Get a stream's local address.
    Nr(   )r3   r   r   r8   getsockname)rK   s    rR   get_stream_addressrV   u   sB     {{}}  dk5577;<<    c                (   |j         v|j         }t          |t          j                  r2|j        r+d|j        v r"t          d|  d|j        j         d|           t          d|  d|j        j         d|           |t          d|  d|           |)z8
    Re-raise StreamClosedError as CommClosedError.
    N
UNKNOWN_CAzin z: )	
real_error
isinstancesslr   reasonr   	__class____name__r   )objexcs     rR   convert_stream_closed_errorrb      s     ~!nc3<(( 	Yz Ylcj88*+W+W+W8N+W+WRU+W+WXXXJCJJ3=+AJJSJJKKQTT0C0030011s:rW   c                0     |             }|r	d|_         dS dS )zCallback to close Dask Comm when Tornado Stream closes

    Parameters
    ----------
        ref: weak reference to a Dask comm
    TN_closed)refrK   s     rR   _close_commrg      s,     355D  rW   c                  4    e Zd ZU dZej                            ej                            d                    Z	de
d<   de
d<   	 dd fdZd Zd Zedd            Zedd            Zd dZd!dZej        d             Zd"dZd#dZed             Z xZS )$TCPzO
    An established communication based on an underlying Tornado IOStream.
    zdistributed.comm.shardzClassVar[int]max_shard_sizezIOStream | NonestreamTr   
local_addrstr	peer_addrdeserializeboolc                   d| _         t                                          |           || _        || _        || _        t          j        | |                                           | _	        d| j	        _
        i | _        t          j        |           }|                    t          j        t           |                     |                    d           t%          |           |                                  d S )NF)ro   T)re   super__init___local_addr
_peer_addrrk   weakreffinalize_get_finalizer
_finalizeratexit_extrarf   set_close_callback	functoolspartialrg   set_nodelayrS   _read_extra)selfrk   rl   rn   ro   rf   r^   s         rR   rs   zTCP.__init__   s     [111%#!*41D1D1F1FGG!&k$!!)"3K"E"EFFF4   rW   c                    d S N r   s    rR   r   zTCP._read_extra   s    rW   c                :    t          |           }| j        |fd}|S )Nc                    | G|                                  s5t                              d|            |                                  d S d S d S )NzClosing dangling stream in )r3   r=   warningclose)rk   rs     rR   rw   z$TCP._get_finalizer.<locals>.finalize   sQ     !&--//!@Q@@AAA "!!!rW   )reprrk   )r   r   rw   s      rR   rx   zTCP._get_finalizer   s/    JJ K1 	 	 	 	 rW   returnc                    | j         S r   )rt   r   s    rR   local_addresszTCP.local_address   s    rW   c                    | j         S r   )ru   r   s    rR   peer_addresszTCP.peer_address   s
    rW   Nc                  K   | j         }|t                      d}t          j        |          }	 |                    |           d {V }t          j        ||          \  }t          ||           d {V }t          |d          \  }}	|	D ]-}
t          ||
           d {V }|                    |           .	 	 t          || j
        || j                   d {V }n1# t          $ r$ |                                  t          d          w xY w|S # t          $ rB}d | _         d| _        t!          j                    st%          | |           Y d }~d S Y d }~d S d }~wt&          $ r |                                   w xY w)NQT)r~   )ro   deserializersallow_offloadz aborted stream on truncated data)rk   r   structcalcsize
read_bytesunpackread_bytes_rwr   appendr   ro   r   EOFErrorabortr   re   r:   is_finalizingrb   BaseException)r   r   rk   fmtfmt_sizeframes_nosplit_nbytes_binframes_nosplit_nbytesframes_nosplitframesbuffers_nbytesbuffer_nbytesbuffermsges                 rR   readzTCP.read   s,     >!###?3''$	 /5.?.?.I.I(I(I(I(I(I(I%'-}S:S'T'T$"#09N#O#OOOOOOON%2>4%P%P%P"FN!/ & &,V]CCCCCCCCf%%%%&$
J' $ 0"/"&"4	          J J J

%&HIIIJ J3 ! 	5 	5 	5DKDL$&& 5+D!4444444445 5 5 5 5 5 	 	 	 JJLLL	s$   BD ?#C# #.D
F  1E#F messagec           	       K   | j         }|t                      t          || j        ||| j        | j        d| j        | j                   d {V }t          |          \  }}}	 t          ||          D ]\  }}	|rt          |	          }	t          dt          d|t          z   t                              D ]U\  }
}|	|
|         }|j        }|j        t!                      |j                            |           |xj        |z  c_        V|                    d           nf# t           $ r;}d | _         d| _        t+          j                    st/          | |           Y d }~n&d }~wt0          $ r |                                   w xY w|S )N)sender	recipient)r   serializerson_errorcontextframe_split_sizer(   r   rW   T)rk   r   r   r   
local_inforemote_infohandshake_optionsrj   _add_frames_headerzipr!   r   rangeOPENSSL_MAX_CHUNKSIZEr$   _write_bufferr   r   _total_write_indexwritere   r:   r   rb   r   r   )r   r   r   r   rk   r   frames_nbytesframes_nbytes_totaleach_frame_nbytes
each_frameijchunkchunk_nbytesr   s                  rR   r   z	TCP.write  s     >!### ,#/!-  (
 "0
 
 
 
 
 
 
 
 
 6H5O5O22(	14]F1K1K B B-!:$ B "3:!>!>J .-0EE1 ! ! B B1 !+1Q3',|!/7"3"5"55,33E:::11\A111 LL  	5 	5 	5DKDL$&& 5+D!444 		 		 		 JJLLL		 #"s   'B>D& &
F	01E&&#F	c              #    K   | j         d c}| _         d| _        ||                                s	 |                                r|                    d          V  |j                            t
          j                   n# t          $ r Y nw xY w| j	        
                                 |                                 d S # | j	        
                                 |                                 w xY wd S d S )NTrW   )rk   re   r3   writingr   r8   shutdown	SHUT_RDWRrI   ry   detachr   r   rk   s     rR   r   z	TCP.closeC  s      
 #k4fmmoo	>>## , ,,s+++++&&v'78888    &&((( &&((( s*   AB  ?B?  
B
B? BB? ?/C.Nonec                    | j         d c}| _         d| _        |C|                                s1| j                                         |                                 d S d S d S )NT)rk   re   r3   ry   r   r   r   s     rR   r   z	TCP.abortV  s_    "k4fmmooO""$$$LLNNNNN rW   c                    | j         S r   rd   r   s    rR   r3   z
TCP.closed]  s
    |rW   c                    | j         S r   )r{   r   s    rR   
extra_infozTCP.extra_info`  s
    {rW   T)rk   r   rl   rm   rn   rm   ro   rp   )r   rm   r   )Nr   )r   r   )r   rp   )r_   
__module____qualname____doc__r4   utilsparse_bytesr5   r6   rj   __annotations__rs   r   rx   propertyr   r   r   r   r	   	coroutiner   r   r3   r   __classcell__r^   s   @rR   ri   ri      s          %)J$:$:011% %N      !      0  
 
 
       X     X, , , ,\=# =# =# =#~ 	]  ]$         X    rW   ri   rk   r   nr7   r   
memoryviewc                   K   t          |          }t          dt          d|t          z   t                              D ]7\  }}|||         }|                     |           d{V }||j        k    sJ 8|S )zyRead n bytes from stream. Unlike stream.read_bytes, allow for
    very large messages and return a writeable buffer.
    r(   r   N)r   r   r   r   	read_intor$   )rk   r   bufr   r   r   actuals          rR   r   r   e  s       Q--C	a**,ABB  & &1 AaC''........%%%%%JrW   r   list[bytes | memoryview]/tuple[list[bytes | memoryview], list[int], int]c                N   d | D             }t          |          }d}d}t          | |          D ]a\  }}t          |t                    r|j        n|}t          |t
                    s$||t          d|dz            k    r n|}n||ur n||z  }bt          |           }t          j	        dt          |          |z             |z   }t          |          }	|g| } |	g|}||	z  }|dk     s|dk     r/|t          |           z  d	k     rd
                    |           g} |g}| ||fS ) c                ,    g | ]}t          |          S r   )r$   ).0fs     rR   
<listcomp>z&_add_frames_header.<locals>.<listcomp>z  s    ///1VAYY///rW   r   Ni   g?r   i   i   i   rW   )sumr   r[   r   r`   bytesr9   r   r   packr$   lenjoin)
r   r   r   frames_nbytes_nosplitfirst_uncompressed_bufferframenbr   headerheader_nbytess
             rR   r   r   v  s    0////Mm,, (,// $ $	r(
;;F&%(( 	(0(3tR$Y+?+??? E,2))*&88 # ((F[fVnn/DDEENF6NNMvF"3]3M=(U""e##3v;;.66 ((6""#,-="555rW   c                  :    e Zd ZdZ eeej                  Zd ZdS )TLSz(
    A TLS-specific version of TCP.
    c                B   t                               |            | j        j        }|v| j                            |                                |                                           | j        d         \  }}}t          	                    d| j
        |||           d S d S )N)peercertcipherr   z7TLS connection with %r: protocol=%s, cipher=%s, bits=%d)ri   r   rk   r8   r{   updategetpeercertr   r=   r>   ru   )r   rM   r   protobitss        rR   r   zTLS._read_extra  s    {!K(8(8(:(:4;;==QQQ"&+h"7FE4LLI     rW   N)	r_   r   r   r   minr   ri   rj   r   r   rW   rR   r   r     sD          S.0BCCN    rW   r   c                    |                      d          }t          |t          j                  st	          d|          |S )Nssl_contextzpTLS expects a `ssl_context` argument of type ssl.SSLContext (perhaps check your TLS configuration?) Instead got )r6   r[   r\   
SSLContext	TypeError)connection_argsctxs     rR   _expect_tls_contextr    sT    


m
,
,Cc3>** 
$$ $
 
 	

 JrW   c                      e Zd Zd ZdS )RequireEncryptionMixinc                v    | j         s/|                    d          rt          d| j        |z             d S d S )Nrequire_encryptionzJencryption required by Dask configuration, refusing communication from/to )	encryptedr6   RuntimeErrorprefix)r   addressr  s      rR   _check_encryptionz(RequireEncryptionMixin._check_encryption  s]    ~ 	/"5"56J"K"K 	,7;{W7L7LO  	 	 	 	rW   N)r_   r   r   r  r   rW   rR   r  r    s#            rW   r  )typec                 K   	 t          j        | |||t                    S # t           j        $ r }|j        t           j        k    r Y d }~nd }~ww xY wt          j                                        | ||t           j                   d {V S )N)familyr  flagsr  r  )	r8   getaddrinfo_NUMERIC_ONLYgaierrorerrno
EAI_NONAMEasyncioget_running_loopSOCK_STREAM)hostportr  r  r   s        rR   _getaddrinfor    s      
!
 
 
 	
 ?   7f''' (''''
 )++77d6(: 8         s   " AAAc                  (    e Zd ZdZej        fdd
ZdS )_DefaultLoopResolvera  
    Resolver implementation using `asyncio.loop.getaddrinfo`.
    backport from Tornado 6.2+
    https://github.com/tornadoweb/tornado/blob/3de78b7a15ba7134917a18b0755ea24d7f8fde94/tornado/netutil.py#L416-L432

    With an additional optimization based on
    https://github.com/python-trio/trio/blob/4edfd41bd5519a2e626e87f6c6ca9fb32b90a6f4/trio/_socket.py#L125-L192
    (Copyright Contributors to the Trio project.)

    And proposed to cpython in https://github.com/python/cpython/pull/31497/
    r  rm   r  r7   r  socket.AddressFamilyr   list[tuple[int, Any]]c                `   K   d t          |||t          j                   d {V D             S )Nc                "    g | ]\  }}}}}||fS r   r   )r   fam_r  s       rR   r   z0_DefaultLoopResolver.resolve.<locals>.<listcomp>  s6     
 
 
%Q1g 'N
 
 
rW   r  )r  r8   r  )r   r  r  r  s       rR   resolvez_DefaultLoopResolver.resolve  s`      
 
/;d60B0 0 0 * * * * * *
 
 
 	
rW   N)r  rm   r  r7   r  r   r   r!  )r_   r   r   r   r8   	AF_UNSPECr&  r   rW   rR   r  r    sA        
 
 DJCS
 
 
 
 
 
 
rW   r  c                  J    e Zd ZU  e e                      Zded<   ddZdS )BaseTCPConnector)resolverzClassVar[TCPClient]clientTc                  K   |                      ||           t          |          \  }} | j        di |}	 d|v r<| j                            ||t
                     d {V } |j        di | d {V }n! | j        j        ||fdt
          i| d {V }|                                r|j        rt          |j                  n`# t          $ r}t          | |           Y d }~nAd }~wt          $ r}	t          d          |	d }	~	wt          $ r}	t                      |	d }	~	ww xY w| j        t          |          z   }
|                     ||
| j        |z   |          }|S )Nserver_hostname)max_buffer_sizeFr.  zzTLS certificate does not match. Check your security settings. More info at https://distributed.dask.org/en/latest/tls.htmlr   )F)r  r   _get_connect_argsr+  connectMAX_BUFFER_SIZE	start_tlsr3   errorr   rb   r   r   r   r  rV   
comm_class)r   r  ro   r  ipr  kwargsrk   r   errr   rK   s               rR   r0  zBaseTCPConnector.connect  s     w888"7++D''::/::	2 F**#{22o  3            0v/@@@@@@@@@@2t{2   .= AG          }} 66< 6'555  	1 	1 	1'a00000000' 	 	 	&O    	2 	2 	2&((c1	2 &8&@&@@M4;#8+
 
 s0   BC
 

D'C))D'6DD'D""D'Nr   )r_   r   r   r   r  r+  r   r0  r   rW   rR   r)  r)    sR         "+)5I5I5K5K"L"L"LFLLLL( ( ( ( ( (rW   r)  c                       e Zd ZdZeZdZd ZdS )TCPConnectortcp://Fc                    i S r   r   r   r  s     rR   r/  zTCPConnector._get_connect_argsF      	rW   N)r_   r   r   r  ri   r4  r	  r/  r   rW   rR   r9  r9  A  s2        FJI    rW   r9  c                       e Zd ZdZeZdZd ZdS )TLSConnectortls://Tc                h    dt          |          i}|                    d          r|d         |d<   |S )Nssl_optionsr-  )r  r6   )r   r  tls_argss      rR   r/  zTLSConnector._get_connect_argsO  sC    !#6#G#GH011 	M*9:K*LH&'rW   N)r_   r   r   r  r   r4  r	  r/  r   rW   rR   r?  r?  J  s2        FJI    rW   r?  c                  r     e Zd Z	 	 	 	 d fd	Zd Zd Zd Zd Zd	 Ze	d
             Z
e	d             Z xZS )BaseTCPListenerTNr   c                &   t                                                       |                     ||           t          ||          \  | _        | _        || _        || _        || _        || _	         | j
        di || _        d | _        d | _        d S )Nr   )rr   rs   r  r   r5  r  default_hostcomm_handlerro   r   _get_server_argsserver_args
tcp_serverbound_address)	r   r  rH  ro   r   rG  default_portr  r^   s	           rR   rs   zBaseTCPListener.__init__W  s     	w888,WlCC((&*040CC?CC!rW   c                  K   t          ddt          i| j        | _        | j        | j        _        t          t          j        	                    d                    }t          d          D ]y}	 t          j        | j        | j        |          }| j                            |            n<# t           $ r-}| j        dk    s|j        t"          j        k    r |}Y d }~rd }~ww xY w||                                  d S )Nr.  zdistributed.comm.socket-backlog   )r  backlogr   r   )r   r1  rJ  rK  _handle_streamhandle_streamr7   r4   r5   r6   r   r
   bind_socketsr  r5  add_socketsrI   r  
EADDRINUSEget_host_port)r   rP  r%  socketsr   ra   s         rR   startzBaseTCPListener.startl  s     #XXOXtGWXX(,(;%dkoo&GHHIIq 	 	A
 ".Itw   ++G444     9>>QW0@%@%@ Is   /!B,,
C#6#CC#c                T    | j         d c}| _         ||                                 d S d S r   )rK  stop)r   rK  s     rR   rZ  zBaseTCPListener.stop  s6    &*ot#
DO!OO "!rW   c                2    | j         t          d          d S )Nz,invalid operation on non-started TCPListener)rK  
ValueErrorr   s    rR   _check_startedzBaseTCPListener._check_started  s!    ?"KLLL #"rW   c                  K   | j         t          |d d          z   }|                     ||           d {V }|d S t                              d|| j                   | j         t          |          z   }|                     |||| j                  }| j	        |_	        	 | 
                    |           d {V  n,# t          $ r t                              d|           Y d S w xY w|                     |           d {V  d S )Nr(   z!Incoming connection from %r to %rz4Connection from %s closed before handshake completed)r  r   _prepare_streamr=   r>   contact_addressrV   r4  ro   r   on_connectionr   inforH  )r   rk   r  r   rK   s        rR   rQ  zBaseTCPListener._handle_stream  s9     + 172A2; ??++FG<<<<<<<<>F8'4CWXXX&8&@&@@v}gt?OPP!/	$$T********** 	 	 	KKNPWXXXFF	 %%%%%%%%%%%s   B: :%C#"C#c                    |                                   | j        t          | j                  | _        | j        dd         S )z@
        The listening address as a (host, port) tuple.
        Nr(   )r]  rL  r   rK  r   s    rR   rV  zBaseTCPListener.get_host_port  sC     	%!7!H!HD!"1"%%rW   c                H    | j         t          |                                  z   S )z4
        The listening address as a string.
        )r  r   rV  r   s    rR   listen_addresszBaseTCPListener.listen_address  s#    
 {.0B0B0D0DEEErW   c                    |                                  \  }}t          || j                  }| j        t	          ||          z   S )z2
        The contact address as a string.
        )rG  )rV  r   rG  r  r   )r   r  r  s      rR   r`  zBaseTCPListener.contact_address  sF    
 ''))
d#Dt7HIII{.tT::::rW   )TTNr   )r_   r   r   rs   rX  rZ  r]  rQ  rV  r   re  r`  r   r   s   @rR   rE  rE  V  s        
 " " " " " "*  4  
M M M& & &&	& 	& 	& F F XF ; ; X; ; ; ; ;rW   rE  c                  &    e Zd ZdZeZdZd Zd ZdS )TCPListenerr:  Fc                    i S r   r   r<  s     rR   rI  zTCPListener._get_server_args  r=  rW   c                
   K   |S r   r   )r   rk   r  s      rR   r_  zTCPListener._prepare_stream  s      rW   N)	r_   r   r   r  ri   r4  r	  rI  r_  r   rW   rR   rh  rh    sA        FJI      rW   rh  c                  &    e Zd ZdZeZdZd Zd ZdS )TLSListenerr@  Tc                (    t          |          }d|iS )NrB  )r  )r   r  r  s      rR   rI  zTLSListener._get_server_args  s    !/22s##rW   c                   K   	 |                                  d {V  |S # t          $ r>}t                              d| j        |t          |dd           p|           Y d }~d S d }~ww xY w)Nz7Listener on %r: TLS handshake failed with remote %r: %srZ   )wait_for_handshakerI   r=   r   re  getattr)r   rk   r  r   s       rR   r_  zTLSListener._prepare_stream  s      	++--------- M  	 	 	NNI#<..3!	        	s     
A(3A##A(N)	r_   r   r   r  r   r4  r	  rI  r_  r   rW   rR   rl  rl    sA        FJI$ $ $    rW   rl  c                  2    e Zd Zd Zd Zd Zd Zd Zd ZdS )BaseTCPBackendc                *    |                                  S r   )_connector_classr   s    rR   get_connectorzBaseTCPBackend.get_connector  s    $$&&&rW   c                "     | j         |||fi |S r   )_listener_class)r   lochandle_commro   r  s        rR   get_listenerzBaseTCPBackend.get_listener  s!    #t#CkUU_UUUrW   c                ,    t          |          d         S )Nr   r   r   rx  s     rR   get_address_hostzBaseTCPBackend.get_address_host  s    s##A&&rW   c                     t          |          S r   r|  r}  s     rR   get_address_host_portz$BaseTCPBackend.get_address_host_port  s    s###rW   c                `    t          |          \  }}t          t          |          |          S r   )r   r   r    )r   rx  r  r  s       rR   resolve_addresszBaseTCPBackend.resolve_address  s)    $S))
d 4$777rW   c                    t          |          \  }}t          |          }d|v rt          |          }nt          |          }t	          |d           S )N:)r   r    r#   r"   r   )r   rx  r  r  
local_hosts        rR   get_local_address_forz$BaseTCPBackend.get_local_address_for  sO    $S))
d$;;!$JJJ T222rW   N)	r_   r   r   ru  rz  r~  r  r  r  r   rW   rR   rr  rr    sq        ' ' 'V V V
' ' '$ $ $8 8 83 3 3 3 3rW   rr  c                      e Zd ZeZeZdS )
TCPBackendN)r_   r   r   r9  rt  rh  rw  r   rW   rR   r  r            #!OOOrW   r  c                      e Zd ZeZeZdS )
TLSBackendN)r_   r   r   r?  rt  rl  rw  r   rW   rR   r  r    r  rW   r  )rk   r   r   r7   r   r   )r   r   r   r   )_
__future__r   r  ctypesr  r}   loggingr8   r\   r   r:   rv   r   r   typingr   r   tlzr   tornador	   r
   tornado.iostreamr   r   tornado.tcpclientr   tornado.tcpserverr   r4   
dask.utilsr   distributed.comm.addressingr   r   distributed.comm.corer   r   r   r   r   distributed.comm.registryr   distributed.comm.utilsr   r   r   r   distributed.protocol.utilsr   r   r   distributed.systemr   distributed.utilsr    r!   r"   r#   r$   	getLoggerr_   r=   version_infosizeofc_intr   c_size_tr1  rS   rV   rb   rg   ri   r   r   r   r  r  AI_NUMERICHOSTAI_NUMERICSERVr  r  r  Resolverr  r)  r9  r?  rE  rh  rl  rr  r  r  r   rW   rR   <module>r     s   " " " " " "          



  



  2 2 2 2 2 2 2 2                                       8 8 8 8 8 8 8 8 ' ' ' ' ' ' ' ' ' ' ' '  & & & & & & J J J J J J J J              . - - - - -            V U U U U U U U U U + + + + + + T T T T T T T T T T T T T T		8	$	$ g=6=#>#>>!CaG=6=#A#AAAE"8A 8A 8Av
= 
= 
=; ; ;	 	 	E E E E E$ E E EP   "76 76 76 76t    #   ,          %(== 4:3E     0
 
 
 
 
7+ 
 
 
:+ + + + +y"8 + + +\    #   	 	 	 	 	# 	 	 	e; e; e; e; e;l$: e; e; e;P	 	 	 	 	/ 	 	 	    /   03 3 3 3 3W 3 3 3>" " " " " " " "
" " " " " " " " " "rW   