
    kh                     >    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3G<<==== 	. --DKKK	. 	.    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$tt 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     dk"""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   