JQgGddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z ddl mZmZmZmZGddeZGdd eZGd d e ZGd d eZGddeZGddeZGddeZGddeZGddeZeecZZdS))absolute_import)warn)errors) _str_typeCallableHashableMappingMutableMappingSequence)get_Validator_classvalidator_factory mapping_hashTypeDefinitionceZdZdS)_AbortN)__name__ __module__ __qualname__F/opt/imunify360/venv/lib64/python3.11/site-packages/cerberus/schema.pyrrsDrrceZdZdZdS) SchemaErrorz_ Raised when the validation schema is missing, has the wrong format or contains errors.N)rrr__doc__rrrrrs DrrceZdZdZfdZdZdZdZdZdZ dZ d Z d Z d Z ed Zed ZedZddZdZdZedZdZddZdZxZS)DefinitionSchemaz1A dict-subclass for caching of validated schemas.cvdtvrtdtatj}|tdtfdtdtfdd|t_tt| |S)NSchemaValidatorcallablerhashable)rr ) globalsr SchemaValidatorMixinr types_mappingcopyupdaterrrsuperr__new__)clsargskwargsr# __class__s rr'zDefinitionSchema.__new__%s GII - -/0ACWXXO+9>>@@M  .zH; K K .zH; K K    -:O )%s++33C888rcdt|tstd||_t|tr|j||}t|tsK t|}n:#t$r-ttj |wxYwt||_t!d|jtj|||_||}||||_dS)z :param validator: An instance of Validator-(sub-)class that uses this schema. :param schema: A definition-schema as ``dict``. Defaults to an empty one. z0validator argument must be a Validator-instance.N) allow_unknown error_handler target_schematarget_validator) isinstancer RuntimeError validatorrschema_registrygetr dict ExceptionrrSCHEMA_ERROR_DEFINITION_TYPEformatSchemaValidationSchemavalidation_schemarSchemaErrorHandlerschema_validatorexpandvalidateschema)selfr3r@s r__init__zDefinitionSchema.__init__4s1)%8%:%:;; VTUU U" fi ( ( C.2266BBF&'** V Vf V V V!&"E"L"LV"T"TUUU V"8 !B!B / 0 3 & ! ! ! V$$ f s 9B 7Cc|j} ||=|j|=dS#t$rtd|zt$r}|d}~wwxYw)Nz Schema has no field '%s' defined)r@r$ ValueErrorrr7)rAkey _new_schemaes r __delitem__zDefinitionSchema.__delitem__Usk&&((  !C  C    H H H@3FGG G   G s(%A AAc|j|SN)r@)rAitems r __getitem__zDefinitionSchema.__getitem__`s{4  rc*t|jSrJ)iterr@rAs r__iter__zDefinitionSchema.__iter__csDK   rc*t|jSrJ)lenr@rOs r__len__zDefinitionSchema.__len__fs4;rc t|SrJ)strrOs r__repr__zDefinitionSchema.__repr__is4yyrc|d|id}|||i||j|<dSNr)r>r?r@)rArEvalues r __setitem__zDefinitionSchema.__setitem__lsD QJ''* sEl###  CrcNt|drt|jSdS)Nr@zNo schema data is set yet.)hasattrrUr@rOs r__str__zDefinitionSchema.__str__qs* 4 " " 0t{## #//rcf||j|jSrJ)r+r3r@r$rOs rr$zDefinitionSchema.copyws&~~dndk.>.>.@.@AAArc ||}||}n#t$rYnwxYw||}|SrJ)_expand_logical_shortcuts_expand_subschemasr7_rename_deprecated_rulenames)r(r@s rr>zDefinitionSchema.expandzsi 226::F++F33FF    D 11&99 s *- ::cd|D]q\}}fd|DD]]}|dd\}}||gi||D]}||||i ||=^r|S)z Expand agglutinated rules in a definition-schema. :param schema: The schema-definition to expand. :return: The expanded schema-definition. cVt|to|dS)N)allof_anyof_noneof_oneof_)r1r startswith)xs r is_of_rulez>DefinitionSchema._expand_logical_shortcuts..is_of_rules,a++ 911 rc*g|]}| |Srr).0rjrks r z>DefinitionSchema._expand_logical_shortcuts..s&>>>! 1 >A>>>r_)itemssplitr%append) r(r@fieldrulesof_ruleoperatorrulerYrks @rr`z*DefinitionSchema._expand_logical_shortcutss    #LLNN # #LE5>>>>u>>> # #!(sA!6!6$ h^,,,"7^::E(O**D%=9999'NN  #  rc fd}fd}D]5|sng|r+|dd<n2|ddidd<dD]>}|vr2|d|id|<?dD]|}|vrpt|ts.g}|D]2}||d|id3||<}7S)NcNtto dvS)Nr@r1r rtr@srhas_schema_rulez.has_schema_rules%fUmW55S(fUm:S Src tddDS#t$rYdSwxYw)zw Tries to determine heuristically if the schema-constraints are aimed to mappings. c3@K|]}t|tVdSrJr{rmrjs r zRDefinitionSchema._expand_subschemas..has_mapping_schema..s=/0Jq'**rr@F)allvalues TypeErrorr|srhas_mapping_schemaz?DefinitionSchema._expand_subschemas..has_mapping_schemaso  4:5M(4K4R4R4T4T   uu s6: AAr@r) keysrules valuesrules keyschema valueschema)allofanyofrqnoneofoneof)r>r1r rs)r(r@r}rrxnew_rules_definitionrKrts ` @rraz#DefinitionSchema._expand_subschemass T T T T T T       ? ?E"?$$ V##%% V*-**VE]85L*M*Mu h''*-**ax9P5Q*R*RST*Uu h'Q R R6%=((*-**at9L5M*N*Nq*QF5M$'F ? ?6%=((%fUmD&98DD! +-( &u d 3NN,33CJJ4y4I4I!4LMMMM*>F5M$' ? rNc8|j||SrJ)r@r5)rArKdefaults rr5zDefinitionSchema.gets{tW---rc4|jSrJ)r@rqrOs rrqzDefinitionSchema.itemss{  """rcX ||}|j}||||||_dS#t $r-t tj |t$r}|d}~wwxYwrJ) r>r@r$r%r?rDrrr8r9r7)rAr@rFrGs rr%zDefinitionSchema.updates &[[((F+**,,K   v & & & MM+ & & & &DKKK  R R RfAHHPPQQ Q   G sAA##?B)"B$$B)c^|D]\}}t|trdD]y\}}||vr ||vrtdt d||t ||||||<|||z|S)N))rr)r3 check_with)rrzTThe rule '{new}' is also present with its old name '{old}' in the same set of rules.zrThe rule '{old}' was renamed to '{new}'. The old name will not be available in the next major release of Cerberus.)oldnew)rqr1rUr2rr9DeprecationWarningpop)r@rtrurrs rrbz-DefinitionSchema._rename_deprecated_rulenamess"LLNN ' 'LE5%%%  ' 'S e##%<<&A  &3C 8 8&  &,E]3%7u c"u !!#&&&&+ '. rc8t|j|_dSrJ)r:r3r;rOs rregenerate_validation_schemaz-DefinitionSchema.regenerate_validation_schemas!7!G!Grc||j}t|t|jjf}||jjvr6|||jj|dSdS)ap Validates a schema that defines rules against supported rules. :param schema: The schema to be validated as a legal cerberus schema according to the rules of the assigned Validator object. Raises a :class:`~cerberus.base.SchemaError` when an invalid schema is encountered. N)r@rr3r#_valid_schemas _validateadd)rAr@_hashs rr?zDefinitionSchema.validatesx >[Ff%%|DN4P'Q'QR 5 5 5 NN6 " " " N ) - -e 4 4 4 4 4 6 5rct|tr |jj||}i}|D]s\}}t|trt ||||<9i}|D]\}}|||dd<|||<t||dst|jj dS)N roF normalize) r1rr3r4r5rqrules_set_registryreplacer=rr)rAr@ test_schemartru test_rulesrx constraints rrzDefinitionSchema._validate s fi ( ( H^377GGF "LLNN 0 0LE5%++ 0%7%;%;E5%I%I E"" (- DD$D*9CJt||C5566%/ E""$$[E$BB <d3:;; ; < r`rar5rqr% staticmethodrbrr?r __classcell__r+s@rrr"s;; 9 9 9 9 9B ! ! !!!!!!!   !!! 000 BBB  [ [,%%[%N....### & & &\<HHH5555 <<<<<<.s,>>1z!X..>>>>>>rz)All dependencies must be a hashable type.) r1rr rrrr r document_path)rArtrYr3paths r_check_with_dependenciesz-SchemaValidatorMixin._check_with_dependenciesus  eY ' ' O D w ' ' O11$%'78"2I 9Ue444 / I-..... / / x ( ( O>>>>>>> O)UH4 D"MNNNNN O O O Orc`t|D]\}}|||f|dSrJ) enumerater)rArtrYir@s r_check_with_itemsz&SchemaValidatorMixin._check_with_itemssD"5)) = =IAv  ( (%V < < < < = =rc |||}n#t$rYdSwxYwt|t|jjf}||jjvrdS||d|j}|||d|j r| |j dS|jj |dS)NrFr) &_handle_schema_reference_for_validatorrrr0r#rrroot_allow_unknown_expand_rules_set_refsrrr)rArtrYrr3s r_check_with_schemaz'SchemaValidatorMixin._check_with_schemas ??uMMEE    FF e$$l43H3V&W&WX D)8 8 8 F-- T=T.    $--e44FFFF   < KK ) * * * * *  ! 0 4 4U ; ; ; ; ;s  ''c&t|trt|fnt|}|t|jjz }|r>||dd|dSdS)NzUnsupported types: {}z, )r1rrr0typesrr9join)rArtrYinvalid_constraintss r_check_with_typez%SchemaValidatorMixin._check_with_types!+E9!=!=MUH 3u::#c$*?*E&F&FF   KK.55dii@S6T6TUU       rci}|D]B\}}t|tr#|jj|||<=|||<C|SrJ)rqr1rr0rr5)rAr@resultkvs rrz+SchemaValidatorMixin._expand_rules_set_refsscLLNN  DAq!Y''  1DHHKKq q  rc@t|ts|S||jvrt|j||jj|}|;|j|fz}| |d |t|S)NzSchema definition {} not found.) r1rrrrr0r4r5rrr9)rArtrYrrs rrz;SchemaValidatorMixin._handle_schema_reference_for_validators%++ L D* * *L ""5)))*:>>uEE  %0D KK?FFuMM N N NLrct|ts"||tjdS||d|jj}|D]}td|it|jj f}||jj vr;||d|j r||j j|jj |dS)z2{'allowed': ('allof', 'anyof', 'noneof', 'oneof')}NFrrr) r1r rrBAD_TYPErr0validation_rulesrr#rrr)rArxrtrYr3 constraintsrs r_validate_logicalz&SchemaValidatorMixin._validate_logicals %**  KKv / / / F--(9.  ! @ @Kh 455T2@AAE-<<< IkU 3 3 3 3  @ I-....%488???? @ @r)rrrrrBpropertyrrr/r0rrrrrrrrrrs@rr"r"6s6 DDDDD 44X411X1--X-00X0<<<@OOO ===<<<&   @@@@@@@rr"cBeZdZdZifdZdZdZdZdZd dZ d Z dS) Registryz A registry to store and retrieve schemas and parts of it by a name that can be used in validation schemas. :param definitions: Optional, initial definitions. :type definitions: any :term:`mapping` c>i|_||dSrJ)_storageextend)rA definitionss rrBzRegistry.__init__s!  K     rc@|||j|<dS)aQ Register a definition to the registry. Existing definitions are replaced silently. :param name: The name which can be used as reference in a validation schema. :type name: :class:`str` :param definition: The definition. :type definition: any :term:`mapping` N)_expand_definitionr)rAnamers rrz Registry.adds$#55jAA drc|jS)z_ Returns a :class:`dict` with all registered definitions mapped to their name. )rrOs rrz Registry.alls }rc8|jdS)z&Purge all definitions in the registry.N)rclearrOs rrzRegistry.clears rct|D]\}}|||dS)a Add several definitions at once. Existing definitions are replaced silently. :param definitions: The names and definitions. :type definitions: a :term:`mapping` or an :term:`iterable` with two-value :class:`tuple` s N)r6rqr)rArrrs rrzRegistry.extendsM!%[ 1 1 7 7 9 9 ' ' D* HHT: & & & & ' 'rNc8|j||S)z Retrieve a definition from the registry. :param name: The reference that points to the definition. :type name: :class:`str` :param default: Return value if the reference isn't registered. )rr5)rArrs rr5z Registry.get s}  w///rcF|D]}|j|ddS)z Unregister definitions from the registry. :param names: The names of the definitions that are to be unregistered. N)rr)rAnamesrs rremovezRegistry.removes8 * *D M  dD ) ) ) ) * *rrJ) rrrrrBrrrrr5rrrrrrs$&!!!! B B B  ' ' '0000*****rrc$eZdZedZdS)SchemaRegistryc6t|SrJrr>r(rs rrz!SchemaRegistry._expand_definitions&&z222rNrrrrrrrrrrs-33[333rrc$eZdZedZdS)RulesSetRegistrycFtd|idSrXrrs rrz#RulesSetRegistry._expand_definition%s&&:77::rNrrrrrr$s-;;[;;;rrN) __future__rwarningsrcerberusrcerberus.platformrrrr r r cerberus.utilsr r rrr7rrrrr:objectr"rrrr4rrrrr s&&&&&&     Y        )   y<y<y<y<y<~y<y<y