File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/ext/__pycache__/ipaddress.cpython-310.pyc
o
�N�g}* � @ s� d Z dZddlZddlZdZdZdd� ZG dd � d e�ZG d
d� de�Z dd
� Z
d?dd�Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� ZG d%d&� d&�ZdaejG d'd(� d(e��ZejG d)d*� d*e��ZG d+d,� d,�ZG d-d.� d.ee�ZG d/d0� d0e�ZG d1d2� d2ee�ZG d3d4� d4�Zee_ G d5d6� d6�Z!G d7d8� d8e!e�Z"G d9d:� d:e"�Z#G d;d<� d<e!e�Z$G d=d>� d>�Z%e%e"_ dS )@z�A fast, lightweight IPv4/IPv6 manipulation library in Python.
This library is used to create/poke/manipulate IPv4 and IPv6 addresses
and networks.
z1.0� N� � c C sR t jdkr | �� S t| t�rt| �t| �� �kS t| t�r't| �t| �� �kS dS )N)� � F) �sys�version_info�isascii�
isinstance�str�len�encode�bytes�decode��obj� r �F/opt/saltstack/salt/lib/python3.10/site-packages/salt/ext/ipaddress.py� _is_ascii! s
r c @ � e Zd ZdZdS )�AddressValueErrorz%A Value Error related to the address.N��__name__�
__module__�__qualname__�__doc__r r r r r + � r c @ r )�NetmaskValueErrorz%A Value Error related to the netmask.Nr r r r r r / r r c C �P zt | �W S ttfy Y nw zt| �W S ttfy! Y nw td| ��)a� Take an IP string/int and return an object of the correct type.
Args:
address: A string or integer, the IP address. Either IPv4 or
IPv6 addresses may be supplied; integers less than 2**32 will
be considered to be IPv4 by default.
Returns:
An IPv4Address or IPv6Address object.
Raises:
ValueError: if the *address* passed isn't either a v4 or a v6
address
z0%r does not appear to be an IPv4 or IPv6 address)�IPv4Addressr r �IPv6Address�
ValueError��addressr r r �
ip_address3 s
�
��r# Tc C sT zt | |�W S ttfy Y nw zt| |�W S ttfy# Y nw td| ��)a� Take an IP string/int and return an object of the correct type.
Args:
address: A string or integer, the IP network. Either IPv4 or
IPv6 networks may be supplied; integers less than 2**32 will
be considered to be IPv4 by default.
Returns:
An IPv4Network or IPv6Network object.
Raises:
ValueError: if the string passed isn't either a v4 or a v6
address. Or if the network has host bits set.
z0%r does not appear to be an IPv4 or IPv6 network)�IPv4Networkr r �IPv6Networkr )r"