
    t                     N   S SK JrJr  S SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  \" SS/5      r\" 5       r\R                  " 5       r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\\4S jr\" 5       r\4S jrg)    )defaultdictdequeN)_utils)PY3	iteritemsanyOfoneOfc            	          ^  \ rS rSr\SSS\\\SS4	U 4S jjrS rS r\(       a  \r	OS r	\
S 5       r\S	 5       r\S
 5       rS rS rSrU =r$ )_Error    Nc                 <  > [         [        U ]  UUUUUUUUU	U
5
        Xl        [	        U5      =U l        U l        [	        U	5      =U l        U l        [        U5      U l
        U=U l        U l        X l        X`l        Xpl        Xl        Xl        U H	  nXl        M     g N)superr   __init__messager   pathrelative_pathschema_pathrelative_schema_pathlistcontextcause	__cause__	validatorvalidator_valueinstanceschemaparent)selfr   r   r   r   r   r   r   r   r   r   error	__class__s               (lib/third_party/jsonschema/exceptions.pyr   _Error.__init__   s     	fd$	
 ).t4	D&7<[7II44G}&++
T^". EL     c                 T    SU R                   R                  < SU R                  < S3$ )N<z: >)r"   __name__r   r    s    r#   __repr___Error.__repr__8   s    !^^44dllCCr%   c           	         U R                   U R                  U R                  U R                  4n[	        S U 5       5      (       a  U R
                  $ [        R                  " U R                  SS9n[        R                  " U R                  SS9nU R
                  [        R                  " SR                  5       5      U R                   [        R                  " [        U R                  5      S S 5      [        R                  " U5      [        R                  " U R                   5      [        R                  " U5      4-  -   $ )Nc              3   0   #    U  H  o[         L v   M     g 7fr   )_unset).0ms     r#   	<genexpr>%_Error.__unicode__.<locals>.<genexpr>?   s     :$9qF{$9s   H   widthzv

            Failed validating %r in schema%s:
            %s

            On instance%s:
            %s
            )r   r   r   r   anyr   pprintpformattextwrapdedentrstripr   format_as_indexr   r   indentr   )r    essential_for_verbosepschema	pinstances       r#   __unicode___Error.__unicode__;   s    NND00$--!
 :$9:::<<..B7NN4==;	||hoo / 
 NN""4(A(A#B3B#GHMM'"""4#5#56MM)$

 
 	
r%   c                 6    [        U 5      R                  S5      $ Nzutf-8unicodeencoder*   s    r#   __str___Error.__str__W       4=''00r%   c                 .    U " S0 UR                  5       D6$ )Nr   	_contents)clsothers     r#   create_from_Error.create_fromZ   s    'U__&''r%   c                     U R                   nUc  U R                  $ [        U R                  5      nUR                  [	        UR
                  5      5        U$ r   )r   r   r   
extendleftreversedabsolute_pathr    r   r   s      r#   rW   _Error.absolute_path^   sH    >%%%T''(!5!567r%   c                     U R                   nUc  U R                  $ [        U R                  5      nUR                  [	        UR
                  5      5        U$ r   )r   r   r   rU   rV   absolute_schema_pathrX   s      r#   r[   _Error.absolute_schema_pathh   sH    >,,,T../!<!<=>r%   c                 l    [        U5       H%  u  p#[        X5      [        L d  M  [        XU5        M'     g r   )r   getattrr/   setattr)r    kwargskvs       r#   _set_Error._setr   s*    f%DAt6)# &r%   c                 2   ^  Sn[        U 4S jU 5       5      $ )N)
r   r   r   r   r   r   r   r   r   r   c              3   >   >#    U  H  o[        TU5      4v   M     g 7fr   )r^   )r0   attrr    s     r#   r2   #_Error._contents.<locals>.<genexpr>|   s     BED74./Es   )dict)r    attrss   ` r#   rO   _Error._contentsw   s    
 BEBBBr%   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r)   
__module____qualname____firstlineno__r/   r   r+   rC   r   rJ   classmethodrR   propertyrW   r[   rc   rO   __static_attributes____classcell__r"   s   @r#   r   r      s     % ND
2 	1 ( (    $
C Cr%   r   c                       \ rS rSrSrg)ValidationError   r   Nr)   rl   rm   rn   rq   r   r%   r#   ru   ru          r%   ru   c                       \ rS rSrSrg)SchemaError   r   Nrw   r   r%   r#   rz   rz      rx   r%   rz   c                       \ rS rSrSrg)RefResolutionError   r   Nrw   r   r%   r#   r}   r}      rx   r%   r}   c                   >    \ rS rSrS rS r\(       a  \rSrgS rSrg)UnknownType   c                 (    Xl         X l        X0l        g r   )typer   r   )r    r   r   r   s       r#   r   UnknownType.__init__   s    	 r%   c                 6   [         R                  " U R                  SS9n[         R                  " U R                  SS9n[        R
                  " SR                  5       5      U R                  [        R                  " U5      [        R                  " U5      4-  $ )Nr4   r5   z
            Unknown type %r for validator with schema:
            %s

            While checking instance:
            %s
            )
r9   r:   r   r   r;   r<   r=   r   r   r?   )r    rA   rB   s      r#   rC   UnknownType.__unicode__   sr    ..B7NN4==;	   
 YYg.i0HIJ 	Jr%   c                 6    [        U 5      R                  S5      $ rF   rG   r*   s    r#   rJ   UnknownType.__str__   rL   r%   )r   r   r   N)	r)   rl   rm   rn   r   rC   r   rJ   rq   r   r%   r#   r   r      s    

J 	1r%   r   c                   V   ^  \ rS rSrSU 4S jjrS r\(       a  \rSrU =r	$ S rSrU =r	$ )FormatError   c                 T   > [         [        U ]  X5        Xl        U=U l        U l        g r   )r   r   r   r   r   r   )r    r   r   r"   s      r#   r   FormatError.__init__   s%    k4)'9&++
T^r%   c                     U R                   $ r   )r   r*   s    r#   rC   FormatError.__unicode__   s    ||r%   c                 8    U R                   R                  S5      $ rF   )r   rI   r*   s    r#   rJ   FormatError.__str__   s    <<&&w//r%   )r   r   r   r   )
r)   rl   rm   rn   r   rC   r   rJ   rq   rr   rs   s   @r#   r   r      s!    ,
 	0 	0r%   r   c                   Z    \ rS rSrSr\rSS jrS rS r	S r
S rS rS	 r\S
 5       rSrg)	ErrorTree   z?
