+
    ~jj                     Z    R t ^ RIt^ RIt^RIHt R R ltRR R lltR R ltR	 R
 ltR# )z'Utility functions for aiohappyeyeballs.N)AddrInfoTypec                   V ^8  d   QhR\         \        \        \        \        3,          \         \        \        \        3,          ,          \         \        \        3,          ,          R,          R\        \        ,          R,          /# )   addrNreturn)tuplestrintlistr   )formats   "k/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/aiohappyeyeballs/utils.py__annotate__r   	   sZ     H H
S#s"
#eCcM&:
:U38_
Lt
SH	,$H    c                B   V f   R# V ^ ,          pV ^,          pRV9   pV'       dE   ^ p^ p\        V 4      pV^8  d
   V ^,          pV^8  d
   V ^,          pWWE3p \        P                  pMW3p \        P                  pV\        P                  \        P
                  RV 3.# )z7Convert an address tuple to a list of addr_info tuples.N: )lensocketAF_INET6AF_INETSOCK_STREAMIPPROTO_TCP)r   hostportis_ipv6flowinfoscopeidaddr_lenfamilys   &       r   addr_to_addr_infosr   	   s     |7D7DTkGt9q=1gGq=AwHH.|V''););RFGGr   c                X    V ^8  d   QhR\         \        ,          R\        R,          RR/# )r   
addr_infos
interleaveNr   )r
   r   r	   )r   s   "r   r   r   "   s-     % %\"%03d
%	%r   c                    / pVf   ^p. pV  FH  pV^ ,          pWR9  d   ^ W%&   W%,          V8  d   VP                  V4       W%;;,          ^,          uu&   KJ  	  V F  pV P                  V4       K  	  R# )z
Pop addr_info from the list of addr_infos by family up to interleave times.

The interleave parameter is used to know how many addr_infos for
each family should be popped of the top of the list.
N)appendremove)r!   r"   seen	to_remove	addr_infor   s   &&    r   pop_addr_infos_interleaver)   "   sw     D
$&I	1DL<*$Y'   	)$ r   c          	      4   V ^8  d   QhR\         \        \        3,          \         \        \        \        \        3,          ,          R\         \        P                  \        3,          \         \        P
                  \        \        \        3,          ,          /# )r   r   r   )r   r   r	   	ipaddressIPv4AddressIPv6Address)r   s   "r   r   r   :   sa     6 6
S/E#sC"45
56
9  #%&y/D/Dc3PS/S)TT6r   c                R    \         P                  ! V ^ ,          4      .V R,          O5# )z+Convert an address tuple to an IPv4Address.:   NN)r+   
ip_address)r   s   &r   _addr_tuple_to_ip_addressr1   :   s%       a)5DH55r   c          	          V ^8  d   QhR\         \        ,          R\        \        \        3,          \        \        \        \        \        3,          ,          RR/# )r   r!   r   r   N)r
   r   r   r   r	   )r   s   "r   r   r   A   sK     @ @\"@
S/E#sC"45
5@ 
@r   c                   . pV  F$  pVR,          V8X  g   K  VP                  V4       K&  	  V'       d   V F  pV P                  V4       K  	  R# \        V4      pV  F-  pV\        VR,          4      8X  g   K  VP                  V4       K/  	  V'       d   V F  pV P                  V4       K  	  R# \        RV R24      h)zu
Remove an address from the list of addr_infos.

The addr value is typically the return value of
sock.getpeername().
NzAddress z not found in addr_infos)r$   r%   r1   
ValueError)r!   r   bad_addrs_infosr(   bad_addr_info
match_addrs   &&    r   remove_addr_infosr9   A   s     +-O	R=D ""9-   ,Mm, -*40J	29R=AA""9-   ,Mm, -
xv%=>
??r   )N)	__doc__r+   r   typesr   r   r)   r1   r9    r   r   <module>r=      s'    -   H2%06@r   