HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //proc/722141/root/lib/python3.6/site-packages/botocore/__pycache__/validate.cpython-36.pyc
3

�T_�,�@s�dZddlmZddlZddlZddlmZddlmZddlmZddl	m
Z
dd	�Zd
d�Zdd
�Z
Gdd�de�ZGdd�de�ZGdd�de�ZdS)aQUser input parameter validation.

This module handles user input parameter validation
against a provided input model.

Note that the objects in this module do *not* mutate any
arguments.  No type version happens here.  It is up to another
layer to properly convert arguments to any required types.

Validation Errors
-----------------


�)�sixN)�datetime)�parse_to_aware_datetime)�is_json_value_header)�ParamValidationErrorcCs,t�}|j||�}|j�r(t|j�d��dS)avValidates input parameters against a schema.

    This is a convenience function that validates parameters against a schema.
    You can also instantiate and use the ParamValidator class directly if you
    want more control.

    If there are any validation errors then a ParamValidationError
    will be raised.  If there are no validation errors than no exception
    is raised and a value of None is returned.

    :param params: The user provided input parameters.

    :type shape: botocore.model.Shape
    :param shape: The schema which the input parameters should
        adhere to.

    :raise: ParamValidationError

    )�reportN)�ParamValidator�validate�
has_errorsr�generate_report)�params�shapeZ	validatorr�r�/usr/lib/python3.6/validate.py�validate_parameterssrcs�fdd�}|S)Ncs��fdd�}�fdd��|S)Ncs �|||�r�|||||�SdS)Nr)�self�paramr
�errors�name)�_type_check�funcrr�_on_passes_type_check6szKtype_check.<locals>._create_type_check_guard.<locals>._on_passes_type_checkcs2t|��s.dd��D�}|j|d||d�dSdS)NcSsg|]}tj|��qSr)r�	text_type)�.0�trrr�
<listcomp><szUtype_check.<locals>._create_type_check_guard.<locals>._type_check.<locals>.<listcomp>zinvalid type)r�valid_typesFT)�
isinstancer)rrr�valid_type_names)rrrr:s

zAtype_check.<locals>._create_type_check_guard.<locals>._type_checkr)rr)r)rrr�_create_type_check_guard5sz,type_check.<locals>._create_type_check_guardr)rrr)rr�
type_check4sr cCszd}td�}td�}d|jkr6|jd}||kr\d}n&t|d�r\|jjd�r\d}||kr\d}|rv|j|||||gd	�dS)
NFz-inf�inf�minT�
serializationZ	hostLabel�)r�valid_range)�float�metadata�hasattrr#�getr)r�valuer
�
error_typerZfailed�min_allowed�max_allowedrrr�range_checkFs



r.c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ValidationErrorscCs
g|_dS)N)�_errors)rrrr�__init__ZszValidationErrors.__init__cCs|jr
dSdS)NTF)r0)rrrrr
]szValidationErrors.has_errorscCs.g}x|jD]}|j|j|��qWdj|�S)N�
)r0�append�
_format_error�join)rZerror_messages�errorrrrrbsz ValidationErrors.generate_reportcCs|\}}}|j|�}|dkr,d||dfS|dkrPd||ddj|d�fS|d	kr�d
||dtt|d��dj|d�fS|d
kr�|dd}|dd}d||d||fS|dkr�|dd}|dd}d||d||fS|dk�rd||dfSdS)Nzmissing required fieldz&Missing required parameter in %s: "%s"�
required_namez
unknown fieldz1Unknown parameter in %s: "%s", must be one of: %s�
unknown_paramz, �valid_nameszinvalid typezCInvalid type for parameter %s, value: %s, type: %s, valid types: %srrz
invalid ranger%rr$z=Invalid range for parameter %s, value: %s, valid range: %s-%szinvalid lengthz>Invalid length for parameter %s, value: %s, valid range: %s-%szunable to encode to jsonz2Invalid parameter %s must be json serializable: %s�
type_error)�	_get_namer5�str�type)rr6r+rZ
additionalr,r-rrrr4hs:




zValidationErrors._format_errorcCs&|sdS|jd�r|dd�S|SdS)N�input�.r$)�
startswith)rrrrrr;�s

