
    /                         d dl Z d dlmZ d dlmZmZ d dlmZ d Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%y)#    N)_utils)FormatErrorValidationError)	iteritemsc              #      K   | j                  |d      sy t        |      D ]M  \  }}t        |      D ]:  \  }}t        j                  ||      s| j	                  ||||      D ]  }|  < O y wNobjectpathschema_path)is_typer   researchdescend)		validatorpatternPropertiesinstanceschemapattern	subschemakverrors	            )lib/third_party/jsonschema/_validators.pyr   r      sy     Xx0'(9:h'DAqyy!$&..yqg / E  K ( ;s   AA2#A2c           
   #   :  K   | j                  |d      sy t        t        j                  ||            }| j                  |d      r(|D ]"  }| j	                  ||   ||      D ]  }|  $ y |s|rd|v r|t        |d         }t        |      dk(  rd}nd}dj                  t        t        t        |                  d|d	dj                  t        t        |            }t        |       y d
}t        |t        j                  |      z         y y y w)Nr	   r   r      doesdo,  z not match any of the regexes: z8Additional properties are not allowed (%s %s unexpected))r   setr   find_additional_propertiesr   sortedlenjoinmapreprr   
extras_msg)	r   aPr   r   extrasextrar   patternsverbs	            r   additionalPropertiesr/      s    Xx0228VDEFX&E"**8E?BU*K L  F&(f%89:H6{a		#dF6N34		#dH-.E
 "%((NE!%&*;*;F*C"CDD Rs   DDc              #   4  K   | j                  |d      sy | j                  |d      r1t        |      D ]"  \  }}| j                  |||      D ]  }|  $ y t        t        |      |      D ]&  \  \  }}}| j                  ||||      D ]  }|  ( y w)Narrayr	   r   r
   )r   	enumerater   zip)r   itemsr   r   indexitemr   r   s           r   r4   r4   1   s     Xw/)$X.KE4"**4U*C D / ),Ih,?(G$MUD9"**ie +   )Hs   BBc              #     K   | j                  |d      r"| j                  |j                  di       d      ry t        |j                  dg             }| j                  |d      r6t        ||d  |      D ]"  \  }}| j	                  |||      D ]  }|  $ y |sjt        |      t        |j                  dg             kD  rBd}t        |t        j                  |t        |j                  dg             d        z         y y y w)Nr1   r4   r	   )startr   z3Additional items are not allowed (%s %s unexpected))r   getr%   r2   r   r   r   r)   )r   aIr   r   	len_itemsr5   r6   r   s           r   additionalItemsr<   A   s    h0&**Wb18<FJJw+,IX&$Xij%9KKE4"**4%*@ A L CMC

