HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/netaddr/contrib/__pycache__/subnet_splitter.cpython-39.opt-1.pyc
a

��g��@s(ddlmZmZmZGdd�de�ZdS)�)�	IPNetwork�cidr_exclude�
cidr_mergec@s2eZdZdZdd�Zddd�Zdd�Zd	d
�ZdS)�SubnetSplitterz�
    A handy utility class that takes a single (large) subnet and allows
    smaller subnet within its range to be extracted by CIDR prefix. Any
    leaving address space is available for subsequent extractions until
    all space is exhausted.
    cCstt|�g�|_dS)z�
        Constructor.

        :param base_cidr: an IPv4 or IPv6 address with a CIDR prefix.
            (see IPNetwork.__init__ for full details).
        N)�setr�_subnets)�selfZ	base_cidr�r	�C/usr/lib/python3.9/site-packages/netaddr/contrib/subnet_splitter.py�__init__szSubnetSplitter.__init__NcCsZ|��D]L}t|j||d��}|s$q|�|�|j�tt|t|�d���|_|SgS)z;Extract 1 or more subnets of size specified by CIDR prefix.)�countr)	�available_subnets�listZsubnet�
remove_subnetr�unionrrr)r�prefixrZcidr�subnetsr	r	r
�extract_subnets
��zSubnetSplitter.extract_subnetcCst|jdd�dd�S)z2Returns a list of the currently available subnets.cSs|jS)N)�	prefixlen)�xr	r	r
�<lambda>*�z2SubnetSplitter.available_subnets.<locals>.<lambda>T)�key�reverse)�sortedr)rr	r	r
r
(sz SubnetSplitter.available_subnetscCs|j�|�dS)z:Remove a specified IPNetwork from available address space.N)r�remove)r�
ip_networkr	r	r
r,szSubnetSplitter.remove_subnet)N)�__name__�
__module__�__qualname__�__doc__rrr
rr	r	r	r
r	s
	
rN)Z
netaddr.iprrr�objectrr	r	r	r
�<module>s