File: //proc/self/root/opt/alt/python311/lib64/python3.11/__pycache__/ipaddress.cpython-311.opt-1.pyc
�
    !A?h> �                   �  � d Z dZddlZdZdZ G d� de�  �        Z G d� d	e�  �        Zd
� Zd3d�Z	d
� Z
d� Zd� Zd� Z
d� Zd� Zd� Zd� Zd� Zd� Z G d� d�  �        Zdaej         G d� de�  �        �   �         Zej         G d� de�  �        �   �         Z G d� d�  �        Zee_         G d� d �  �        Z G d!� d"ee�  �        Z G d#� d$e�  �        Z G d%� d&ee�  �        Z G d'� d(�  �        Zee_        ee_         G d)� d*�  �        Z  G d+� d,e e�  �        Z! G d-� d.e!�  �        Z" G d/� d0e e�  �        Z# G d1� d2�  �        Z$e$e!_        e$e#_        dS )4z�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                   �   � e Zd ZdZdS )�AddressValueErrorz%A Value Error related to the address.N��__name__�
__module__�__qualname__�__doc__� �    �0/opt/alt/python311/lib64/python3.11/ipaddress.pyr   r      �   � � � � � �/�/�/�/r
   r   c                   �   � e Zd ZdZdS )�NetmaskValueErrorz%A Value Error related to the netmask.Nr   r   r
   r   r   r      r   r
   r   c                 ��   � 	 t          | �  �        S # t          t          f$ r Y nw xY w	 t          | �  �        S # t          t          f$ r Y nw xY wt	          | �d��  �        �)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
    z. does not appear to be an IPv4 or IPv6 address)�IPv4Addressr   r   �IPv6Address�
ValueError��addresss    r   �
ip_addressr      s�   � � 
��7�#�#�#���0�1� 
� 
� 
���
����
��7�#�#�#���0�1� 
� 
� 
���
���� ��Q�Q�Q�
R�
R�R�   � �%�%�8 �A�ATc                 ��   � 	 t          | |�  �        S # t          t          f$ r Y nw xY w	 t          | |�  �        S # t          t          f$ r Y nw xY wt	          | �d��  �        �)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.
    z. does not appear to be an IPv4 or IPv6 network)�IPv4Networkr   r   �IPv6Networkr   )r   �stricts     r   �
ip_networkr   9   s�   � � 
��7�F�+�+�+���0�1� 
� 
� 
���
����
��7�F�+�+�+���0�1� 
� 
� 
���
���� ��Q�Q�Q�
R�
R�Rs   � �&�&�: �A�
Ac                 ��   � 	 t          | �  �        S # t          t          f$ r Y nw xY w	 t          | �  �        S # t          t          f$ r Y nw xY wt	          | �d��  �        �)ag  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 IPv4Interface or IPv6Interface object.
    Raises:
        ValueError: if the string passed isn't either a v4 or a v6
          address.
    Notes:
        The IPv?Interface classes describe an Address on a particular
        Network, so they're basically a combination of both the Address
        and Network classes.
    z0 does not appear to be an IPv4 or IPv6 interface)�
IPv4Interfacer   r   �
IPv6Interfacer   r   s    r   �ip_interfacer"