o
    4@Hh                     @   s2   d dl mZ d dlmZmZ dedefddZdS )   )socket)SocketListenerSocketStreamsocket_listenerreturnc                    s   | j j}| j  }|tjtjfv r.t|}|d dkr d|d< |d dkr*d|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   sockaddrsock r   U/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/trio/testing/_network.pyopen_stream_to_socket_listener   s   
r   N) r   r
   _highlevel_socketr   r   r   r   r   r   r   <module>   s    