????
| Current Path : /lib/python3.9/site-packages/netaddr/ip/__pycache__/ |
| Current File : //lib/python3.9/site-packages/netaddr/ip/__pycache__/glob.cpython-39.opt-1.pyc |
a
��g�( � @ s| d Z ddlmZmZ ddlmZmZmZmZ ddl m
Z
dd� Zdd� Zd d
� Z
dd� Zd
d� Zdd� ZG dd� de�ZdS )zb
Routines and classes for supporting and expressing IP address ranges using a
glob style syntax.
� )�AddrFormatError�AddrConversionError)�IPRange� IPAddress� IPNetwork�iprange_to_cidrs)�_is_strc C sJ t | �sdS d}d}| �d�}t|�dkr.dS |D �]}d|v r�|rJ dS d}|rX dS zdd� |�d�D �\}}W n ty� Y dS 0 ||kr� dS d| kr�d ks�n dS d
| kr�dks�n dS q2|dkr�d}q2|du r� dS |du �r dS z*dt|� k�rdk�s(n W dS W q2 t�yB Y dS 0 q2dS )
z�
:param ipglob: An IP address range in a glob-style format.
:return: ``True`` if IP range glob is valid, ``False`` otherwise.
F�.� �-Tc S s g | ]}t |��qS � ��int)�.0�ir r �3/usr/lib/python3.9/site-packages/netaddr/ip/glob.py�
<listcomp>. � zvalid_glob.<locals>.<listcomp>r � � � �*)r �split�len�
ValueErrorr )�ipglob�seen_hyphen�
seen_asterisk�octets�octetZoctet1Zoctet2r r r �
valid_glob sH
r c C s� t | �std| f ��g }g }| �d�D ]f}d|v r\|�d�}|�|d � |�|d � q(|dkrz|�d� |�d� q(|�|� |�|� q(td�|��td�|��fS ) z�
A function that accepts a glob-style IP range and returns the component
lower and upper bound IP address.
:param ipglob: an IP address range in a glob-style format.
:return: a tuple contain lower and upper bound IP objects.
�#not a recognised IP glob range: %r!r r r r r �0�255)r r r �appendr �join�r Zstart_tokensZ
end_tokensr �tokensr r r �glob_to_iptupleF s
r( c C s� t | �std| f ��g }g }| �d�D ]f}d|v r\|�d�}|�|d � |�|d � q(|dkrz|�d� |�d� q(|�|� |�|� q(td�|�d�|��S ) z�
A function that accepts a glob-style IP range and returns the equivalent
IP range.
:param ipglob: an IP address range in a glob-style format.
:return: an IPRange object.
r! r r r r r r"