File: //lib/python3/dist-packages/__pycache__/validate.cpython-310.pyc
o
    	`�f��  �                   @   s�  d Z dZdZddlZddlZddlmZ ejdk reZne	Zdd� Z
eZe�
d	ejejB �Ze�
d
ejejB �ZdZde Zze W n
 eyO   d
d� ZY nw dd� Zdd� ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd � d e�Z G d!d"� d"e�Z!G d#d$� d$e�Z"G d%d&� d&e�Z#G d'd(� d(e$�Z%dWd*d+�Z&dXd,d-�Z'dXd.d/�Z(d0d0d0d0d0d)d)d)d)d)d1�
Z)d2d3� Z*d4d5� Z+dXd6d7�Z,dXd8d9�Z-dXd:d;�Z.dXd<d=�Z/dXd>d?�Z0dXd@dA�Z1dXdBdC�Z2dXdDdE�Z3dXdFdG�Z4e'e(e+e.e*dH�Z5dIdJ� Z6dKdL� Z7dMdN� Z8dOdP� Z9dQdR� Z:e;dSk�rVddlZddl<Z<ej=�>dS�Z?e?j@�A� ZBeB�CdTe%� i� e<jDe?eBe<jEe<jFB dU�\ZGZHeG�rXJ dV�IeGeH���dS dS )Ya  
    The Validator object is used to check that supplied values 
    conform to a specification.
    
    The value can be supplied as a string - e.g. from a config file.
    In this case the check will also *convert* the value to
    the required type. This allows you to add validation
    as a transparent layer to access data stored as strings.
    The validation checks that the data is correct *and*
    converts it to the expected type.
    
    Some standard checks are provided for basic data types.
    Additional checks are easy to write. They can be
    provided when the ``Validator`` is instantiated or
    added afterwards.
    
    The standard functions work with the following basic data types :
    
    * integers
    * floats
    * booleans
    * strings
    * ip_addr
    
    plus lists of these datatypes
    
    Adding additional checks is done through coding simple functions.
    
    The full set of standard checks are : 
    
    * 'integer': matches integer values (including negative)
                 Takes optional 'min' and 'max' arguments : ::
    
                   integer()
                   integer(3, 9)  # any value from 3 to 9
                   integer(min=0) # any positive value
                   integer(max=9)
    
    * 'float': matches float values
               Has the same parameters as the integer check.
    
    * 'boolean': matches boolean values - ``True`` or ``False``
                 Acceptable string values for True are :
                   true, on, yes, 1
                 Acceptable string values for False are :
                   false, off, no, 0
    
                 Any other value raises an error.
    
    * 'ip_addr': matches an Internet Protocol address, v.4, represented
                 by a dotted-quad string, i.e. '1.2.3.4'.
    
    * 'string': matches any string.
                Takes optional keyword args 'min' and 'max'
                to specify min and max lengths of the string.
    
    * 'list': matches any list.
              Takes optional keyword args 'min', and 'max' to specify min and
              max sizes of the list. (Always returns a list.)
    
    * 'tuple': matches any tuple.
              Takes optional keyword args 'min', and 'max' to specify min and
              max sizes of the tuple. (Always returns a tuple.)
    
    * 'int_list': Matches a list of integers.
                  Takes the same arguments as list.
    
    * 'float_list': Matches a list of floats.
                    Takes the same arguments as list.
    
    * 'bool_list': Matches a list of boolean values.
                   Takes the same arguments as list.
    
    * 'ip_addr_list': Matches a list of IP addresses.
                     Takes the same arguments as list.
    
    * 'string_list': Matches a list of strings.
                     Takes the same arguments as list.
    
    * 'mixed_list': Matches a list with different types in 
                    specific positions. List size must match
                    the number of arguments.
    
                    Each position can be one of :
                    'integer', 'float', 'ip_addr', 'string', 'boolean'
    
                    So to specify a list with two strings followed
                    by two integers, you write the check as : ::
    
                      mixed_list('string', 'string', 'integer', 'integer')
    
    * 'pass': This check matches everything ! It never fails
              and the value is unchanged.
    
              It is also the default if no check is specified.
    
    * 'option': This check matches any from a list of options.
                You specify this check with : ::
    
                  option('option 1', 'option 2', 'option 3')
    
    You can supply a default value (returned if no value is supplied)
    using the default keyword argument.
    
    You specify a list argument for default using a list constructor syntax in
    the check : ::
    
        checkname(arg1, arg2, default=list('val 1', 'val 2', 'val 3'))
    
    A badly formatted set of arguments will raise a ``VdtParamError``.
z1.0.1)�__version__�dottedQuadToNum�numToDottedQuad�
ValidateError�VdtUnknownCheckError�
VdtParamError�VdtTypeError�
VdtValueError�VdtValueTooSmallError�VdtValueTooBigError�VdtValueTooShortError�VdtValueTooLongError�VdtMissingValue�	Validator�
is_integer�is_float�
is_boolean�is_list�is_tuple�
is_ip_addr�	is_string�is_int_list�is_bool_list�
is_float_list�is_string_list�is_ip_addr_list�
is_mixed_list�	is_option�
__docformat__�    N)�pprint)�   c                 C   s   | S �N� )�xr"