a ki]-@sLddlZddlmZmZmZmZmZmZmZddl m Z m Z ddl m Z ddZddZd d Zd d Zd dZddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Z d+d,Z!d-d.Z"d/d0Z#d1d2Z$d3d4Z%d5d6Z&d7d8Z'd9d:Z(d;d<Z)d=d>Z*d?d@Z+dAdBZ,dCdDZ-dS)EN) ensure_listequal extras_msgfind_additional_properties types_msgunbooluniq) FormatErrorValidationError) iteritemsc csb||dsdSt|D]D\}}t|D]2\}}t||r(|j||||dD] }|VqNq(qdSNobjectpath schema_path)is_typer researchdescend) validatorpatternPropertiesinstanceschemapattern subschemakverrorr:/usr/lib/python3.9/site-packages/jsonschema/_validators.pyrs   rccs8||dsdS|D]}|j||dD] }|Vq&qdS)Nr )rr)rr)r propertyNamesrrpropertyrrrrr s  r c cs||dsdStt||}||drV|D]$}|j||||dD] }|VqFq.n~|s|rd|vrt|d}t|dkrd}nd}ddttt||dtt|f}t |Vnd }t |t |VdS) Nr rrZdoesZdoz&%s %s not match any of the regexes: %s, z8Additional properties are not allowed (%s %s unexpected)) rsetrrsortedlenjoinmapreprr r) rZaPrrextrasZextrarpatternsZverbrrradditionalProperties)s*      r-ccs||dsdS||drXtt||D]*\\}}}|j||||dD] }|VqHq*n.t|D]$\}}|j|||dD] }|Vqxq`dS)Narrayrr")rzip enumerater)ritemsrrindexitemrrrrrr1Es    r1c cs||dr ||didr$dSt|dg}||dr|t||d|dD]$\}}|j|||dD] }|VqlqTnF|st|t|dgkrd}t|t|t|dgdVdS)Nr.r1r )startr"z3Additional items are not allowed (%s %s unexpected))rgetr'r0rr r)rZaIrrZ len_itemsr2r3rrrradditionalItemsUs"   r6ccst||std|fVdS)Nz%r was expected)rr )rconstrrrrrr7is r7c#s<|dsdStfdd|Ds8td|fVdS)Nr.c3s|]}|VqdSNis_valid).0elementcontainsrrr rzcontains..z+None of %r are valid under the given schema)ranyr )rr>rrrr=rr>ns  r>ccs.||dsdS||kr*td||fVdS)Nnumberz-%r is less than or equal to the minimum of %rrr rminimumrrrrrexclusiveMinimumxs rFccs.||dsdS||kr*td||fVdS)NrBz0%r is greater than or equal to the maximum of %rrCrmaximumrrrrrexclusiveMaximums rIccs.||dsdS||kr*td||fVdS)NrBz!%r is less than the minimum of %rrCrDrrrrEs   rEccs.||dsdS||kr*td||fVdS)NrBz$%r is greater than the maximum of %rrCrGrrrrHs   rHccsR||dsdSt|tr0||}t||k}n||}|rNtd||fVdS)NrBz%r is not a multiple of %r)r isinstancefloatintr )rZdBrrZquotientZfailedrrr multipleOfs  rMccs,||dr(t||kr(td|fVdS)Nr.%r is too shortrr'r rZmIrrrrrminItemssrQccs,||dr(t||kr(td|fVdS)Nr.%r is too longrOrPrrrmaxItemssrSccs,|r(||dr(t|s(td|fVdS)Nr.z%r has non-unique elements)rrr )rZuIrrrrr uniqueItemss rTccs.||dr*t||s*td||fVdS)Nstringz%r does not match %r)rrrr )rZpatrnrrrrrrs   rc csX|jdurTz|j||Wn6tyR}zt|j|jdVWYd}~n d}~00dS)N)cause)Zformat_checkercheckr r messagerV)rformatrrrrrrrYs  rYccs,||dr(t||kr(td|fVdS)NrUrNrOrZmLrrrrr minLengthsr[ccs,||dr(t||kr(td|fVdS)NrUrRrOrZrrr maxLengthsr\c cs||dsdSt|D]d\}}||vr*q||dr`|D]"}||vr:d}t|||fVq:q|j|||dD] }|VqpqdS)Nr r.z%r is a dependency of %rr)rr r r) r dependenciesrrr!Z dependencyeachrXrrrrr^s   r^c#s`|dks|dkrBt|tfdd|Dr\td||fVn||vr\td||fVdS)Nrr#c3s|]}t|kVqdSr8)r)r;r_Zunbooledrrr?r@zenum..z%r is not one of %r)rallr )rZenumsrrrr`renums rbccst|jdd}|dur\|j|(}|||D] }|Vq0Wdq1sP0YnP|j|\}}|j|z&|||D] }|VqW|jn |j0dS)Nresolve)getattrZresolverZ resolvingrrcZ push_scopeZ pop_scope)rrefrrrcZresolvedrZscoperrrres(  rec#s4t|}tfdd|Ds0tt|VdS)Nc3s|]}|VqdSr8)r)r;typerrrrr?r@ztype..)rrAr r)rtypesrrrrgrrf srfccsP||dsdSt|D]2\}}||vr|j|||||dD] }|Vq>qdSr )rr r)r propertiesrrr!rrrrrris  riccs4||dsdS|D]}||vrtd|VqdS)Nr z%r is a required propertyrC)rrequiredrrr!rrrrj#s  rjccs,||dr(t||kr(td|fVdS)Nr z"%r does not have enough propertiesrOrZmPrrrrr minProperties+srlccs<||dsdS||dr8t||kr8td|fVdS)Nr z%r has too many propertiesrOrkrrr maxProperties2s rmccs2t|D]$\}}|j|||dD] }|Vq qdS)Nr])r0r)rallOfrrr2rrrrrrn9srnccsTg}t|D].\}}t|j|||d}|s0qP||q td|f|dVdS)Nr].%r is not valid under any of the given schemascontext)r0listrextendr )ranyOfrr all_errorsr2rerrsrrrrt?s rtc #st|}g}|D]2\}}tj||d}|s8|} qX||qtdf|dVfdd|D} | r| | ddd| D} td | fVdS) Nr]rorpcs g|]\}}|r|qSrr9)r;isrgrr \r@zoneOf..r$css|]}t|VqdSr8)r*)r;rrrrr?_r@zoneOf..z%r is valid under each of %s)r0rrrrsr appendr() roneOfrrZ subschemasrur2rrvZ first_validZ more_validZreprsrrgrr{Ms&    r{ccs"|||rtd||fVdS)Nz%r is not allowed for %r)r:r )rZ not_schemarrrrrnot_es  r|ccsj|||r:d|vrf|d}|j||ddD] }|Vq,n,d|vrf|d}|j||ddD] }|VqZdS)Nthenr]else)r:r)rZ if_schemarrr}rZelse_rrrif_ls  r).rZjsonschema._utilsrrrrrrrZjsonschema.exceptionsr r Zjsonschema.compatr rr r-r1r6r7r>rFrIrErHrMrQrSrTrrYr[r\r^rbrerfrirjrlrmrnrtr{r|rrrrrsF$