7B(?$@@Ehs6::gr+B'C'DEFG
 	
 ARs   DDc              #      K   | j                  |d      sy |j                  dd      r||k  }d}n||k  }d}|rt        |d|d|       y y w)NnumberexclusiveMinimumFzless than or equal toz	less than is z the minimum of r   r9   r   )r   minimumr   r   failedcmps         r   rB   rB   U   se     Xx0zz$e,W$%G#,4c7C
 	
    AAc              #      K   | j                  |d      sy |j                  dd      r||k\  }d}n||kD  }d}|rt        |d|d|       y y w)Nr>   exclusiveMaximumFzgreater than or equal tozgreater thanr@   z the maximum of rA   )r   maximumr   r   rC   rD   s         r   rH   rH   f   se     Xx0zz$e,W$(G#,4c7C
 	
 rE   c              #      K   | j                  |d      sy t        |t              r||z  }t        |      |k7  }n||z  }|rt	        |d|       y y w)Nr>   z is not a multiple of )r   
isinstancefloatintr   )r   dBr   r   quotientrC   s         r   
multipleOfrO   w   s[     Xx0"eb=X(*BhKLL s   AAc              #   p   K   | j                  |d      r t        |      |k  rt        |d       y y y w)Nr1    is too shortr   r%   r   r   mIr   r   s       r   minItemsrU      s8     7+H0B8=>> 1C+   46c              #   p   K   | j                  |d      r t        |      |kD  rt        |d       y y y w)Nr1    is too longrR   rS   s       r   maxItemsrY      s8     7+H0B(<== 1C+rV   c              #      K   |r:| j                  |d      r't        j                  |      st        |d       y y y y w)Nr1   z has non-unique elements)r   r   uniqr   )r   uIr   r   s       r   uniqueItemsr]      sB     
(G,KK!hHII " 	- 	   >A c              #      K   | j                  |d      r*t        j                  ||      st        |d|       y y y w)Nstringz does not match )r   r   r   r   )r   patrnr   r   s       r   r   r      s>     (H-IIeX&%HII ' 	.r^   c              #      K   | j                   	 | j                   j                  ||       y y # t        $ r-}t        |j                  |j
                         Y d }~y d }~ww xY ww)N)cause)format_checkercheckr   r   messagerc   )r   formatr   r   r   s        r   rg   rg      s[     +	D$$**8V< ,  	D!%--u{{CC	Ds*   A'. A'	A$#AA'A$$A'c              #   p   K   | j                  |d      r t        |      |k  rt        |d       y y y w)Nr`   rQ   rR   r   mLr   r   s       r   	minLengthrk      s8     8,X1C8=>> 2D,rV   c              #   p   K   | j                  |d      r t        |      |kD  rt        |d       y y y w)Nr`   rX   rR   ri   s       r   	maxLengthrm      s8     8,X1C(<== 2D,rV   c              #   (  K   | j                  |d      sy t        |      D ]m  \  }}||vr| j                  |d      r| j                  |||      D ]  }|  ;t        j                  |      }|D ]  }||vst        |d|        o y w)Nr	   r   z is a dependency of )r   r   r   r   ensure_listr   )r   dependenciesr   r   property
dependencyr   s          r   rq   rq      s     Xx0 ), 7*8#Z2"***( +  
 "--j9L*
X-)6@(K  + !8s   A8B;Bc              #   :   K   ||vrt        |d|       y y w)Nz is not one of )r   )r   enumsr   r   s       r   enumrv      s#     uxGHH s   c              #     K   t        | j                  dd       }|A| j                  j                  |      5 }| j                  ||      D ]  }|  	 d d d        y | j                  j	                  |      \  }}| j                  j                  |       	 | j                  ||      D ]  }|  	 | j                  j                          y # 1 sw Y   y xY w# | j                  j                          w xY ww)Nresolve)getattrresolver	resolvingr   rx   
push_scope	pop_scope)r   refr   r   rx   resolvedr   scopes           r   r~   r~      s     i(()T:G))#.("**8X> ? /. $,,44S9x%%e,	+"**8X> ? ((* /. ((*s5   5C9CAC9C 3C9CC9C66C9c              #   f  K   t        j                  |      }g }t        |      D ]e  \  }}|dk(  r y | j                  |d      r3t	        | j                  |||            }|s y |j                  |       R| j                  ||      se y  t        t        j                  ||      |       y w)Nanyr	   ro   context)	r   rp   r2   r   listr   extendr   	types_msg)r   typesr   r   
all_errorsr5   typeerrorss           r   type_draft3r      s     u%EJ 't5=T8,)++Hd+NOFf%  40 ( Xu-z
 	
s   BB1
'B1c              #     K   | j                  |d      sy t        |      D ]  \  }}||v r"| j                  ||   |||      D ]  }|  ,|j                  dd      s?t	        d|z        }|j                  d|d   ||       |j                  j                  |       |j                  j                  |dg       |  y w)Nr	   r
   requiredF%r is a required property)r   validator_valuer   r   )
