o
    >]-                     @   sL  d dl Z d dlmZmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZ dd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z d+d, Z!d-d. Z"d/d0 Z#d1d2 Z$d3d4 Z%d5d6 Z&d7d8 Z'd9d: Z(d;d< Z)d=d> Z*d?d@ Z+dAdB Z,dCdD Z-dS )E    N)ensure_listequal
extras_msgfind_additional_properties	types_msgunbooluniq)FormatErrorValidationError)	iteritemsc           	      c   sd    |  |ds	d S t|D ]"\}}t|D ]\}}t||r.| j||||dD ]}|V  q(qqd S Nobjectpathschema_path)is_typer   researchdescend)		validatorpatternPropertiesinstanceschemapattern	subschemakverror r   8/usr/lib/python3/dist-packages/jsonschema/_validators.pyr      s   
r   c                 c   s:    |  |ds	d S |D ]}| j||dD ]}|V  qqd S )Nr   )r   r   )r   r   )r   propertyNamesr   r   propertyr   r   r   r   r       s   
r    c           	      c   s    |  |ds	d S tt||}|  |dr-|D ]}| j|| ||dD ]}|V  q$qd S |so|rqd|v rbt|d }t|dkrDd}nd}ddttt||dtt|f }t	|V  d S d	}t	|t
| V  d S d S d S )
Nr   r   r      doesdoz&%s %s not match any of the regexes: %s, z8Additional properties are not allowed (%s %s unexpected))r   setr   r   sortedlenjoinmapreprr
   r   )	r   aPr   r   extrasextrar   patternsverbr   r   r   additionalProperties)   s2   r2   c                 c   s    |  |ds	d S |  |dr.tt||D ]\\}}}| j||||dD ]}|V  q%qd S t|D ]\}}| j|||dD ]}|V  q>q2d S )Narrayr   r"   )r   zip	enumerater   )r   itemsr   r   indexitemr   r   r   r   r   r6   E   s    
r6   c              	   c   s    |  |dr|  |di drd S t|dg }|  |dr@t||d  |dD ]\}}| j|||dD ]}|V  q7q+d S |set|t|dg krgd}t|t|t|dg d   V  d S d S d S )Nr3   r6   r   )startr"   z3Additional items are not allowed (%s %s unexpected))r   getr)   r5   r   r
   r   )r   aIr   r   	len_itemsr7   r8   r   r   r   r   additionalItemsU   s*   

r=   c                 c   s$    t ||std|f V  d S d S )Nz%r was expected)r   r
   )r   constr   r   r   r   r   r>   i   s   
r>   c                 #   sB     |ds	d S t fdd|D std|f V  d S d S )Nr3   c                 3   s    | ]	} | V  qd S Nis_valid).0elementcontainsr   r   r   	<genexpr>r       zcontains.<locals>.<genexpr>z+None of %r are valid under the given schema)r   anyr
   )r   rE   r   r   r   rD   r   rE   n   s   
rE   c                 c   s4    |  |ds	d S ||krtd||f V  d S d S )Nnumberz-%r is less than or equal to the minimum of %rr   r
   r   minimumr   r   r   r   r   exclusiveMinimumx      
rM   c                 c   s4    |  |ds	d S ||krtd||f V  d S d S )NrI   z0%r is greater than or equal to the maximum of %rrJ   r   maximumr   r   r   r   r   exclusiveMaximum   rN   rQ   c                 c   s4    |  |ds	d S ||k rtd||f V  d S d S )NrI   z!%r is less than the minimum of %rrJ   rK   r   r   r   rL         

rL   c                 c   s4    |  |ds	d S ||krtd||f V  d S d S )NrI   z$%r is greater than the maximum of %rrJ   rO   r   r   r   rP      rR   rP   c                 c   sX    |  |ds	d S t|tr|| }t||k}n|| }|r*td||f V  d S d S )NrI   z%r is not a multiple of %r)r   
isinstancefloatintr
   )r   dBr   r   quotientfailedr   r   r   
