File: //var/opt/nydus/ops/primordial/__pycache__/validator.cpython-39.pyc
a
�,�hL$ � @ s� d dl Z d dlZd dlmZmZ d dlmZmZmZmZm Z m
Z
mZ d dlm
Z
d dlmZmZmZ d dlmZ e
eee ef Zeeef ZG dd� de�Zd*eeeed
�dd�Zd+eeeed
�dd�Zee� �Zeed�dd�Zeed�dd�Zeed�dd�Zeed�dd�Z eed�dd�Z!e�"d�Z#eed�dd�Z$d,e e e e ee e d�dd �Z%d-eeef eeef eeeef d!�d"d#�Z&d.e
e e e
eeef eed$�d%d&�Z'eed'�d(d)�Z(dS )/� N)�datetime� timedelta)�Any�Callable�Dict�Iterable�List�Optional�Union)�UUID)�Schema�Url�MultipleInvalid)�CANONICAL_TIMESTRING_FORMATc @ s e Zd ZdZdS )�BadParameterExceptionz/To be raised when a validation operation fails.N)�__name__�
__module__�__qualname__�__doc__� r r �E/opt/nydus/tmp/pip-target-wkfpz8uv/lib/python/primordial/validator.pyr s r F)� validator�param_value�coerce_�returnc
C sr t | �rbz| |�}W n6 tyJ } ztd||f �|�W Y d}~n
d}~0 0 |du rZ|}n|}|S td| ��dS )a� Run a validation operation.
Validate a particular parameter with a particular validator and possibly coerce the value into the validator's
return type.
:param validator: The validator to be run
:param param_value: The value to be validated
:param coerce_: Whether to return a type coerced value
:raises ValueError: If the parameter could not be validated.
z#Parameter %s failed validation (%s)NTz6Cannot use a non-callable as a parameter validator: %s)�callable� Exceptionr �
ValueError)r r r �myval�e�retr r r �validate s (r! )�param_validatorr r r c C s� | dur�t | t�r�| D ]Z}|du r2|du r2| S zt|||d�}|W S tyn } zW Y d}~qd}~0 0 qtd|| f ��t| ||d�S |S )a Validate a parameter.
:param param_validator: The validator (or list of validators) to be run
:param param_value: The value to be validated
:param coerce_: Whether to return a type coerced value
:raises ValueError: If the parameter could not be validated.
N�r z&No validator in list validated %s (%s))�
isinstancer r! r r )r"