U a, @sdZddlmZmZmZddlZddlmZmZm Z m Z ddl m Z ddd d d d d ddg Z e ddddGdddeZdd Ze ddddGdddeZd,dd Ze ddddGdddeZddZe ddddGdddeZddZe ddddGd d!d!eZd"d Ze ddddGd#d$d$eZd%d Ze ddddGd&d'd'eZd-d(dZe ddddGd)d*d*eZd.d+d ZdS)/z Commonly useful validators. )absolute_importdivisionprint_functionN) _AndValidatorand_attribattrs)NotCallableErrorr deep_iterable deep_mappingin_ instance_of is_callable matches_reoptionalprovidesFT)reprslotshashc@s"eZdZeZddZddZdS)_InstanceOfValidatorcCs4t||js0tdj|j|j|j|d||j|dS)P We use a callable class to be able to change the ``__repr__``. z?'{name}' must be {type!r} (got {value!r} that is a {actual!r}).)nametypeactualvalueN) isinstancer TypeErrorformatr __class__selfinstattrrr$/Users/jalaguru/Documents/Proserv/artifacts/aws_dms_cdk_automation/aws-dms-cdk-automation/venv/lib/python3.8/site-packages/attr/validators.py__call__s z_InstanceOfValidator.__call__cCsdj|jdS)Nz)r)rrr!r$r$r%__repr__0sz_InstanceOfValidator.__repr__N)__name__ __module__ __qualname__rrr&r)r$r$r$r%rsrcCst|S)a A validator that raises a `TypeError` if the initializer is called with a wrong type for this particular attribute (checks are performed using `isinstance` therefore it's also valid to pass a tuple of types). :param type: The type to check for. :type type: type or tuple of types :raises TypeError: With a human readable error message, the attribute (of type `attr.Attribute`), the expected type, and the value it got. )rr'r$r$r%r6s )rfrozenrc@s.eZdZeZeZeZddZddZdS)_MatchesReValidatorcCs0||s,tdj|j|jj|d||j|dS)rz7'{name}' must match regex {regex!r} ({value!r} doesn't))rregexrN) match_func ValueErrorrrr/patternr r$r$r%r&Ls z_MatchesReValidator.__call__cCsdj|jdS)Nz,)r/)rr/r(r$r$r%r)[sz_MatchesReValidator.__repr__N) r*r+r,rr/flagsr0r&r)r$r$r$r%r.Fs r.cCsttdd}|dtjtjf}||krJtddtddt|Dft||}|tjkrh|j}n6|tjkrz|j}n$|r|j }ntd ||}|j}t |||S)a} A validator that raises `ValueError` if the initializer is called with a string that doesn't match *regex*. :param str regex: a regex string to match against :param int flags: flags that will be passed to the underlying re function (default 0) :param callable func: which underlying `re` function to call (options are `re.fullmatch`, `re.search`, `re.match`, default is ``None`` which means either `re.fullmatch` or an emulation of it on Python 2). For performance reasons, they won't be used directly but on a pre-`re.compile`\ ed pattern. .. versionadded:: 19.2.0 fullmatchNz'func' must be one of %s.z, css|]}|r|jpdVqdS)NoneN)r*).0er$r$r% xszmatches_re..z(?:{})\Z) getattrresearchmatchr1joinsortedsetcompiler4rr.)r/r3funcr4Z valid_funcsr2r0r$r$r%ras.    c@s"eZdZeZddZddZdS)_ProvidesValidatorcCs0|j|s,tdj|j|j|d||j|dS)rz<'{name}' must provide {interface!r} which {value!r} doesn't.)r interfacerN)rCZ providedByrrrr r$r$r%r&s z_ProvidesValidator.__call__cCsdj|jdS)Nz0rC)rrCr(r$r$r%r)sz_ProvidesValidator.__repr__N)r*r+r,rrCr&r)r$r$r$r%rBsrBcCst|S)a( A validator that raises a `TypeError` if the initializer is called with an object that does not provide the requested *interface* (checks are performed using ``interface.providedBy(value)`` (see `zope.interface `_). :param interface: The interface to check for. :type interface: ``zope.interface.Interface`` :raises TypeError: With a human readable error message, the attribute (of type `attr.Attribute`), the expected interface, and the value it got. )rBrDr$r$r%rsc@s"eZdZeZddZddZdS)_OptionalValidatorcCs|dkr dS||||dS)N validatorr r$r$r%r&sz_OptionalValidator.__call__cCsdjt|jdS)Nz')what)rrrGr(r$r$r%r)sz_OptionalValidator.__repr__N)r*r+r,rrGr&r)r$r$r$r%rEsrEcCst|trtt|St|S)a A validator that makes an attribute optional. An optional attribute is one which can be set to ``None`` in addition to satisfying the requirements of the sub-validator. :param validator: A validator (or a list of validators) that is used for non-``None`` values. :type validator: callable or `list` of callables. .. versionadded:: 15.1.0 .. versionchanged:: 17.1.0 *validator* can be a list of validators. )rlistrErrFr$r$r%rs  c@s"eZdZeZddZddZdS) _InValidatorcCsHz||jk}Wntk r&d}YnX|sDtdj|j|j|ddS)NFz/'{name}' must be in {options!r} (got {value!r}))roptionsr)rKrr1rr)r!r"r#rZ in_optionsr$r$r%r&s z_InValidator.__call__cCsdj|jdS)Nz(rK)rrKr(r$r$r%r)sz_InValidator.__repr__N)r*r+r,rrKr&r)r$r$r$r%rJs rJcCst|S)a A validator that raises a `ValueError` if the initializer is called with a value that does not belong in the options provided. The check is performed using ``value in options``. :param options: Allowed options. :type options: list, tuple, `enum.Enum`, ... :raises ValueError: With a human readable error message, the attribute (of type `attr.Attribute`), the expected options, and the value it got. .. versionadded:: 17.1.0 )rJrLr$r$r%r sc@seZdZddZddZdS)_IsCallableValidatorcCs,t|s(d}t|j|j||jd|ddS)rz?'{name}' must be callable (got {value!r} that is a {actual!r}).)rrr)msgrN)callabler rrr)r!r"r#rmessager$r$r%r&sz_IsCallableValidator.__call__cCsdS)Nzr$r(r$r$r%r)sz_IsCallableValidator.__repr__N)r*r+r,r&r)r$r$r$r%rMsrMcCstS)aw A validator that raises a `attr.exceptions.NotCallableError` if the initializer is called with a value for this particular attribute that is not callable. .. versionadded:: 19.1.0 :raises `attr.exceptions.NotCallableError`: With a human readable error message containing the attribute (`attr.Attribute`) name, and the value it got. )rMr$r$r$r%rs c@s:eZdZeedZedeedZddZddZ dS) _DeepIterablerFNdefaultrGcCs4|jdk r|||||D]}||||qdSrN)iterable_validatormember_validator)r!r"r#rmemberr$r$r%r&/s z_DeepIterable.__call__cCs,|jdkrdn dj|jd}dj||jdS)Nz {iterable!r})iterablezJ)iterable_identifierrW)rUrrV)r!rZr$r$r%r)9s z_DeepIterable.__repr__) r*r+r,rrrVrrUr&r)r$r$r$r%rQ(s  rQcCs t||S)a1 A validator that performs deep validation of an iterable. :param member_validator: Validator to apply to iterable members :param iterable_validator: Validator to apply to iterable itself (optional) .. versionadded:: 19.1.0 :raises TypeError: if any sub-validators fail )rQ)rVrUr$r$r%r Hs c@sFeZdZeedZeedZedeedZddZ ddZ dS) _DeepMappingrFNrRcCsF|jdk r|||||D]$}|||||||||qdSrT)mapping_validator key_validatorvalue_validator)r!r"r#rkeyr$r$r%r&]s  z_DeepMapping.__call__cCsdj|j|jdS)NzA)r_r)rr]r^r(r$r$r%r)hs z_DeepMapping.__repr__) r*r+r,rrr]r^rr\r&r)r$r$r$r%r[Ws    r[cCs t|||S)a} A validator that performs deep validation of a dictionary. :param key_validator: Validator to apply to dictionary keys :param value_validator: Validator to apply to dictionary values :param mapping_validator: Validator to apply to top-level mapping attribute (optional) .. versionadded:: 19.1.0 :raises TypeError: if any sub-validators fail )r[)r]r^r\r$r$r%r ns )rN)N)N)__doc__ __future__rrrr:_makerrrr exceptionsr __all__objectrrr.rrBrrErrJr rMrrQr r[r r$r$r$r%sL    -