ErrorTrees make it easier to check which validations failed.

c                     0 U l         [        U R                  5      U l        U HE  nU nUR                   H  nX4   nM	     X#R                   UR
                  '   UR                  Ul        MG     g r   )errorsr   r"   rO   r   r   r   	_instance)r    r   r!   	containerelements        r#   r   ErrorTree.__init__   s\    $T^^4EI ::%.	 &05U__-"'..I r%   c                     XR                   ;   $ )z4
Check whether ``instance[index]`` has any errors.

rN   r    indexs     r#   __contains__ErrorTree.__contains__   s     &&r%   c                 n    U R                   [        La  X;  a  U R                   U     U R                  U   $ )a)  
Retrieve the child tree one level down at the given ``index``.

If the index is not in the instance that this tree corresponds to and
is not known by this tree, whatever error would be raised by
``instance.__getitem__`` will be propagated (usually this is some
subclass of :class:`LookupError`.

)r   r/   rO   r   s     r#   __getitem__ErrorTree.__getitem__   s0     >>'E,=NN5!~~e$$r%   c                      X R                   U'   g r   rN   )r    r   values      r#   __setitem__ErrorTree.__setitem__   s     %ur%   c                 ,    [        U R                  5      $ )zJ
Iterate (non-recursively) over the indices in the instance with errors.

)iterrO   r*   s    r#   __iter__ErrorTree.__iter__   s     DNN##r%   c                     U R                   $ )z 
Same as :attr:`total_errors`.

)total_errorsr*   s    r#   __len__ErrorTree.__len__   s        r%   c                 R    SU R                   R                  < S[        U 5      < S3$ )Nr'   z (z total errors)>)r"   r)   lenr*   s    r#   r+   ErrorTree.__repr__   s    +/>>+B+BCINNr%   c                 |    [        S [        U R                  5       5       5      n[        U R                  5      U-   $ )zE
The total number of errors in the entire tree, including children.

c              3   <   #    U  H  u  p[        U5      v   M     g 7fr   )r   )r0   _trees      r#   r2   )ErrorTree.total_errors.<locals>.<genexpr>   s     N4M3t994Ms   )sumr   rO   r   r   )r    child_errorss     r#   r   ErrorTree.total_errors   s1     NIdnn4MNN4;;,..r%   )rO   r   N)r   )r)   rl   rm   rn   __doc__r/   r   r   r   r   r   r   r   r+   rp   r   rq   r   r%   r#   r   r      sF    
 I
1'%&$!O / /r%   r   c                    ^ ^ UU 4S jnU$ )Nc                 Z   > U R                   n[        U R                  5      * UT;  UT;   4$ r   )r   r   r   )r!   r   strongweaks     r#   	relevanceby_relevance.<locals>.relevance  s.    OO	EJJ$!6	V8KKKr%   r   )r   r   r   s   `` r#   by_relevancer      s    L r%   c                     [        U 5      n [        U S 5      nUc  g [        [        R                  " U/U 5      US9nUR
                  (       a'  [        UR
                  US9nUR
                  (       a  M'  U$ )N)key)r   nextmax	itertoolschainr   min)r   r   bests      r#   
best_matchr   
  s_    &\FD|yvv.C8D
,,4<<S) ,,,Kr%   )collectionsr   r   r   r9   r;   
jsonschemar   jsonschema.compatr   r   	frozensetWEAK_MATCHESSTRONG_MATCHESUnsetr/   	Exceptionr   ru   rz   r}   r   r   objectr   r   r   r   r   r%   r#   <module>r      s    *     , '7+,	lCY lC^	f 		& 		 	1) 120) 0 I/ I/X #>  N	 % 	r%   