U
    g                     @   s0   d dl mZ d dlmZmZ eedddZdS )   )socket)SocketListenerSocketStream)socket_listenerreturnc                    s~   | j j}| j  }|tjtjfkrZt|}|d dkr>d|d< |d dkrRd|d< t|}tj |d}||I dH  t	|S )a  Connect to the given :class:`~trio.SocketListener`.

    This is particularly useful in tests when you want to let a server pick
    its own port, and then connect to it::

        listeners = await trio.open_tcp_listeners(0)
        client = await trio.testing.open_stream_to_socket_listener(listeners[0])

    Args:
      socket_listener (~trio.SocketListener): The
          :class:`~trio.SocketListener` to connect to.

    Returns:
      SocketStream: a stream connected to the given listener.

        z0.0.0.0z	127.0.0.1z::z::1)familyN)
r   r   getsocknametsocketAF_INETAF_INET6listtupleconnectr   )r   r   Zsockaddrsock r   9/tmp/pip-unpacked-wheel-ks04xdmi/trio/testing/_network.pyopen_stream_to_socket_listener   s    
r   N) r   r
   Z_highlevel_socketr   r   r   r   r   r   r   <module>   s   