multipleOf   s   
rY   c                 c   6    |  |drt||k rtd|f V  d S d S d S )Nr3   %r is too shortr   r)   r
   r   mIr   r   r   r   r   minItems      r_   c                 c   6    |  |drt||krtd|f V  d S d S d S )Nr3   %r is too longr\   r]   r   r   r   maxItems   r`   rc   c                 c   s:    |r|  |drt|std|f V  d S d S d S d S )Nr3   z%r has non-unique elements)r   r   r
   )r   uIr   r   r   r   r   uniqueItems   s   
re   c                 c   s8    |  |drt||std||f V  d S d S d S )Nstringz%r does not match %r)r   r   r   r
   )r   patrnr   r   r   r   r   r      s   

r   c              
   c   s^    | j d ur-z
| j || W d S  ty, } zt|j|jdV  W Y d }~d S d }~ww d S )N)cause)format_checkercheckr	   r
   messagerh   )r   formatr   r   r   r   r   r   rl      s   
 rl   c                 c   rZ   )Nrf   r[   r\   r   mLr   r   r   r   r   	minLength   r`   ro   c                 c   ra   )Nrf   rb   r\   rm   r   r   r   	maxLength   r`   rp   c           	      c   s    |  |ds	d S t|D ]2\}}||vrq|  |dr1|D ]}||vr/d}t|||f V  qq| j|||dD ]}|V  q9qd S )Nr   r3   z%r is a dependency of %rr   )r   r   r
   r   )	r   dependenciesr   r   r!   
dependencyeachrk   r   r   r   r   rr      s&   
rr   c                 #   sl    |dks	|dkr%t | t fdd|D r#td||f V  d S d S ||vr4td||f V  d S d S )Nr   r#   c                 3   s    | ]	} t |kV  qd S r?   )r   )rB   rt   unbooledr   r   rF      rG   zenum.<locals>.<genexpr>z%r is not one of %r)r   allr
   )r   enumsr   r   r   ru   r   enum   s   ry   c                 c   s    t | jdd }|d u r1| j|}| ||D ]}|V  qW d    d S 1 s*w   Y  d S | j|\}}| j| z| ||D ]}|V  qFW | j  d S | j  w )Nresolve)getattrresolver	resolvingr   rz   
push_scope	pop_scope)r   refr   r   rz   resolvedr   scoper   r   r   r      s   "r   c                 #   s:    t |}t fdd|D stt |V  d S d S )Nc                 3   s    | ]	}  |V  qd S r?   )r   )rB   typer   r   r   r   rF     rG   ztype.<locals>.<genexpr>)r   rH   r
   r   )r   typesr   r   r   r   r   r     s
   r   c                 c   sR    |  |ds	d S t|D ]\}}||v r&| j|| |||dD ]}|V  q qd S r   )r   r   r   )r   
propertiesr   r   r!   r   r   r   r   r   r     s   
r   c                 c   s6    |  |ds	d S |D ]}||vrtd| V  qd S )Nr   z%r is a required propertyrJ   )r   requiredr   r   r!   r   r   r   r   #  s   r   c                 c   rZ   )Nr   z"%r does not have enough propertiesr\   r   mPr   r   r   r   r   minProperties+  s   
r   c                 c   sF    |  |ds	d S |  |drt||kr!td|f V  d S d S d S )Nr   z%r has too many propertiesr\   r   r   r   r   maxProperties2  s   r   c                 c   s4    t |D ]\}}| j|||dD ]}|V  qqd S )Nrq   )r5   r   )r   allOfr   r   r7   r   r   r   r   r   r   9  s   r   c                 c   sX    g }t |D ]\}}t| j|||d}|s d S || qtd|f |dV  d S )Nrq   .%r is not valid under any of the given schemascontext)r5   listr   extendr
   )r   anyOfr   r   
all_errorsr7   r   errsr   r   r   r   ?  s   r   c                 #   s    t |}g }|D ]\}}tj ||d}|s|}	 n|| q	td f |dV   fdd|D }
|
rS|
|	 ddd |
D }td	 |f V  d S d S )
Nrq   r   r   c                    s    g | ]\}}  |r|qS r   r@   )rB   isr   r   r   
<listcomp>\  s     zoneOf.<locals>.<listcomp>r&   c                 s   s    | ]}t |V  qd S r?   )r,   )rB   r   r   r   r   rF   _  s    zoneOf.<locals>.<genexpr>z%r is valid under each of %s)r5   r   r   r   r
   appendr*   )r   oneOfr   r   
subschemasr   r7   r   r   first_valid
more_validreprsr   r   r   r   M  s*   


r   c                 c   s(    |  ||rtd||f V  d S d S )Nz%r is not allowed for %r)rA   r
   )r   
not_schemar   r   r   r   r   not_e  s   

r   c                 c   sv    |  ||r!d|v r|d }| j||ddD ]}|V  qd S d S d|v r7|d }| j||ddD ]}|V  q1d S d S )Nthenrq   else)rA   r   )r   	if_schemar   r   r   r   else_r   r   r   if_l  s   r   ).r   jsonschema._utilsr   r   r   r   r   r   r   jsonschema.exceptionsr	   r
   jsonschema.compatr   r   r    r2   r6   r=   r>   rE   rM   rQ   rL   rP   rY   r_   rc   re   r   rl   ro   rp   rr   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sH    $	


		