
    `d                     j    d dl 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y)    )_utils)ValidationErrorc                 R    | j                  d      }|d|fgS | j                         S )z
    Ignore siblings of ``$ref`` if it is present.

    Otherwise, return all keywords.

    Suitable for use with `create`'s ``applicable_validators`` argument.
    z$ref)getitems)schemarefs     ?/usr/lib/python3/dist-packages/jsonschema/_legacy_validators.pyignore_ref_siblingsr      s/     **V
C
||~    c              #   f  K   | j                  |d      sy |j                         D ]  \  }}||vr| j                  |d      r| j                  |||      E d {    :| j                  |d      r||vsQ|d|}t        |       f|D ]  }||vs|d|}t        |         y 7 Tw)Nobjectschema_pathstring is a dependency of )is_typer   descendr   )	validatordependenciesinstancer   property
dependencymessageeachs           r
   dependencies_draft3r      s     Xx0 , 2 2 4 3*8#Z2 ((*( )    z84)'N*>xlK%g.." 3x'!%(<XLIG)'2233
s   AB1B/B17B1B1c              #     K   | j                  |d      sy|j                         D ]Y  \  }}||vr| j                  |d      r!|D ]  }||vs|d|}t        |        >| j                  |||      E d{    [ y7 w)z
    Support for the ``dependencies`` keyword from pre-draft 2019-09.

    In later drafts, the keyword was split into separate
    ``dependentRequired`` and ``dependentSchemas`` validators.
    r   Narrayr   r   )r   r   r   r   )r   r   r   r   r   r   r   r   s           r
   !dependencies_draft4_draft6_draft7r   +   s      Xx0 , 2 2 4 *8#Z1" 3x'!%(<XLIG)'223
 !((*( )   s   A
B.B;B<Bc              #      K   t        j                  |      D ];  }| j                  d|gi      j                  |      s(|d|}t	        |       = y w)Ntyper   z is disallowed for )r   ensure_listevolveis_validr   )r   disallowr   r   
disallowedr   s         r
   disallow_draft3r(   I   s_     ((2 +
FZL#9:CCHM#&9(FG!'**+s   =A Ac              #      K   | j                  |d      r| j                  ||      E d {    y t        |      D ]!  \  }}| j                  |||      E d {    # y 7 57 	w)Nr   r   )r   r   	enumerate)r   extendsr   r   index	subschemas         r
   extends_draft3r.   P   sq     (+$$Xw777%g. My$$Xye$LLLM 	8 	Ms!   (A$A -A$A"A$"A$c              #   8  K   | j                  |d      sy | j                  |d      r0t        |      D ]!  \  }}| j                  |||      E d {    # y t        t        |      |      D ]%  \  \  }}}| j                  ||||      E d {    ' y 7 E7 	w)Nr   r   pathr1   r   )r   r*   r   zipr   r   r   r   r,   itemr-   s          r
   items_draft3_draft4r6   X   s     Xw/)$X. 	BKE4 ((u5(AAA	B ),Ih,?(G 	$MUD9 ((ie )   	 Bs$   ABB=BBBBc              #   8  K   | j                  |d      sy | j                  |d      r>t        t        |      |      D ]%  \  \  }}}| j                  ||||      E d {    ' y t        |      D ]!  \  }}| j                  |||      E d {    # y 7 77 	w)Nr   r2   r0   )r   r3   r*   r   r4   s          r
   items_draft6_draft7_draft201909r8   f   s     Xw/((+Ih,?(G 	$MUD9 ((ie )   	
 %X. 	BKE4 ((u5(AAA	B	
 Bs$   ABB/BBBBc              #      K   | j                  |d      sy |j                  dd      r||k  }d}n||k  }d}|r|d| d|}t        |       y y w)NnumberexclusiveMinimumFzless than or equal toz	less than is z the minimum of r   r   r   )r   minimumr   r   failedcmpr   s          r
   minimum_draft3_draft4rA   t   sp     Xx0zz$e,W$%G#LSE)9'Eg&&    AAc              #      K   | j                  |d      sy |j                  dd      r||k\  }d}n||kD  }d}|r|d| d|}t        |       y y w)Nr:   exclusiveMaximumFzgreater than or equal tozgreater thanr<   z the maximum of r=   )r   maximumr   r   r?   r@   r   s          r
   maximum_draft3_draft4rF      sp     Xx0zz$e,W$(G#LSE)9'Eg&& rB   c              #     K   | j                  |d      sy |j                         D ]  \  }}||v r!| j                  ||   |||      E d {    +|j                  dd      s>t	        |d      }|j                  d|d   ||       |j                  j                  |       |j                  j                  |dg       |  y 7 }w)Nr   r2   requiredFz is a required property)r   validator_valuer   r   )
r   r   r   r   r   _setr1   
appendleftr   extend)r   
propertiesr   r   r   r-   errors          r
   properties_draft3rO      s     Xx0)//1 )x (("$	 )    ]]:u-#xl2I$JKEJJ$ )* 5!	   JJ!!(+$$h
%;<K%s   A	CC	C$A&Cc              #     K   t        j                  |      }g }t        |      D ]^  \  }}| j                  |d      r3t	        | j                  |||            }|s y |j                  |       K| j                  ||      s^ y  g }|D ]   }	 |j                  t        |d                " t        |ddj                  |       |       y # t        $ r |j                  t        |             Y lw xY ww)Nr   r   namez is not of type z, )context)r   r#   r*   r   listr   rL   appendrepr	Exceptionr   join)	r   typesr   r   
all_errorsr,   r!   errorsreprss	            r
   type_draft3r\      s    u%EJ ' 
tT8,)++Hd+NOFf%  40
  	)D)T$v,/0	)
 l*499U+;*<=
 	
  )T$Z()s0   B C:
C:C+&C:#C74C:6C77C:c              #       K    j                  |d      sy t         fd|D              st        d|d       y y w)Nr   c              3   `   K   | ]%  }j                         j                  |       ' yw)r"   N)r$   r%   ).0elementcontainsr   s     r
   	<genexpr>z)contains_draft6_draft7.<locals>.<genexpr>   s2       	)227;s   +.zNone of z! are valid under the given schema)r   anyr   )r   ra   r   r   s   ``  r
   contains_draft6_draft7rd      sP     Xw/   xl"CD
 	
	s   <A c                 \   | j                   j                  | j                  }}t        | j                   j                  dd        D ]5  }| j                   j                  |      \  }}|j                  d      r|}5 n |j                  d      }| j                   j                  ||      }	|	 g S )N   z$recursiveAnchor#)	resolverresolution_scoper   reversed_scopes_stackresolver   lstripresolve_fragment)
r   recursiveRefr   r   
lookup_urltargetr   next_targetfragmentr-   s
             r
   ro   ro      s    "++<<i>N>NJ++99!"=> "+"4"4"<"<T"B
K??-. F ""3'H""33FHEI Ir   N)
jsonschemar   jsonschema.exceptionsr   r   r   r   r(   r.   r6   r8   rA   rF   rO   r\   rd   ro    r   r
   <module>rw      sN     13.<+MB' ' 2
4

r   