+
    4i                     0    ^ RI HtHtHt  ! R R]4      tR# )    )	IPNetworkcidr_exclude
cidr_mergec                   @   a  ] tR t^	t o RtR tRR ltR tR tRt	V t
R# )	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.
c                :    \        \        V4      .4      V n        R# )z|
Constructor.

:param base_cidr: an IPv4 or IPv6 address with a CIDR prefix.
    (see IPNetwork.__init__ for full details).
N)setr   _subnets)self	base_cidrs   &&A/usr/lib/python3/dist-packages/netaddr/contrib/subnet_splitter.py__init__SubnetSplitter.__init__   s     Yy123    Nc                *   V P                  4        F~  p\        VP                  WR7      4      pV'       g   K(  V P                  V4       V P                  P                  \        \        V\        V4      ^ ,          4      4      4      V n        Vu # 	  . # )z;Extract 1 or more subnets of size specified by CIDR prefix.)count)	available_subnetslistsubnetremove_subnetr
   unionr	   r   r   )r   prefixr   cidrsubnetss   &&&  r   extract_subnetSubnetSplitter.extract_subnet   sx    **,D4;;v;;<Gt$ MM//LzRYGZ[\G]4^0_`DMN - 	r   c                4    \        V P                  R RR7      # )z2Returns a list of the currently available subnets.c                     V P                   # N)	prefixlen)xs   &r   <lambda>2SubnetSplitter.available_subnets.<locals>.<lambda>'   s    1;;r   T)keyreverse)sortedr
   )r   s   &r   r    SubnetSplitter.available_subnets%   s    dmm)>MMr   c                <    V P                   P                  V4       R# )z:Remove a specified IPNetwork from available address space.N)r
   remove)r   
ip_networks   &&r   r   SubnetSplitter.remove_subnet)   s    Z(r   )r
   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r   	   s$     4	N) )r   r   N)
netaddr.ipr   r   r   objectr    r   r   <module>r7      s    ; :")V ")r   