HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohappyeyeballs/__pycache__/utils.cpython-310.pyc
o

���g��
@s,dZddlZddlZddlmZmZmZmZmZddl	m
Z
deeeeeeefeeeefeeeffdeee
fdd	�Z
	dd
ee
deeddfdd
�Zdeeeefeeeeeffdeeejefeejeeefffdd�Zd
ee
deeeefeeeeeffddfdd�ZdS)z'Utility functions for aiohappyeyeballs.�N)�Dict�List�Optional�Tuple�Union�)�AddrInfoType�addr�returncCs�|durdS|d}|d}d|v}|r6d}d}t|�}|dkr$|d}|dkr,|d}||||f}tj}n||f}tj}|tjtjd|fgS)	z7Convert an address tuple to a list of addr_info tuples.Nrr�:����)�len�socket�AF_INET6�AF_INET�SOCK_STREAM�IPPROTO_TCP)r	�host�port�is_ipv6�flowinfo�scopeid�addr_len�family�r�A/usr/local/lib/python3.10/dist-packages/aiohappyeyeballs/utils.py�addr_to_addr_infos
s$r�
addr_infos�
interleavecCsti}|durd}g}|D]!}|d}||vrd||<|||kr%|�|�||d7<q|D]}|�|�q0dS)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.
    Nrr)�append�remove)r r!�seen�	to_remove�	addr_inforrrr�pop_addr_infos_interleave%s	
�r'cCst�|d�g|dd��RS)z+Convert an address tuple to an IPv4Address.rrN)�	ipaddress�
ip_address)r	rrr�_addr_tuple_to_ip_address=sr*cCs�g}|D]
}|d|kr|�|�q|r |D]}|�|�qdSt|�}|D]}|t|d�kr5|�|�q&|rD|D]}|�|�q:dStd|�d���)z�
    Remove an address from the list of addr_infos.

    The addr value is typically the return value of
    sock.getpeername().
    ���NzAddress z not found in addr_infos)r"r#r*�
ValueError)r r	�bad_addrs_infosr&�
bad_addr_info�
match_addrrrr�remove_addr_infosFs&

�
�r0)N)�__doc__r(r�typingrrrrr�typesr�str�intrr'�IPv4Address�IPv6Addressr*r0rrrr�<module>sD*��

����
���
�	���