3
g                 @   s0   d dl mZ d dlZd dlZG dd deZdS )    )	ContainerNc               @   sH   e Zd ZdZdgZdddZdd Zdd	 Zd
d Zdd Z	d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             C   s:   g | _ x|D ]}| j jtj| qW |r6t| j | _ 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iterableZsort_by_sizeaddress r   b/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django_extensions/utils/internal_ips.py__init__   s
    

zInternalIPS.__init__c             C   s*   t j|}x| jD ]}||krdS qW 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   cidrr   r   r   __contains__$   s
    
zInternalIPS.__contains__c             C   s   t ddS )z@
        Raises ``TypeError`` if this method is called.
        z&InternalIPS containers are unhashable!N)	TypeError)r	   r   r   r   __hash__0   s    zInternalIPS.__hash__c             C   s   t dd | jD S )zC
        :return: the cardinality of this InternalIPS set.
        c             s   s   | ]}|j V  qd S )N)num_addresses).0r   r   r   r   	<genexpr>:   s    z&InternalIPS.__len__.<locals>.<genexpr>)sumr   )r	   r   r   r   __len__6   s    zInternalIPS.__len__c             C   s   t j| j S )zP
        :return: an iterator over the IP addresses within this IP set.
        )	itertoolschainr   )r	   r   r   r   __iter__<   s    zInternalIPS.__iter__c             C   s
   t | jS )zU
        :return: an iterator over individual IP subnets within this IP set.
        )r   r   )r	   r   r   r   
iter_cidrsB   s    zInternalIPS.iter_cidrsN)F)__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r   r   r   r      s   
r   )collections.abcr   r   r   r   r   r   r   r   <module>   s   