§
    kÍâh   ã                   ó>   — d dl mZ d dlZd dlZ G d„ de¦  «        ZdS )é    )Ú	ContainerNc                   ó>   — e Zd ZdZdgZdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
S )ÚInternalIPSa  
    InternalIPS allows to specify CIDRs for INTERNAL_IPS.

    It takes an iterable of ip addresses or ranges.

    Inspiration taken from netaddr.IPSet, please use it if you can since
    it support more advanced features like optimizing ranges and lookups.
    Ú_cidrsFc                 ó°   — g | _         |D ].}| j                              t          j        |¦  «        ¦  «         Œ/|rt	          | j         ¦  «        | _         dS dS )zí
        Constructor.

        :param iterable: (optional) an iterable containing IP addresses and
            subnets.

        :param sort_by_size: sorts internal list according to size of ip
            ranges, largest first.
        N)r   ÚappendÚ	ipaddressÚ
ip_networkÚsorted)ÚselfÚiterableÚsort_by_sizeÚaddresss       ú[/var/www/histauto/venv/lib/python3.11/site-packages/django_extensions/utils/internal_ips.pyÚ__init__zInternalIPS.__init__   se   € ð ˆŒØð 	>ð 	>ˆGØŒK×Ò�yÔ3°GÑ<Ô<Ñ=Ô=Ð=Ð=àð 	.Ý  ¤Ñ-Ô-ˆDŒKˆKˆKð	.ð 	.ó    c                 óP   — t          j        |¦  «        }| j        D ]	}||v r dS Œ
dS )z�
        :param ip: An IP address or subnet.

        :return: ``True`` if IP address or subnet is a member of this InternalIPS set.
        TF)r	   Ú
ip_addressr   )r   r   Úcidrs      r   Ú__contains__zInternalIPS.__contains__$   s?   € õ Ô& wÑ/Ô/ˆØ”Kð 	ð 	ˆDØ˜$ˆˆØ�t�tð àˆur   c                 ó    — t          d¦  «        ‚)z@
        Raises ``TypeError`` if this method is called.
        z&InternalIPS containers are unhashable!)Ú	TypeError©r   s    r   Ú__hash__zInternalIPS.__hash__0   s   € õ Ð@ÑAÔAÐAr   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )zC
        :return: the cardinality of this InternalIPS set.
        c              3   ó$   K  — | ]}|j         V — Œd S )N)Únum_addresses)Ú.0r   s     r   ú	<genexpr>z&InternalIPS.__len__.<locals>.<genexpr>:   s%   è è € Ð>Ð>¨$�4Ô%Ð>Ð>Ð>Ð>Ð>Ð>r   )Úsumr   r   s    r   Ú__len__zInternalIPS.__len__6   s#   € õ Ð>Ð>°$´+Ð>Ñ>Ô>Ñ>Ô>Ð>r   c                 ó(   — t          j        | j        Ž S )zP
        :return: an iterator over the IP addresses within this IP set.
        )Ú	itertoolsÚchainr   r   s    r   Ú__iter__zInternalIPS.__iter__<   s   € õ Œ ¤Ð,Ð,r   c                 ó*   — t          | j        ¦  «        S )zU
        :return: an iterator over individual IP subnets within this IP set.
        )r   r   r   s    r   Ú
iter_cidrszInternalIPS.iter_cidrsB   s   € õ �d”kÑ"Ô"Ð"r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r   r!   r%   r'   © r   r   r   r      s‰   € € € € € ðð ð �
€Ið.ð .ð .ð .ð"
ð 
ð 
ðBð Bð Bð?ð ?ð ?ð-ð -ð -ð#ð #ð #ð #ð #r   r   )Úcollections.abcr   r	   r#   r   r-   r   r   ú<module>r/      sc   ðà %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ø Ð Ð Ð ð?#ð ?#ð ?#ð ?#ð ?#�)ñ ?#ô ?#ð ?#ð ?#ð ?#r   