bg vTdZddlZddlZ ddlmZn#e$r ddlmZYnwxYwdZgdZGdde Z Gdd e Z Gd d e Z Gd d e Z Gdde ZGdde ZGddeZGddeZGddeZGddeZed\ZZZZZZdZdZGddeZGdd eZGd!d"eZ Gd#d$e Z!Gd%d&eZ"Gd'd(eZ#d)Z$d*Z%dS)+zschema is a library for validating Python data structures, such as those obtained from config-files, forms, external services or command-line parsing, converted from JSON/YAML (or something else) to Python data-types.N) ExitStackz0.7.5)SchemaAndOrRegexOptionalUse ForbiddenConstLiteral SchemaErrorSchemaWrongKeyErrorSchemaMissingKeyErrorSchemaForbiddenKeyErrorSchemaUnexpectedTypeErrorSchemaOnlyOneAllowedErrorc0eZdZdZddZedZdS)r zError during Schema validation.Nct|tur|n|g|_t|tur|n|g|_t||jdSN)typelistautoserrors Exception__init__code)selfrrs =/opt/cloudlinux/venv/lib64/python3.11/site-packages/schema.pyrzSchemaError.__init__%sZ"5kkT11UUw $V  4 4ff6( 4+++++cd}|d|jD}|d|jD}|rd|Sd|S)zW Removes duplicates values in auto and error list. parameters. cNtjfd|DS)zB Utility function that removes duplicate. c2g|]}|v||Sr#).0xseenseen_adds r z2SchemaError.code..uniq..8s*HHH!atmmHHQKKmAmmmr)setadd)seqr&r's @@runiqzSchemaError.code..uniq1s355DxHHHHHHsHHH Hrc3K|]}||V dSrr#r$is r z#SchemaError.code..:s"??a??rc3K|]}||V dSrr#r.s rr0z#SchemaError.code..;s"BBAM!MMMMBBr )rrjoin)rr,data_set error_lists rrzSchemaError.code*s I I I4??4:?????TBBT[BBBBB  )99Z(( (yy"""rr)__name__ __module__ __qualname____doc__rpropertyrr#rrr r "sI)),,,, ##X###rr ceZdZdZdS)rzXError Should be raised when an unexpected key is detected within the data set being.Nr6r7r8r9r#rrrrAs DrrceZdZdZdS)rz`Error should be raised when a mandatory key is not found within the data set being validatedNr<r#rrrrHs   DrrceZdZdZdS)rzOError should be raised when an only_one Or key has multiple matching candidatesNr<r#rrrrOsYYDrrceZdZdZdS)rzError should be raised when a forbidden key is found within the data set being validated, and its value matches the value that was specifiedNr<r#rrrrUsTT DrrceZdZdZdS)rz`Error should be raised when a type mismatch is detected within the data set being validated.Nr<r#rrrr\s!! Drrc:eZdZdZdZdZedZdZdS)rzS Utility function to combine validation directives in AND Boolean fashion. cr||_t|hds6hd|}t dt |z|d|_|dd|_|dt|_ dS)N>errorschemaignore_extra_keyszUnknown keyword arguments %rrCrEFrD) _argsr)issubset difference TypeErrorrget_error_ignore_extra_keysr_schema)rargskwdiffs rrz And.__init__hs 2ww H H HII I;;;FFrJJD:T$ZZGHH HffWoo "$&&).ss(=Z=Z!d1gg=Z=Z=Z=Z=Z=Zr)) __class__r6r3rFrs r__repr__z And.__repr__rs;>222DII=Z=Ztz=Z=Z=Z4Z4Z4Z4Z[[rc|jS)zThe provided parameters)rFrZs rrNzAnd.argsus zrc PfdjDD]}|j|fi|}|S)z Validate data using defined sub schema/expressions ensuring all values are valid. :param data: to be validated with sub defined schemas. :return: returns validated data cTg|]$}|jj%SrCrErMrKrLr$srs rr(z And.validate..1tttde$,,q tG^,__tttr)rFvalidate)rdatakwargsrcs` rrez And.validatezsMutttimisttt . .A1:d--f--DD rN) r6r7r8r9rr[r:rNrer#rrrrcsi000\\\X     rrc.eZdZdZfdZdZdZxZS)rzNUtility function to combine validation directives in a OR Boolean fashion.c|dd|_d|_tt|j|i|dS)Nonly_oneFr)poprj match_countsuperrrrrNrgrYs rrz Or.__init__sF :u55  b$ $1&11111rch|jdko|j}d|_|rtdd|zzgdS)Nrz There are multiple keys present zfrom the %r condition)rlrjr)rfaileds rresetzOr.resetsQ!A%7$-  s+-ORilpRp-p,qrr r s src vgg}}fdjDD]c} |j|fi|}xjdz c_jdkr jrn/|cS#t$r}||jz }||jz }Yd}~\d}~wwxYwt d|g|zjrj|ndg|z)z Validate data using sub defined schema/expressions ensuring at least one value is valid. :param data: data to be validated by provided schema. :return: return validated data if not validation cTg|]$}|jj%Sr_rarbs rr(zOr.validate..rdrrpNz did not validate ) rFrerlrjr rrrKformat)rrfrgrrrc validation_xs` rrez Or.validatesBvttttimisttt $ $A $'QZ7777   A%  #a''DM'E!!!! $ $ $!")# $)-tt 4 5 =)- >T[   % % %$ ?& H   s0AA A:A55A:)r6r7r8r9rrrre __classcell__rYs@rrrsc22222 sss        rrcDeZdZdZgdZd dZdZedZdZ dS) rzI Enables schema.py to validate string using regular expressions. ) zre.ASCIIzre.DEBUGz re.VERBOSEz re.UNICODEz re.DOTALLz re.MULTILINEz re.LOCALEz re.IGNORECASEz re.TEMPLATErNc||_dtdt|D}|rdd|z|_nd|_t j|||_||_ dS)NcDg|]\}}|dk tj|S)0)rNAMES)r$r/fs rr(z"Regex.__init__..s5   #q!RSWZRZRZEKNRZRZRZrz{0:09b}z, flags=|)flags) _pattern_str enumerateruintr3 _flags_namesrecompile_patternrK)r pattern_strrrC flags_lists rrzRegex.__init__s'  '01A1A#e**1M1M'N'N     # *SXXj-A-A AD   "D  ;e<<<  rc>|jjd|j|jdSNrRrX)rYr6rrrZs rr[zRegex.__repr__s)!^444d6G6GIZIZIZ[[rc|jS)z2The pattern for the represented regular expression)rrZs rrzRegex.pattern_strs   rc |j} |j|r|St|d||r||nd#t $rtd|z|wxYw)z Validated data using defined regex. :param data: data to be validated :return: return validated data.  does not match Nz%r is not string nor buffer)rKrsearchr rurI)rrfrges rrezRegex.validates K G}##D)) h !DDD$$"G[\IfRVbfggg G G G;dBAFF F GsA,AA/)rN) r6r7r8r9r~rr[r:rrer#rrrrs   E    \\\!!X!GGGGGrrc&eZdZdZddZdZdZdS)r zu For more general use cases, you can use the Use class to transform the data while it is being validate. Ncdt|std|z||_||_dS)NzExpected a callable, not %r)callablerI _callablerK)r callable_rCs rrz Use.__init__s9 "" G9IEFF F" rc0|jjd|jdSr)rYr6rrZs rr[z Use.__repr__s>222DNNNCCrc  ||S#t$rH}tdg|jz|jr|j|ndg|jzd}~wt $rR}t|j}t|d|d||jr|j|ndd}~wwxYw)NrR ) raised )rr rrKrur BaseException _callable_str)rrfrgr%rs rrez Use.validates t>>$'' ' p p ptfqw.T[1b1C1CD1I1I1I^b0cfgfn0noo o t t tdn--AAAAtttQQ?]a]hArASASTXAYAYAYnrss s ts" CAA$$ C1A B>>Cr)r6r7r8r9rr[rer#rrr r sX  DDDtttttrr ct|ttttfvrt St|t urtStt|trtSt|trtSt|drtSt|rt StS)z#Return priority for a given object.re)rrtupler) frozensetITERABLEdictDICT issubclassTYPE isinstancer COMPARABLEhasattr VALIDATORrCALLABLErcs r _priorityrs Aww4Y/// Aww$ $q''4   !Wq*{{rc ~tj|}t|jdkr |S|di|S)Nrr#)inspect signaturelen parameters)rrgrcs r_invoke_with_optional_kwargsrsD!A 1<Aqss 1;;v;;rceZdZdZddZdZedZedZedZ ed Z e d Z e d Z d Zd ZdZddZdS)rz~ Entry point of the library, use this class to instantiate validation schema for the data that will be validated. NFc||_||_||_||_||_||_|r|t ddSdS)Nz+Schema used as reference should have a name)rMrKrL_name _description as_reference ValueError)rrDrCrEname descriptionrs rrzSchema.__init__!s[  "3 '(  LDLJKK K L LLLrc0|jjd|jdSr)rYr6rMrZs rr[zSchema.__repr__,s>222DLLLAArc|jSrrMrZs rrDz Schema.schema/ |rc|jSrrrZs rrzSchema.description3   rc|jSr)rrZs rrz Schema.name7s zrc|jSr)rLrZs rrEzSchema.ignore_extra_keys;s &&rct|trt|jdz St|trt|jdzSt|S)z'Return priority for a given key object.g?)rHookrrMrrs r_dict_key_priorityzSchema._dict_key_priority?s^ a   .QY''#- - a " " .QY''#- -||rcRtfdttfDS)zDReturn True if the given key is optional (does not have to be found)c38K|]}t|VdSrr)r$ optional_typercs rr0z+Schema._is_optional_type..Ks-VVM:a//VVVVVVr)anyrrrs`r_is_optional_typezSchema._is_optional_typeHs.VVVVhPTEUVVVVVVrc F |j|fi|dS#t$rYdSwxYw)zvReturn whether the given data has passed all the validations that were specified in the given schema. TF)rer )rrfrgs ris_validzSchema.is_validMsL  DM$ ) )& ) ) )4   55 s   cJ|jrd|j|}|S)z If a custom schema name has been defined, prepends it to the error message that gets raised when a schema error occurs. z {0!r} {1!s})rru)rmessages r_prepend_schema_namezSchema._prepend_schema_nameXs+ : @#**4:w??Grc j}j}j}j}t |t r|j}t|}|tkrY|t||j |fi}t||||dt|fd|DS|tkr t}|t|j |fi}t|} t} t!|j} | D],} t%| dr|| j-|5t!|d} | D]2\}}| D](} || } || |j |fi}t | t,rC |||j |fi}n#t.$rYawxYw| |||} ||||j |fi}|| |<| | nv#t.$rX}d|z}|}t/|g|jz|r||ndg|jzd}~wwxYw#t.$rY&wxYw4 dddn #1swxYwYtfd |D}|| s|| z }d d t!|t@D}d tC|d |}|}tE||r||ndjstG| tG|krt|$t| $z }d dt!|t@D}dtC|d|d|}|}tK||r||ndtd|D| z }|D]7}tM|j'rtQ|j'fin|j'| |j)<8| S|tTkrzt ||r"t |tVr |tXks|S|d|j-}|}t]||r||nd|t^kr |j |fiS#t.$r>}t/dg|jz|r||ndg|jzd}~wt`$rK}|d|d|}|}t/||r||ndd}~wwxYw|tbkrte|} ||r|Sn#t.$r>}t/dg|jz|r||ndg|jzd}~wt`$rK}|d|d|}|}t/||r||ndd}~wwxYw|d|d}|}t/||r||nd||kr|S|d|}|}t/||r||nd)N)rC)rCrDrEc34K|]}j|fiVdSr)re)r$drgos rr0z"Schema.validate..ns7DD!jaj55f55DDDDDDr)keyrrc8t|dtS)Nrp)rrvalues rz!Schema.validate..|sJuUVxY]D^D^rr`zKey '%s' error:c3FK|]}||VdSr)r)r$krs rr0z"Schema.validate..s6IIt/E/Ea/H/HI1IIIIIIrrSc34K|]}t|VdSrrUr$rs rr0z"Schema.validate..s(*[*[q477*[*[*[*[*[*[rz Missing keyz: c34K|]}t|VdSrrUrs rr0z"Schema.validate..s((W(WQa(W(W(W(W(W(Wrz Wrong key  in c3dK|]+}t|tt|d'|V,dS)defaultN)rrrrs rr0z"Schema.validate..sA]]:a+B+B]wqR[G\G\]1]]]]]]rz should be instance of z .validate(rrRz) should evaluate to Truer)3rYrMrKrLrr rDrrrrerrrrr)sortedrrcallbackrritemsrr handlerr*rrrurrGr3rV _plural_srrkeysrrrrrrboolrr6rrrrr)rrfrgrrcrr/flavor exitstacknewcoverage sorted_skeysskey data_itemsrrsvaluenkeynvaluer%rrrequired missing_keyss_missing_keys wrong_keys s_wrong_keysdefaultsrrrs` ` @rrezSchema.validateas L K  # a ! ! A1 X  466$q''+++4TDDVDDDAQvCCCA4::DDDDDtDDDDD D T>>! I166$a(((1$AA&AAD$t**,,CuuH!!)@AAAL$ 3 34))3&&tz222# *# *#DJJLL6^6^___ ", * *JC ,**!"4*#A66$a#8#8#8#A##P#P#P#PD *$55*!--MVVF!-D-D-D-Me-^-^W]-^-^FF'2!-!-!-$,H!- $ T4 ; ; ; ; !*-bVVF!WX-Y-Y-Y-bch-s-slr-s-sF 17CI$,LL$6$6$6$)E(3!w!w!w(9D(@A.2.G.G.J.JG*5wi!'6I^_LiAHHUYNNNeiKjmnmuKu*v*v$v!w) +!!! D! *# *# *# *# *# *# *# *# *# *# *# *# *# *# *# *HIIIIaIIIIIH$$X.. T'(2 !%*[*[F>>DQQQ]]a]]]]]`hhH# M M^fgngv^w^w$M#?#Z#ZSY#Z#Z#Z~E~MGK  J T>>$"" XJtT,B,B XqCxx ;?44L33G<</19V$RVWWW Y   J!qz$11&111 ` ` `!4&17"2q5RQXXd^^^d4SVWV^4^___  J J J9:DDD!!D33G<<!'Q+H188D>>>DIII J X  a  A J1T77 K  ` ` `!4&17"2q5RQXXd^^^d4SVWV^4^___  J J J01444;33G<<!'Q+H188D>>>DIII J;._json_schema.._create_or_use_refs  )>)((d6+*;*;*=*=#>#>??@@%%#.DL&& 3v;;.F*0DL'"F++rc|tkrdS|tkrdS|tkrdS|tkrdS|tkrdS|t krdSdS)z-Return the JSON schema name for a Python typestringintegernumberbooleanarrayobject)rrfloatrrr) python_types r_get_type_namez@Schema.json_schema.._json_schema.._get_type_namesg#%%#8 C''$9 E))#8 D(($9 D(("7 D((#8xrc.|5t|ttttt t fvr|St|tttfvrt |St|tr|j St|S)z\Attempt to convert a constant value (for "const" and "default") to a JSON serializable value) rrrrrrrrr)rrr rDrs r _to_json_typez?Schema.json_schema.._json_schema.._to_json_type st=DKKCeT4QU3V$V$V L;;5#y"999;;&eW--( <'5zz!rcBt|s ||S|S)NrEr)rcrErs r _to_schemaz._json_schema.._to_schemas1!!V,,J!6!7HIIIIrrF)rallow_referencez#/definitions/rrrrpr)rrc3,K|]}|tkVdSr)r)r$prioritys rr0z;Schema.json_schema.._json_schema..>s'iih8z1iiiiiirc,g|]}t|Sr#)r)r$rs rr(z._json_schema..>s!BhBhBhX]9UCSCSBhBhBhrcZg|](}t|trt|n|)Sr#)rr r)r$rcs rr(z._json_schema..?s2$]$]$]QRz!W/E/E%LSVVV1$]$]$]rconstenumanyOfallOfr patternczt|tr|jS|tkp |tkS)z=Check if a key is broad enough to allow additional properties)rrrDrr)r!_key_allows_additional_propertiess rr$zSSchema.json_schema.._json_schema.._key_allows_additional_propertiesps<)#x88U'H'H'T'T T#&#:#>>rct|tr|jSt|tr|jSdS)zhGet the description associated to a key (as specified in a Literal object). Return None if not a LiteralN)rrrDr r)r_get_key_descriptions rr&zFSchema.json_schema.._json_schema.._get_key_descriptionwsH)#x88H';';CJ'G'G G)#w777'* 6#'4rct|tr|jSt|tr|jS|S)zcGet the name of a key (as specified in a Literal object). Return the key unchanged if not a Literal)rrrDr )r _get_key_names rr(z?Schema.json_schema.._json_schema.._get_key_namesG)#x88A'4}SZ'@'@ @)#w772'*z 1#&Jrr)rrrr)r propertiesradditionalPropertiesz'http://json-schema.org/draft-07/schema#)rz$schematitle definitions) rYrDrErrrrrrrrrallrNappendupdaterrrrrrrrrrrrrrrr)&rDrrrr rrrrcr/rreturn_description or_values any_of_valuesor_key new_value all_of_valuesand_key required_keysexpanded_schemaadditional_propertiesr sub_schemakey_namedefinition_name definitionrr&r(r$r _json_schemadefinitions_by_namerg schema_idr&rrs& ` @@@@@rr>z(Schema.json_schema.._json_schemas^F , , , , , , , ,$   " " "       A(Aq\\FM!,!B0B ! B/A m,@ 6#6@ ;&99979' 47C|F[`rw7x7x7x' 4(86;(F f%%T>>,:N1,=,=M&))x''-4M&)1vv{{1=jj1q>Q>Qbg1h1h1h g..Q!1=ffRVnn]b1c1c1c g.2&&miiBhBhabagBhBhBhiiiiiC$]$]VWV\$]$]$] y>>Q..5B]9Q<5P5PM'2#0009 f--)+ &'f@@F(4 ZZ5J5J[`(a(a(aI(B9M3Q3Q - 4 4Y ? ? ?}--22)00q1ABBBB5BM'223''V$&M#$6<<$0LGQ1G1GX]$^$^$^ $??y /M/M)00;;;=))Q..%,,]1-=>>>>1> g..z))-:]1-=-=M'**y((T!WW-=-=,4M&)/0}M),,~~,,%'M&(O,-) 2"2"%c400%$?????((((('''''1F0oIjIjknIoIo-%/Z#!%L%L%L #0=#5#5%h44"#-c8#<#<? - 4 4X > > >8D *5NbNbcfNgNg999OH5 *#x88tWS)=T=TtGT}MUVYVaMbMbVsUqrur}VIVIBHVIVIVIhkhsHtHt 9) D'"55"+3-""IU$.uRfRfgmRnRnJ"J"J" f0E0E F F"(($,*9(54I  S$$YCl%m%mnnn:8-1ZM'*&S35M-07J7P7P7R7RSS3HR m4_EE%%m44 4r)TNT)r)rr@rrgr>r?r&s````@@@r json_schemazSchema.json_schemaswvv O 5O 5O 5O 5O 5O 5O 5O 5O 5O 5O 5O 5b|D$'''r)NFNNF)F)r6r7r8r9rr[r:rDrrrE staticmethodrrrrrerAr#rrrrs; L L L LBBBX!!X!X''X'\WW\W   tFtFtFl^(^(^(^(^(^(rrcHeZdZdZeZfdZdZdZdZ xZ S)rz5Marker for an optional part of the validation Schema.c>|d|j}tt|j|i|||jurWt |jtkrtd|jd||_ t|j|_ dSdS)NrzaOptional keys with defaults must have simple, predictable values, like literal strings or ints. "z" is too complex.) rk_MARKERrmrrrrMrrIrrr)rrNrgrrYs rrzOptional.__init__s**Y 55&h&7777 $, & &&&*44i/3lll= #DL4<((DHHH ' &rc*t|jSr)rrMrZs r__hash__zOptional.__hash__sDL!!!rc|j|juo=t|d|jt|d|jko|j|jkS)Nr)rYgetattrrErM)rothers r__eq__zOptional.__eq__sO Neo - .i66'%TXT`:a:aa .  - rcft|jdr|jdSdS)Nrr)rrMrrrZs rrrzOptional.resets: 4< ) ) ! L    ! !r) r6r7r8r9rrErrGrKrrrxrys@rrrsv??fhhG ) ) ) ) )"""   !!!!!!!rrceZdZfdZxZS)rc|dd|_tt|j|i||j|_dS)NrcdSrr#)rNs rrzHook.__init__..s4r)rkrrmrrrMrrns rrz Hook.__init__sKzz)-?-?@@ "dD"D3F333<r)r6r7r8rrxrys@rrrs8         rrc4eZdZfdZedZxZS)r c\|j|d<tt|j|i|dS)Nr)_default_functionrmr rrns rrzForbidden.__init__s8 2y'i'888888rc.td|d||)NzForbidden key encountered: r)r)rrfrCs rrRzForbidden._default_functions#%%tttUYUY&Z\abbbr)r6r7r8rrBrRrxrys@rr r sZ99999cc\cccccrr cNeZdZddZdZdZedZedZdS)r Nc"||_||_dSr)rMr)rrrs rrzLiteral.__init__s 'rc|jSrrrZs r__str__zLiteral.__str__s |rc6d|jzdz|jpdzdzS)Nz Literal("z", description="rz"))rDrrZs rr[zLiteral.__repr__s)T[(+==AQAWUWX[___rc|jSrrrZs rrzLiteral.descriptionrrc|jSrrrZs rrDzLiteral.schemarrr) r6r7r8rrWr[r:rrDr#rrr r s((((```!!X!Xrr ceZdZfdZxZS)r c Jtt|j|fi||Sr)rmr re)rrfrgrYs rrezConst.validates-#eT#D33F333 r)r6r7r8rerxrys@rr r s8rr cNt|dr|jSt|S)Nr6)rr6r)rs rrrs)y*%%"!! y>>rc0t|dkrdndS)Nrprcr)r)sizeds rrr se**q..33b(r)&r9rr contextlibr ImportError contextlib2 __version____all__rr rrrrrrrrrr rangerrrrrrrrrrrr r r rrr#rrrfsOO &$$$$$$$&&&%%%%%%%%&    &#####)###>     +        K                k                &   F$ $ $ $ $ $ $ $ N6G6G6G6G6GF6G6G6Grttttt&ttt29>a5 HitX$Z(Z(Z(Z(Z(VZ(Z(Z(z !!!!!v!!!D     6   ccccccccf(F  )))))s  !!