r   r   r   r9   r   _setr   
appendleftr   r   r   
propertiesr   r   rr   r   r   s          r   properties_draft3r      s     Xx0(4)x"**"$	 +   ]]:u-#$?($JKEJJ$ )* 5!	   JJ!!(+$$h
%;<K'  5s   AC A%Cc              #      K   t        j                  |      D ]*  }| j                  |d|gi      st        |d|       , y w)Nr   z is disallowed for )r   rp   is_validr   )r   disallowr   r   
disalloweds        r   disallow_draft3r     sG     ((2
h*(>?!-7B  3s
   .AAc              #      K   | j                  |d      r| j                  ||      D ]  }|  y t        |      D ]"  \  }}| j                  |||      D ]  }|  $ y w)Nr	   ro   )r   r   r2   )r   extendsr   r   r   r5   r   s          r   extends_draft3r     sk     (+&&x9EK :%g.y&&x&NEK O /s   A A"c              #       K   t        j                  |      }t         fd|D              s"t        t        j                  |             y y w)Nc              3   B   K   | ]  }j                  |        y wN)r   ).0r   r   r   s     r   	<genexpr>ztype_draft4.<locals>.<genexpr>"  s     CUTy  40Us   )r   rp   r   r   r   )r   r   r   r   s   ` ` r   type_draft4r     sC     u%ECUCCf..x?@@ Ds   AAc              #      K   | j                  |d      sy t        |      D ]+  \  }}||v s| j                  ||   |||      D ]  }|  - y wr   )r   r   r   r   s          r   properties_draft4r   &  sg     Xx0(4)x"**"$	 +    5s
   )A$Ac              #   j   K   | j                  |d      sy |D ]  }||vst        d|z          y w)Nr	   r   )r   r   )r   r   r   r   rr   s        r   required_draft4r   5  s<     Xx08#!"="HII s   33c              #   p   K   | j                  |d      r t        |      |k  rt        |d       y y y w)Nr	   z  does not have enough propertiesrR   r   mPr   r   s       r   minProperties_draft4r   =  s=     8,X1C4<>
 	
 2D,rV   c              #      K   | j                  |d      sy | j                  |d      r t        |      |kD  rt        |d       y y y w)Nr	   z has too many propertiesrR   r   s       r   maxProperties_draft4r   D  sK     Xx08,X1ChHII 2D,s   AA	c              #   l   K   t        |      D ]"  \  }}| j                  |||      D ]  }|  $ y w)Nro   )r2   r   )r   allOfr   r   r5   r   r   s          r   allOf_draft4r   K  s<     %e,y&&x&NEK O -s   24c              #     K   t        |      }g }|D ]9  \  }}t        | j                  |||            }|s|}	 n%|j                  |       ; t	        |d|       |D 
cg c]  \  }
}| j                  ||      s| }}
}|r<|j                  	       dj                  d |D              }t	        |d|       y y c c}}
w w)Nro   , is not valid under any of the given schemasr   r    c              3   2   K   | ]  }t        |        y wr   )r(   )r   r   s     r   r   zoneOf_draft4.<locals>.<genexpr>c  s     @Z6$v,Zs   z is valid under each of )r2   r   r   r   r   r   appendr&   )r   oneOfr   r   
subschemasr   r5   r   errsfirst_validis
more_validreprss                 r   oneOf_draft4r   Q  s     5!JJ&yI%%h	u%MN#K$ ' @HJ
 	

 !+N
1i.@.@1.M!
JN+&		@Z@@.6>
 	
  Os   A#C%C CACc              #      K   g }t        |      D ]7  \  }}t        | j                  |||            }|s y |j                  |       9 t	        |d|       y w)Nro   r   r   )r2   r   r   r   r   )r   anyOfr   r   r   r5   r   r   s           r   anyOf_draft4r   i  sg     J%e,yI%%h	u%MN$	 - @HJ
 	
s   AAc              #   V   K   | j                  ||      rt        |d|       y y w)Nz is not allowed for )r   r   )r   
not_schemar   r   s       r   
not_draft4r   w  s0     (J/*4h?
 	
 0s   '))&r   
jsonschemar   jsonschema.exceptionsr   r   jsonschema.compatr   r   r/   r4   r<   rB   rH   rO   rU   rY   r]   r   rg   rk   rm   rq   rv   r~   r   r   r   r   r   r   r   r   r   r   r   r   r        r   <module>r      s    	  > '
 E8 
(
"
"M?
>
JJD?
>
,I
+"
*4AJ
J
0

r   