✏️ 正在编辑: subnet_splitter.cpython-36.pyc
路径:
/usr/lib/python3.6/site-packages/netaddr/contrib/__pycache__/subnet_splitter.cpython-36.pyc
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
3 ��]� � @ s( d dl mZmZmZ G dd� de�ZdS )� )� IPNetwork�cidr_exclude� cidr_mergec @ s2 e Zd ZdZdd� 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. c C s t t|�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 �%/usr/lib/python3.6/subnet_splitter.py�__init__ s zSubnetSplitter.__init__Nc C sZ xT| j � D ]H}t|j||d��}|s&q | j|� | jjtt|t|�d ���| _|S W g S )z;Extract 1 or more subnets of size specified by CIDR prefix.)�countr ) �available_subnets�listZsubnet� remove_subnetr �unionr r r )r �prefixr ZcidrZsubnetsr r r �extract_subnet s zSubnetSplitter.extract_subnetc C s t | jdd� dd�S )z2Returns a list of the currently available subnets.c S s | j S )N)Z prefixlen)�xr r r �<lambda>* s z2SubnetSplitter.available_subnets.<locals>.<lambda>T)�key�reverse)�sortedr )r r r r r ( s z SubnetSplitter.available_subnetsc C s | j j|� dS )z:Remove a specified IPNetwork from available address space.N)r �remove)r Z ip_networkr r r r , s zSubnetSplitter.remove_subnet)N)�__name__� __module__�__qualname__�__doc__r r r r r r r r r s r N)Z netaddr.ipr r r �objectr r r r r �<module> s
💾 保存文件
← 返回文件管理器