L iFddlmZddlmZddlmZddlmZmZddlZddlm Z ddl m Z ddl m Z mZmZmZmZmZmZmZdd lmZmZmZmZdd lmZmZmZe j<Zd Z Gd d e!Z"Gdde!Z#Gdde$Z%dZ&Gdde'Z(e(de%fiZ)y))absolute_import) literal_eval)copy)datedatetimeN)warn)errors) _int_types _str_type ContainerHashableIterableMappingSequenceSized)schema_registryrules_set_registryDefinitionSchema SchemaError)drop_item_from_tuplereadonly_classpropertyTypeDefinitioncd}|}||_|S)Nctd)NzcDummy method called. Its purpose is to hold justvalidation constraints for a rule in its docstring.) RuntimeError)self constraintfieldvalues X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/cerberus/validator.pydummyz(dummy_for_rule_validation..dummy s   )__doc__)rule_constraintsr!fs r dummy_for_rule_validationr&s  A AI Hr"ceZdZdZy) DocumentErrorzBRaised when the target document is missing or has the wrong formatN__name__ __module__ __qualname__r#r"r r(r(,sLr"r(ceZdZdZy)_SchemaRuleTypeErrorzw Raised when a schema (list) validation encounters a mapping. Not supposed to be used outside this module. Nr)r-r"r r/r/2s   r"r/czeZdZdZdZ dZ edeefdede fdede fe fede fded e fded efded eefded efded efe fedeefe fedefdede fdd Z eZ fdZedZdZedZdZdodZdZdZdZdZ dZ!e"dZ#e#jHdZ#e"dZ%e%jHd Z%e"d!Z&e"d"Z'e'jHd#Z'e"d$Z(e"d%Z)e)jHd&Z)e"d'Z*e*jHd(Z*e"d)Z+e+jHd*Z+e"d+Z,e"d,Z-e"d-Z.e"d.Z/e/jHd/Z/e"d0Z0e"d1Z1e1jHd2Z1e"d3Z2e2jHd4Z2e3d5Z4dpd6Z5d7Z6dqd8Z7d9Z8d:Z9d;Z:d<Z;d=ZZ=d?Z>d@Z?dAZ@edBZAedCZBdDZCdEZDdFZEdGZFdHZGdIZHdJZIdrdKZJeJZKdLZLdMZMdNZNeOdOZPdPZQdQZRdRZSdSZTdTZUdUZVdVZWdWZXdXZYdYZZdZZ[d[Z\d\Z]d]Z^d^Z_d_Z`d`ZadaZbeOdbZcdcZdddZedeZfdfZgdgZheOdhZieOdhZjdiZkdjZldkZmdlZndmZodnZpxZqS)s BareValidatora Validator class. Normalizes and/or validates any mapping against a validation-schema which is provided as an argument at class instantiation or upon calling the :meth:`~cerberus.Validator.validate`, :meth:`~cerberus.Validator.validated` or :meth:`~cerberus.Validator.normalized` method. An instance itself is callable and executes a validation. All instantiation parameters are optional. There are the introspective properties :attr:`types`, :attr:`validators`, :attr:`coercers`, :attr:`default_setters`, :attr:`rules`, :attr:`normalization_rules` and :attr:`validation_rules`. The attributes reflecting the available rules are assembled considering constraints that are defined in the docstrings of rules' methods and is effectively used as validation schema for :attr:`schema`. :param schema: See :attr:`~cerberus.Validator.schema`. Defaults to :obj:`None`. :type schema: any :term:`mapping` :param ignore_none_values: See :attr:`~cerberus.Validator.ignore_none_values`. Defaults to ``False``. :type ignore_none_values: :class:`bool` :param allow_unknown: See :attr:`~cerberus.Validator.allow_unknown`. Defaults to ``False``. :type allow_unknown: :class:`bool` or any :term:`mapping` :param require_all: See :attr:`~cerberus.Validator.require_all`. Defaults to ``False``. :type require_all: :class:`bool` :param purge_unknown: See :attr:`~cerberus.Validator.purge_unknown`. Defaults to to ``False``. :type purge_unknown: :class:`bool` :param purge_readonly: Removes all fields that are defined as ``readonly`` in the normalization phase. :type purge_readonly: :class:`bool` :param error_handler: The error handler that formats the result of :attr:`~cerberus.Validator.errors`. When given as two-value tuple with an error-handler class and a dictionary, the latter is passed to the initialization of the error handler. Default: :class:`~cerberus.errors.BasicErrorHandler`. :type error_handler: class or instance based on :class:`~cerberus.errors.BaseErrorHandler` or :class:`tuple` )nullable)r2readonlytypeemptybinaryr-boolean containerrrdictfloatintegerlistnumbersetstring) r6r7r8rrr9r:r;r<r=r>r?cd|_ tj|_ d|_ tj |_ tj|_ d|_ d|_ d|_ |j||_ |j|||jdd|_|jdd|_|jdd|_g|_ t(t*|[y)a4 The arguments will be treated as with this signature: __init__(self, schema=None, ignore_none_values=False, allow_unknown=False, require_all=False, purge_unknown=False, purge_readonly=False, error_handler=errors.BasicErrorHandler) Nr-Fschema allow_unknown require_all)documentr ErrorList_errors recent_errorDocumentErrorTreedocument_error_treeSchemaErrorTreeschema_error_tree document_path schema_pathupdate"_BareValidator__init_error_handler error_handler_BareValidator__store_configgetrArBrC_remaining_rulessuperr1__init__)rargskwargs __class__s r rUzBareValidator.__init__s  *'')  :! @#)#;#;#=  B"(!7!7!9 @  % % !66v> A D&)jj40 #ZZ?!::mU; " $ mT+-r"c$|jdtj}t|tr|\}}ni}t|t r"t |tjr|di|St|tjr|Std)NrPzInvalid error_handler.r-) popr BasicErrorHandler isinstancetupler4 issubclassBaseErrorHandlerr)rWrP eh_configs r __init_error_handlerz"BareValidator.__init_error_handlers ?F4L4LM mU +'4 $M9I mT *z 6220 !-9- -  v'>'> ? 78 8r"cd}t|dt|D]\}}||vrtd|z||||<!||_y)z.Assign args to kwargs and store configuration.)rAignore_none_valuesrBrC purge_unknownpurge_readonlyNz.__init__ got multiple values for argument '%s') enumeratelen TypeError_config)rrVrW signatureips r __store_configzBareValidator.__store_configsb i #d)45 $DAqF{ SVW WXX Gq  $   #r"c8|jjy)z'Purge the cache of known valid schemas.N)_valid_schemasclear)clss r clear_cacheszBareValidator.clear_cachess   "r"c jt|dk(r|jj|d|jj|dD]S}|jj ||j j ||jj|Uyt|dk(r;t|dtr(|j|dtj|dyt|dk\r9|d}|dj}|dj}|dd}|j |fz}|j"}|tj$jk7r ||||fz }|sd} nr|j'|j)|j*|} |dk(r| j-|d} n-|dk(r#| j-||j.} || vrd}n| |} |j0j-|} tj2||||| | ||_|j|j4gyy) a Creates and adds one or multiple errors. :param args: Accepts different argument's signatures. *1. Bulk addition of errors:* - :term:`iterable` of :class:`~cerberus.errors.ValidationError`-instances The errors will be added to :attr:`~cerberus.Validator._errors`. *2. Custom error:* - the invalid field's name - the error message A custom error containing the message will be created and added to :attr:`~cerberus.Validator._errors`. There will however be fewer information contained in the error (no reference to the violated rule and its constraint). *3. Defined error:* - the invalid field's name - the error-reference, see :mod:`cerberus.errors` - arbitrary, supplemental information about the error A :class:`~cerberus.errors.ValidationError` instance will be created and added to :attr:`~cerberus.Validator._errors`. rNr2Frequired__require_all__)rgrFextendsortrIaddrKrPemitr\r _errorr CUSTOMcoderulerLrM UNKNOWN_FIELD_resolve_rules_set_resolve_schemarArRrCrDValidationErrorrG) rrVerrorrr~rinforLrMr rules_setrs r r|zBareValidator._errorsL t9> LL  Q ( LL   a /((,,U3&&**51""''. /Y!^ 47I > KKQQ 8 Y!^GE7<,>O )ne4"0!2,0,>,>,OO )  *.*:*:O '  lE2 , *.*:*:\*IO 'r"cdj||jdd}t||d}|tdj|||S)Nz_{0}_{1} _z/There's no handler for '{}' in the '{}' domain.)formatreplacegetattrr)rdomainr methodnameresults r __get_rule_handlerz BareValidator.__get_rule_handlerjsW&&vt||C/EF z40 > &v.  r"czt|j}t|j}|D]}t|dD] }t |j||z|_"t|dD] }t |j||z|_"|j sp|j |j ||y)a{ Removes nodes by index from an errorpath, relatively to the basepaths of self. :param errors: A list of :class:`errors.ValidationError` instances. :param dp_items: A list of integers, pointing at the nodes to drop from the :attr:`document_path`. :param sp_items: Alike ``dp_items``, but for :attr:`schema_path`. T)reverseN)rgrLrMsortedr child_errors_drop_nodes_from_errorpaths)rrFdp_itemssp_items dp_basedepth sp_basedepthrrks r rz)BareValidator._drop_nodes_from_errorpathsts4--. 4++,  YEHd3 &:'')9'# Hd3 $8%%|a'7%! !!001C1CXxX Yr"c|jdr/|dd}|jdr |jn |j}n |j}|jd}|D]}||vry|j |i}|d|fS)a Searches for a field as defined by path. This method is used by the ``dependency`` evaluation logic. :param path: Path elements are separated by a ``.``. A leading ``^`` indicates that the path relates to the document root, otherwise it relates to the currently evaluated document, which is possibly a subdocument. The sequence ``^^`` at the start will be interpreted as a literal ``^``. :type path: :class:`str` :returns: Either the found field name and its value or :obj:`None` for both. :rtype: A two-value :class:`tuple`. ^rtN.NN) startswithrDrsplitrR)rpathcontextpartsparts r _lookup_fieldzBareValidator._lookup_fields ??3 8D'+s';dmmASASGmmG 3 ,D7"!kk$+G , Ry'!!r"c~t|tr|St|tr|jj |SyN)r\rr rrR)rrs r rz BareValidator._resolve_rules_sets6 i )   9 -**..y9 9r"c~t|tr|St|tr|jj |Syr)r\rr rrRrrAs r rzBareValidator._resolve_schemas5 fg &M  *''++F3 3r"c:|jjddS)a2 If ``True`` unknown fields that are not defined in the schema will be ignored. If a mapping with a validation schema is given, any undefined field will be validated against its rules. Also see :ref:`allowing-the-unknown`. Type: :class:`bool` or any :term:`mapping` rBFrirRrs r rBzBareValidator.allow_unknown||77r"c|js$t|ttfst|d|i||jd<y)NrB)rr\boolrrirrs r rBzBareValidator.allow_unknowns5 ED:J3K!L TOU#; <(- _%r"c:|jjddS)zw If ``True`` known fields that are defined in the schema will be required. Type: :class:`bool` rCFrrs r rCzBareValidator.require_alls || u55r"c"||jd<y)NrCrirs r rCzBareValidator.require_alls&+ ]#r"c8|j|jS)z The errors of the last processing formatted by the handler that is bound to :attr:`~cerberus.Validator.error_handler`. )rPrFrs r r zBareValidator.errorss !!$,,//r"c:|jjddS)zm Whether to not process :obj:`None`-values in a document or not. Type: :class:`bool` rcFrrs r rcz BareValidator.ignore_none_valuess || 4e<DL ]]j1AB!DL+D&9DLr"cB|jjdtS)zg The registry that holds referenced schemas. Type: :class:`~cerberus.Registry` r)rirRrrs r rzBareValidator.schema_registryTs || 1?CCr"c"||jd<y)Nrrrs r rzBareValidator.schema_registry\s*2 &'r"ct|jt|jz}|rtd|zt |j|jzS)zi The constraints that can be used for the 'type' rule. Type: A tuple of strings. zcThese types are defined both with a method and in the'types_mapping' property of this validator: %s)r> types_mapping_types_from_methodsrr])rqredundant_typess r typeszBareValidator.typesbs\ c//03s7N7N3OO  ACRS  S&&'#*A*AAAr"ctj|_d|_tj|_tj |_t||_ |jsd|_ |t|||_ nG|j;t|jt ri|_nt%tj&|t)tj*t|t s(t)tj,j/||j0j3|yNF)r rErFrGrHrIrJrKrrDrrrrAr\rBrrrSCHEMA_ERROR_MISSINGr(DOCUMENT_MISSINGDOCUMENT_FORMATrrPstart)rrDrAs r __init_processingzBareValidator.__init_processingss'')  #)#;#;#= !'!7!7!9X }}"'D   *48DK [[ $,,g6! !&"="=>>   7 78 8(G, 6 6 = =h GH H   &r"c||r$|D]} |jj| yg|_y#t$rY5wxYw)z Drops rules from the queue of the rules that still need to be evaluated for the currently processed field. If no arguments are given, the whole queue is emptied. N)rSremove ValueError)rrulesrs r _drop_remaining_rulesz#BareValidator._drop_remaining_rulessM  ))006  %'D !"s / ;;c|j|||j|j|j|jj ||j r|sy|jS)a Returns the document normalized according to the specified rules of a schema. :param document: The document to normalize. :type document: any :term:`mapping` :param schema: The validation schema. Defaults to :obj:`None`. If not provided here, the schema must have been provided at class instantiation. :type schema: any :term:`mapping` :param always_return_document: Return the document, even if an error occurred. Defaults to: ``False``. :type always_return_document: :class:`bool` :return: A normalized copy of the provided mapping or :obj:`None` if an error occurred during normalization. N)_BareValidator__init_processing!_BareValidator__normalize_mappingrDrArPendrF)rrDrAalways_return_documents r normalizedzBareValidator.normalizedsW x0    < t$ << 6== r"ct|tr|j|}|j}|D]}|j ||||<|j |||j r|js|j|||jr|j|||j|||j|||j|||j||d|_|S)NT)r\r rrr'_BareValidator__normalize_rename_fieldsrdrB_normalize_purge_unknownre(_BareValidator__normalize_purge_readonly(_BareValidator__validate_readonly_fields(_BareValidator__normalize_default_fields_normalize_coerce$_BareValidator__normalize_containersrrmappingrArs r __normalize_mappingz!BareValidator.__normalize_mappings fi ())&1F CE 33F5MBF5M C &&w7   d&8&8  ) )'6 :     + +GV < ''8 ''8 w/ ##GV4"r"c tj}|D]}||vrrRr\r/_BareValidator__normalize_mapping_per_keysrules1_BareValidator__normalize_mapping_per_valuesrulesrB,_BareValidator__normalize_mapping_per_schemar/r r-_BareValidator__normalize_sequence_per_schema,_BareValidator__normalize_sequence_per_items)rrrArrs r __normalize_containersz$BareValidator.__normalize_containerss* PE 5"-.E'%.'2%'::wu k(B!E)<<wu m(D3@ 2 2G<;;E7FSGENI6GENH5u$88P%77wO9 P$0sD  DDc Btfd||D}td||D}|j||df|}|j|d}|jr:|j |jgddg|j |j|D]~}|||k(r ||||vrRt d jd jd |j|fzD| |||||||<h|||||||<|||=y) Nc3&K|]}|f ywrr-).0kproperty_ruless r zBBareValidator.__normalize_mapping_per_keysrules..!sCq>*Cc3$K|]}||f ywrr-rrs r rzBBareValidator.__normalize_mapping_per_keysrules.."s8A!Q8r rrrATrruzHNormalizing keys of {path}: {key} already exists, its value is replaced.rc32K|]}t|ywr)rrxs r rzBBareValidator.__normalize_mapping_per_keysrules..1s%Tc!f%Ts)rkey) r9rrrFrr|rrjoinrL) rrrrrArD validatorrrs ` r !__normalize_mapping_per_keysrulesz/BareValidator.__normalize_mapping_per_keysrules sICGENCD889-- {/CF. %%ht%L     , ,Y->->QF K KK )) * &AF1I~ayGEN*--3V XX%Td6H6HE86S%TT.4.-4EN1,=vay),3EN1,=vay)EN1% &r"ctfd||D}|j||df|}|j||d||<|jr:|j |jgdg|j |jyy)Nc3&K|]}|f ywrr-)rr value_ruless r rzDBareValidator.__normalize_mapping_per_valuesrules..;s@A;'@rr rTrru)r9rrrFrr|)rrrr)rAr%s ` r #__normalize_mapping_per_valuesrulesz1BareValidator.__normalize_mapping_per_valuesrules:s@@A-- }/Ef. #-- EN4.      , ,Y->->QC H KK )) * r"c |j|i}|s&t|jtr |j}|j ||df|jdi|jd|j|jd|j |jd|j }t||}|j||d}||||<|jr|j|jyy)NrArBrdrC)rrrArBrdrCTr) rRr\rBrrrdrCr4rrFr|)rrrrArr% value_type result_values r __normalize_mapping_per_schemaz,BareValidator.__normalize_mapping_per_schemaFs 5"%D$6$6@&&E-- *99Xr*))OT5G5GH))OT5G5GH -1A1AB . '%.)  ++GENSW+X #L1    KK )) * r"c tfdtt|Dtdt|D}|j df}t |}|j |d}||j|<|jr:|j|jgdg|j|jyy)Nc32K|]}|dfyw)rANr-)rrrrAs r rz@BareValidator.__normalize_sequence_per_schema..Zs Naax( ) Nsc3*K|] \}}||f ywrr-rrvs r rz@BareValidator.__normalize_sequence_per_schema..\sE41aAErArTrru) r9rangergrfrr4rvaluesrFrr|)rrrrArDr%r,rs ` ` r __normalize_sequence_per_schemaz-BareValidator.__normalize_sequence_per_schemaXs N5WU^9L3M N E9WU^+DEE-- x/@. '%.) %%ht%L#FMMO4     , ,Y->->QC H KK )) * r"c||d||}}t|t|k7rytdt|D}tdt|D}|j||df|}t ||}|j |d} || j ||<|jr:|j|jgdg|j|jyy)Nr c3*K|] \}}||f ywrr-r2s r rz?BareValidator.__normalize_sequence_per_items..ks;$!Q1v;r4c3*K|] \}}||f ywrr-r2s r rz?BareValidator.__normalize_sequence_per_items..ls=41aA=r4rTrru) rgr9rfrr4rr6rFrr|) rrrrArr6rDr%r,rs r __normalize_sequence_per_itemsz,BareValidator.__normalize_sequence_per_itemsgsu g.v u:V $ ;)E*:;<=9V+<==-- w/?. '%.) %%ht%L#FMMO4     , ,Y->->QC H KK )) * r"c|Dcgc]'}|j|ijdds&|)c}D]}|j||Scc}w)Nr3F)rRrZrrAr"rs r __normalize_purge_readonlyz(BareValidator.__normalize_purge_readonlywsM!(UAFJJq",=,A,A*e,TaU E KK  Vs 'A A cf|Dcgc] }||vs| c}D]}|j||Scc}w){'type': 'boolean'})rZr=s r rz&BareValidator._normalize_purge_unknown}s:")..wF4--w7$(:(::..eT%7%78% r"c6d||vr|||||d<||=yy)z{'type': 'hashable'}renameNr-rs r rCzBareValidator._normalize_renames1 ve} $/6u~GF5M(+ , %r"cd||vry|j||d||dtj}||k7r ||||<||=yy)rrBNF)rr RENAMING_FAILED)rrrArnew_names r rDz'BareValidator._normalize_rename_handlersb 6%= 0 ** 5M* +UE5&BXBX  u  'GH  r"cffdDD]}j|d|| y)Nc3pK|]-}|vr'j|jdr|/yw)r3N)rrR)rr"rrArs r rz;BareValidator.__validate_readonly_fields..s< G| 7 7q B F Fz R  s36r3)_validate_readonlyrs``` r __validate_readonly_fieldsz(BareValidator.__validate_readonly_fieldss?   VE  # #F5M*$=ugen U  Vr"c|Dcgc]"}||vs||||jdds|$}} |Dcgc] }d||vs |}}|D]}|j|||t }|Dcgc] }d||vs |}}|r{|j d} |j |||tt|} | |vr)|D]#}|j|tjd%y|j!| |rzyycc}wcc}w#t$rtwxYwcc}w#t$r|j|Yt$r4} |j|tjt| Yd} ~ d} ~ wwxYw)Nr2Fdefaultdefault_setterrz)Circular dependencies of default setters.)rRrhr/_normalize_defaultr>rZ_normalize_default_setterKeyErrorappendrr|r SETTING_DEFAULT_FAILEDrhashr]rz) rrrAr" empty_fieldsfields_with_defaultrknown_fields_statesfields_with_default_setterrfields_processing_states r __normalize_default_fieldsz(BareValidator.__normalize_default_fieldss  "q j%8    '.:"Ui6RS9>T1"U "U) _unrequired_by_excludesrrrDrArcrR$_BareValidator__validate_definitions'_BareValidator__validate_unknown_fields(_BareValidator__validate_required_fieldsrPrrrF)rrDrArN normalizer definitionss r validatezBareValidator.validates& '*u$ x0   $ $T]]DKK @]] 6E&&4==+?+G++//%0K&++K?..u5 6{{  + +DMM : t$ %%%r"c|jdd}|j|i||jr|sy|jS)z Wrapper around :meth:`~cerberus.Validator.validate` that returns the normalized and validated document or :obj:`None` if validation failed. rFN)rZrirFrD)rrVrWrs r validatedzBareValidator.validateds@ "(,De!L t&v& << 6== r"cl|jr|j|}t|jttfrX|j rdnd}|j |||ji}|||ids|j|jyyy|j|tjy)NrB__allow_unknown__)rrAFrg) rBrDr\rr rrr|rFr r)rrrrr%s r __validate_unknown_fieldsz'BareValidator.__validate_unknown_fields)s   MM%(E$,,w .BC37--EX  55!-ud>P>P6Q6 !%5AKK 1 12BD KKv33 4r"c fd}jjjDcgc]}|vs|jvr|c}j fdjDj fdD_j r5j j d} ||}|rn j r5jycc}w#t$rY!wxYw)z3Validate a field's value against its defined rules.c\jd|}|j|dS)Nri)rrR)rr%rhrrrs r validate_rulez;BareValidator.__validate_definitions..validate_rule;s/// DAI[__T48%G Gr"c3,K|] }|vs| ywrr-)rr" rules_queues r rz7BareValidator.__validate_definitions..Gs Qk5IA  c3NK|]}|vr|jvr|dvr|yw))rBrCmetarvN)normalization_rules)rr"rtrs r rz7BareValidator.__validate_definitions..Js8  #111MM  s"%rN) rrDpriority_validationsmandatory_validationsrxrSrZr/r) rrhrrrr"rrrtrs ``` @@r __validate_definitionsz$BareValidator.__validate_definitions8s H--k:  e$.. K1(B(B#B   11       !,##((,,Q/D &t, ## ""$7 0(  sC2 C77 DDz {'oneof': [{'type': 'boolean'}, {'type': ['dict', 'string'], 'check_with': 'bulk_schema'}]} ct|trIt|ts9tfd|D}|r"|j |t j |yy|vr"|j |t j|yy)z{'type': 'container'}c3,K|] }|vs| ywrr-)rr"allowed_valuess r rz2BareValidator._validate_allowed..ksJA!>2IaJruN)r\rr r]r|r UNALLOWED_VALUESUNALLOWED_VALUE)rr~rr unalloweds ` r _validate_allowedzBareValidator._validate_allowedhsi eX &z%/KJJJI E6#:#:IFN* E6#9#95A+r"c>t|tr |jd|}|||yt|t r|D]}|j|||y||||jy#t$r%|jd|}t dt YwwxYw)r check_withr%ziThe 'validator' rule was renamed to 'check_with'. Please update your schema and method names accordingly.N) r\r rrrDeprecationWarningr_validate_check_withr|)rchecksrr value_checkerr3s r rz"BareValidator._validate_check_withrs fi (  $ 7 7 f M  % '  ) ;))!UE: ; 5% -   $ 7 7 V L @& sA..+BBct|tsyt|trt|tr t|f}n t|}|t|z }|r"|j |t j |yy)z{'empty': False }N)r\rr r>r|r MISSING_MEMBERS)rexpected_valuesrrmissing_valuess r _validate_containsz BareValidator._validate_containssj%* /84 Y9 "?"45O!/2O(3u:5  KKv55~ F r"c8t|tst|ttfs|f}t|tr|j ||n"t|tr|j |||jj|j|dfz yy)zD{'type': ('dict', 'hashable', 'list'), 'check_with': 'dependencies'} dependenciesNT) r\r rrr._BareValidator__validate_dependencies_sequence-_BareValidator__validate_dependencies_mappingrIfetch_node_fromrM)rrrrs r _validate_dependenciesz$BareValidator._validate_dependenciess lI .j 8W-7 )?L lH -  1 1, F  g .  0 0u E  $ $ 4 4  E>#::     r"cDd}i}|jD]Y\}}t|trt|tr|g}|j |\}}||vr|dz }G|j ||i[|t |k7r"|j|tj|yy)Nrrt) r r\rr rrNrgr|r DEPENDENCIES_FIELD_VALUE) rrrvalidated_dependencies_counter error_infodependency_namedependency_values wanted_fieldwanted_field_values r __validate_dependencies_mappingz-BareValidator.__validate_dependencies_mappings)*& 2>2D2D2F I .O./:j!9?&7$7!/3/A/A//R ,L,!%66.!3.!!?4F"GH I *S-> > KKv>> K ?r"c~|D]8}|j|d|j|tj|:y)Nr)rr|r DEPENDENCIES_FIELD)rrr dependencys r __validate_dependencies_sequencez.BareValidator.__validate_dependencies_sequences?& JJ!!*-a08 E6#<#{'type': ('hashable', 'list'), 'schema': {'type': 'hashable'}}rvc3:K|]}|jvywr)rD)rexcluded_fieldrs r rz3BareValidator._validate_excludes..sU>~.Usz, c3>K|]}dj|yw)z'{0}'N)r)rrs r rz3BareValidator._validate_excludes..s&*/u%&sN) r\r rArRrCrcrzanyr$r|r EXCLUDES_FIELD)rexcluded_fieldsrrr exclusion_strs` r _validate_excludesz BareValidator._validate_excludess ox 0./O ;;u  ! !*d.>.> ?  ( ( , ,U 3- AN,U1C1G1GD,,2,,00@  A U_U U II&3B&M KKv44m D Vr"ct|trUt|tsEt|t|z}|r+|j |t j t|yy||vr"|j |t j|yy)z{'type': 'list'}N) r\rr r>r|r FORBIDDEN_VALUESr<FORBIDDEN_VALUE)rforbidden_valuesrrrs r _validate_forbiddenz!BareValidator._validate_forbiddensq eX &z%/KE S)9%::I E6#:#:DOL(( E6#9#95A)r"ct|t|k7r5|j|tjt|t|yt dt |D}|j ||df|}|t dt |D|jds,|j|tj|jyy)z'{'type': 'list', 'check_with': 'items'}c3*K|] \}}||f ywrr-)rrk definitions r rz0BareValidator._validate_items..s$1AzJr4r rc3*K|] \}}||f ywrr-)rrkrs r rz0BareValidator._validate_items..sBHAuaZBr4FrNrgN) rgr|r ITEMS_LENGTHr9rfrrN BAD_ITEMSrF)rr rr6rAr%s r _validate_itemszBareValidator._validate_itemss u:V $ KKv22CJF L5>u5EF11$#W-2I B &0ABB{{  E6#3#3Y5F5FG r"cd}tj}t|D]\}}||ji} dD]4} | | |vs | |j|vs|j|| | || <6d| |vr|j | |d<|j |||f| d} | |j|jdr|dz }|j| jgd g|j| j||fS) zl Validates value against all definitions and logs errors according to the operator. r)rBr4rBT)rrArBFrrt) r rErfrrArBrrDrNrrFrx) roperatorrhrr valid_counterrFrkrrArr%s r __validate_logicalz BareValidator.__validate_logical s(  ""$&{3 2MAzZ__./F1 Cve},U9K1K*.++e*N O r"c |jd|||\}}|t|kr-|j|tj||t|yy)z${'type': 'list', 'logical': 'allof'}allofN)rrgr|r ALLOFrs r _validate_allofzBareValidator._validate_allof-sK11';uU C $ $ KKv||Wfc+>N O %r"c |jd|||\}}|dkDr-|j|tj||t |yy)z%{'type': 'list', 'logical': 'noneof'}noneofrN)rr|r NONEOFrgrs r _validate_noneofzBareValidator._validate_noneof3sF11(KPUV A: KKv}}gvs;?O P r"c |jd|||\}}|dk7r-|j|tj||t |yy)z${'type': 'list', 'logical': 'oneof'}oneofrtN)rr|r ONEOFrgrs r _validate_oneofzBareValidator._validate_oneof9sE11';uU Q; KKv||Wfc+>N O r"cp ||kDr!|j|tjyy#t$rYywxYwz{'nullable': False }N)r|r MAX_VALUErh)r max_valuerrs r _validate_maxzBareValidator._validate_max?: y  E6#3#34!    %) 55cp ||kr!|j|tjyy#t$rYywxYwr)r|r MIN_VALUErh)r min_valuerrs r _validate_minzBareValidator._validate_minGrrct|tr:t||kDr+|j|tj t|yyyz{'type': 'integer'}N)r\rrgr|r MAX_LENGTH)r max_lengthrrs r _validate_maxlengthz!BareValidator._validate_maxlengthO: eX &3u: +B KKv00#e* =,C &r"ct|tr:t||kr+|j|tj t|yyyr)r\rrgr|r MIN_LENGTH)r min_lengthrrs r _validate_minlengthz!BareValidator._validate_minlengthVrr"c|D|s |j|tj|jdddddddd d d d d dddddyy)r@Nrrrr5rr r minmaxrrrrrrAr4r )r|r NOT_NULLABLEr)rr2rrs r _validate_nullablez BareValidator._validate_nullable[sd = E6#6#67  & &#  r"c zt|tr|j||dftfd|j D}|td|j DdsK|j |j gddg|j|tj|j y y y ) {'type': ['dict', 'string'], 'check_with': 'bulk_schema', 'forbidden': ['rename', 'rename_handler']} r c3&K|]}|f ywrr-rrrAs r rz4BareValidator._validate_keysrules..~s?Qa[?rrc3$K|]}||f ywrr-rs r rz4BareValidator._validate_keysrules..s"@aAq6"@rFrnrurN) r\rrr9keysrrFr|r KEYSRULES)rrArrr%s ` r _validate_keysrulesz!BareValidator._validate_keysrulests eW %11$#[1?%**,?@2I T"@5::<"@AUS001B1BBAO E6#3#3Y5F5FGT &r"c|r|js |j|tjtj|jj |j |fzv}|jr|r|jyyyy)r@N)rr|r READONLY_FIELDrIrrLr)rr3rr has_errors r rMz BareValidator._validate_readonlys && E6#8#89 %%++==&&%1  ""y**,(1" r"ct|tsy|jds|dz }tj|}|j |s!|j |tjyy)z{'type': 'string'}N$) r\r endswithrecompilematchr|r REGEX_MISMATCH)rpatternrrre_objs r _validate_regexzBareValidator._validate_regexsY%+ $ sNGG$||E" KKv44 5#r"z {'type': 'boolean'} cD tfdjjD}|jz}|tfdDz }|D]"}j|tj$jretfdD}jj|r5j|z D]"}j|tj$yyy#t$r&jrj ddk(rt wxYw)zy Validates that required fields are not missing. :param document: The document being validated. c3K|]6\}}j|jdjdur|8yw)rvTN)rrRrC)rrrrs r rz;BareValidator.__validate_required_fields..sF%E:**:6:::tGWGWXs.s0! ||E".d6M6M ! s),c3FK|]}j||ywr)rR)rrrDs r rz;BareValidator.__validate_required_fields..sX5 U8K8WXs!!N) r>rAr AttributeErrorrrMr/rcr|r REQUIRED_FIELD isdisjoint)rrDrvmissingrfieldss`` r __validate_required_fieldsz(BareValidator.__validate_required_fieldss )-):):)<H D000S! !!     6E KKv44 5 6  ' 'XHXXF++66v>!99FB>EKKv'<'<=>? (# }}!1!1"!5!A**  s ,C00/Dc|yt|tr$t|ts|j|||yt|tr|j |||yy)z {'type': ['dict', 'string'], 'anyof': [{'check_with': 'schema'}, {'check_with': 'bulk_schema'}]} N)r\rr (_BareValidator__validate_schema_sequencer'_BareValidator__validate_schema_mapping)rrArrs r _validate_schemazBareValidator._validate_schemasR >  eX &z%/K  + +E65 A w '  * *5&% @(r"c |j|}|j|j|}|j||df||j d|j |j d|j } |||jds,|j|tj|jyy#t$r"|j|tjwxYw)NrArBrC)rrrArBrCFr)rrrArrRrBrCrNr|r MAPPING_SCHEMArFr/BAD_TYPE_FOR_SCHEMA)rrrAr field_rulesr%s r __validate_schema_mappingz'BareValidator.__validate_schema_mappings%%f---dkk%.@A -- *%///4;M;MN# t7G7GH .  U4;;%H E6#8#8):K:KLI#  KKv99 :  s =AB??+C*ctfdtt|D|j||df|j}|tdt |D|j d|jrJ|j|jgdg|j|tj|jyy)Nc3&K|]}|f ywrr-)rrkrAs r rz;BareValidator.__validate_schema_sequence..s>q6{>rrA)rrrArBc3*K|] \}}||f ywrr-)rrkr3s r rz;BareValidator.__validate_schema_sequence..s6TQ1a&6r4Frru) r9r5rgrrBrfrNrFrr|r SEQUENCE_SCHEMA)rrrArr%s ` r __validate_schema_sequencez(BareValidator.__validate_schema_sequences>E#e*,=>?-- *,, .  6Yu%56 7;;     , ,Y->->QC H KKv55y7H7H I r"cx|syt|tr|fn|}|D]m}|jj|}|0t||jxrt||j  }n|j d|}||}|smy|j|tj|jy)zM {'type': ['string', 'list'], 'check_with': 'type'} N validate_type) r\r rrRincluded_typesexcluded_typesrr|r BAD_TYPEr) r data_typerrr_typetype_definitionmatched type_handlers r _validate_typezBareValidator._validate_types   *9i @ i E#0044U;O*$?99L$UO,J,JKK $66N &u- * E6??+ ""$r"cR|df}t|tr|j||tfd|D}|||jd|j rJ|j |j gdg|j|tj|j yyy)rr c3&K|]}|f ywrr-rs r rz6BareValidator._validate_valuesrules..%s7AQK7rrFrruN) r\rrr9rNrFrr|r VALUESRULES)rrArrrr%s ` r _validate_valuesrulesz#BareValidator._validate_valuesruless }- eW %11$)7772I eDKK5 A  001B1BBL E6#5#5y7H7HI! &r"rrr)NFT)rr*r+r,r#rzryrbytes bytearrayrr r rrrr:r rr>rrorU staticmethodrOrQ classmethodrrr|rrrrrrpropertyrBrarCr rcrrrdrerrrrrrArrrrrrrrrrr rrrrrrrrCrDrrrRrSri__call__rkrerdr&_validate_allow_unknownrrrrrrrrrrrrrrrrrr_validate_metarrrrMr_validate_required_validate_require_allrfrrrr)r- __classcell__rXs@r r1r1;s-^* E !E9+=rB!)dWb9#K) |Lvw3":{B?vz26%)HecVR0 I<< MUN 1.f 9 9#(##O-b-^Y."<88.. 66,,00==333399//88..99//JJFF@@JJ66<< ]]::DD33  B B ', '"!0,B0P>&4 ++$ ++    &V)AV2 -(&TH ! 5%%T8 ; B.8G (L$J =E,BH(&6P P Q P > /r2N> 2H -"633NO56QR">H A"J$ %DJr"r1z7The rule's arguments are validated against this schema:c2eZdZdZfdZfdZdZxZS)InspectedValidatorzMetaclass for all validatorscd|dvr&|djd|ddjitt||g|S)Nr#rurtr)rNr#rTr;__new__)rqrVrXs r r=zInspectedValidator.__new__3sJ DG # GNNItAwqz'9'9: ;'5cADAAr"c,fd}tt |dic__|dD]W}|j dr#xj|t ddfz c_7jd|zj|<Yjrtdttd|dDtd |d Dz_ jdd }jx|d d d d d<|dd<djDD]}dj|d<ddic_ __|dD]}|j dr#xj|t ddfz c_ 7|j dr#xj|t ddfz c_kjd|zj|<dD]7}j|d }jx|d d d d d<|dd<9jjdd d d<i_j j#jj j#jy)Nc@tfdtDS)Nc3nK|],}|jdzdzr|tdzd.yw)rruN)rrg)rr"prefixs r rzNInspectedValidator.__init__..attributes_with_prefix..:s><<f s 23#f+/#$s25)r]dir)rArqs`r attributes_with_prefixz;InspectedValidator.__init__..attributes_with_prefix9s!S r"r-ritype_ _validate_z}Methods for type testing are deprecated, use TypeDefinition and the 'types_mapping'-property of a Validator-instance instead.c3 K|]}|ywrr-r!s r rz.InspectedValidator.__init__..VsM1QM rc3 K|]}|ywrr-r!s r rz.InspectedValidator.__init__..VsV AV rGr%rrtrArruc3,K|] }|dk7s |yw)r2Nr-r!s r rz.InspectedValidator.__init__..\sM1Q*_QMs Trvrgcoerce_default_setter_ _normalize_)rrBrQ)rTr;rUrvalidation_rulesrrg$_InspectedValidator__get_rule_schemarrr]checkersrzcoercersdefault_settersrxrrN)rqrVrC attributer"rrXs` r rUzInspectedValidator.__init__8s   #/68:B5!5/ ; I##G,''Ic'ln,E+GG'252G2G 9,3$$Y/    " " #  M(>|(LMMPUV -k:V Q      .w 7BE,,N!Xw"9-!YM 9 9M :D59C  &z 2 :FHRB c)3+B/ < I##I. 3y>+;!< >> %%&78## #6G2H2J(K'MM#585J5J!I-6'' 2  1 SD''-g6AFIll RAaDN7 #A &y 1AaDO S     01':1=    --. 001r"c"t||j}|i}n:t|vr|jtd} t |j }|s&|dk7r!td|jdddz|S#t $ri}Y7wxYw)Nrtr5z>No validation schema is defined for the arguments of rule '%s'rrur)rr#RULE_SCHEMA_SEPARATORrrstriprr)rq method_name docstringrs r __get_rule_schemaz$InspectedValidator.__get_rule_schemausC-55  F$ 1%OO,AB1E  %ioo&78+)99 $**32267     sB B B)r*r+r,r#r=rUrNr8r9s@r r;r;0s&B ;2zr"r; Validator)* __future__rastrrrrrwarningsrcerberusr cerberus.platformr r r r rrrrcerberus.schemarrrrcerberus.utilsrrrToyErrorHandlerrr&rr(r/objectr1rTr4r;rYr-r"r rcs&#     XW*F**,   I  9 oJFoJd/RWWt {],