zValidationErrors._get_namecKs|jj|||f�dS)N)r0r3)rr�reason�kwargsrrrr�szValidationErrors.reportN)	�__name__�
__module__�__qualname__r1r
rr4r;rrrrrr/Ysr/c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zee	fd
�dd��Z
eejd
�d
d��Z
eeefd
�dd��Zee	fd
�dd��Zeejd
�dd��Zdd�Zeefd
�dd��Zeeejfejd
�dd��ZeZeejd
�dd��Zdd�Zdd �Zd!S)"rz+Validates parameters against a shape model.cCst�}|j|||dd�|S)a�Validate parameters against a shape model.

        This method will validate the parameters against a provided shape model.
        All errors will be collected before returning to the caller.  This means
        that this method will not stop at the first error, it will return all
        possible errors.

        :param params: User provided dict of parameters
        :param shape: A shape model describing the expected input.

        :return: A list of errors.

        �)r)r/�	_validate)rrr
rrrrr	�szParamValidator.validatecCst|�r|jSdS)N)r�_validate_jsonvalue_string)rr
rrr�_check_special_validation_cases�sz.ParamValidator._check_special_validation_casescCs<|j|�}|r|||||�nt|d|j�||||�dS)Nz_validate_%s)rI�getattrZ	type_name)rrr
rrZspecial_validatorrrrrG�s

zParamValidator._validatecCsJytj|�Wn6ttfk
rD}z|j|d|d�WYdd}~XnXdS)Nzunable to encode to json)r:)�json�dumps�
ValueError�	TypeErrorr)rrr
rr�errrrH�sz)ParamValidator._validate_jsonvalue_string)rc	Cs�x0|jjdg�D]}||kr|j|d||d�qW|j}g}x6|D].}||krf|j|d|t|�d�qB|j|�qBWx.|D]&}|j|||j||d||f�qzWdS)NZrequiredzmissing required field)r7Zuser_paramsz
unknown field)r8r9z%s.%s)r'r)r�members�listr3rG)	rrr
rrZrequired_memberrPZknown_paramsrrrr�_validate_structure�s


z"ParamValidator._validate_structurecCst|t|�|d|�dS)Nzinvalid length)r.�len)rrr
rrrrr�_validate_string�s
zParamValidator._validate_stringcCsL|j}t|t|�|d|�x,t|�D] \}}|j|||d||f�q$WdS)Nzinvalid lengthz%s[%s])�memberr.rS�	enumeraterG)rrr
rrZmember_shape�i�itemrrr�_validate_list�szParamValidator._validate_listc	CsV|j}|j}xD|j�D]8\}}|j|||d||f�|j|||d||f�qWdS)Nz%s (key: %s)z%s.%s)�keyr*�itemsrG)	rrr
rrZ	key_shapeZvalue_shaperZr*rrr�
_validate_map�szParamValidator._validate_mapcCst|||d|�dS)Nz
invalid range)r.)rrr
rrrrr�_validate_integer�sz ParamValidator._validate_integercCsHt|tttjf�rdSt|d�r$dS|j|d|tt�tt�dgd�dS)N�readzinvalid typezfile-like object)rr)r�bytes�	bytearrayrrr(rr<)rrr
rrrrr�_validate_blob�s

zParamValidator._validate_blobcCsdS)Nr)rrr
rrrrr�_validate_boolean�sz ParamValidator._validate_booleancCst|||d|�dS)Nz
invalid range)r.)rrr
rrrrr�_validate_doubleszParamValidator._validate_doublecCst|||d|�dS)Nz
invalid range)r.)rrr
rrrrr�_validate_longszParamValidator._validate_longcCs2|j|�}|s.tjt�dg}|j|d||d�dS)Nztimestamp-stringzinvalid type)rr)�_type_check_datetimerrrr)rrr
rrZ
is_valid_typerrrr�_validate_timestamp
s


z"ParamValidator._validate_timestampc
Cs,yt|�dStttfk
r&dSXdS)NTF)rrNrM�AttributeError)rr*rrrres
z#ParamValidator._type_check_datetimeN)rCrDrE�__doc__r	rIrGrHr �dictrRrZstring_typesrTrQ�tuplerYr\Z
integer_typesr]ra�boolrbr&�decimalZDecimalrcZ_validate_floatrdrfrerrrrr�s"	
rc@seZdZdd�Zdd�ZdS)�ParamValidationDecoratorcCs||_||_dS)N)�_param_validator�_serializer)rZparam_validatorZ
serializerrrrr1sz!ParamValidationDecorator.__init__cCsB|j}|dk	r4|jj||j�}|j�r4t|j�d��|jj||�S)N)r)�input_shapernr	r
rrro�serialize_to_request)rZ
parametersZoperation_modelrprrrrrq#sz-ParamValidationDecorator.serialize_to_requestN)rCrDrEr1rqrrrrrmsrm)rhZbotocore.compatrrlrKrZbotocore.utilsrrZbotocore.exceptionsrrr r.�objectr/rrmrrrr�<module>s: