
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
=X/                 @   s$  d dl Z d dl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%dS )A    N)_utils)FormatErrorValidationError)	iteritemsc       	      c   sn   | j |dsd S xXt|D ]L\}}xBt|D ]6\}}tj||r,x | j||||dD ]
}|V  qTW q,W qW d S )Nobject)pathschema_path)is_typer   researchdescend)		validatorpatternPropertiesinstanceschemapattern	subschemakverror r   !/usr/lib/python3.6/_validators.pyr      s    r   c       	      c   s   | j |dsd S ttj||}| j |dr`x|D ](}x"| j|| ||dD ]
}|V  qLW q2W n| r|rd|krt|d }t|dkrd}nd}ddjtt	t||djtt	|f }t
|V  nd	}t
|tj| V  d S )
Nr   )r   r      ZdoesZdoz&%s %s not match any of the regexes: %sz, z8Additional properties are not allowed (%s %s unexpected))r	   setr   Zfind_additional_propertiesr   sortedlenjoinmapreprr   
extras_msg)	r   ZaPr   r   ZextrasZextrar   ZpatternsZverbr   r   r   additionalProperties   s(    

r    c             c   s   | j |dsd S | j |drTxxt|D ](\}}x| j|||dD ]
}|V  q@W q&W nBx@tt||D ].\\}}}x | j||||dD ]
}|V  qW qdW d S )Narrayr   )r   )r   r   )r	   	enumerater   zip)r   itemsr   r   indexitemr   r   r   r   r   r$   1   s    r$   c             c   s   | j |d s"| j |jdi dr&d S t|jdg }| j |drxt||d  |dD ](\}}x| j|||dD ]
}|V  qrW qXW nJ| rt|t|jdg krd}t|tj|t|jdg d   V  d S )Nr!   r$   r   )start)r   z3Additional items are not allowed (%s %s unexpected))r	   getr   r"   r   r   r   r   )r   ZaIr   r   Z	len_itemsr%   r&   r   r   r   r   additionalItemsA   s    r)   c             c   sR   | j |dsd S |jddr*||k}d}n||k }d}|rNtd|||f V  d S )NnumberZexclusiveMinimumFzless than or equal toz	less thanz%r is %s the minimum of %r)r	   r(   r   )r   minimumr   r   failedcmpr   r   r   r+   U   s    r+   c             c   sR   | j |dsd S |jddr*||k}d}n||k}d}|rNtd|||f V  d S )Nr*   ZexclusiveMaximumFzgreater than or equal tozgreater thanz%r is %s the maximum of %r)r	   r(   r   )r   maximumr   r   r,   r-   r   r   r   r.   f   s    r.   c             c   sR   | j |dsd S t|tr0|| }t||k}n|| }|rNtd||f V  d S )Nr*   z%r is not a multiple of %r)r	   
isinstancefloatintr   )r   ZdBr   r   Zquotientr,   r   r   r   
multipleOfw   s    
r2   c             c   s,   | j |dr(t||k r(td|f V  d S )Nr!   z%r is too short)r	   r   r   )r   mIr   r   r   r   r   minItems   s    r4   c             c   s,   | j |dr(t||kr(td|f V  d S )Nr!   z%r is too long)r	   r   r   )r   r3   r   r   r   r   r   maxItems   s    r5   c             c   s0   |r,| j |dr,tj| r,td|f V  d S )Nr!   z%r has non-unique elements)r	   r   Zuniqr   )r   ZuIr   r   r   r   r   uniqueItems   s    r6   c             c   s0   | j |dr,tj|| r,td||f V  d S )Nstringz%r does not match %r)r	   r
   r   r   )r   Zpatrnr   r   r   r   r   r      s    r   c             c   sV   | j d k	rRy| j j|| W n4 tk
rP } zt|j|jdV  W Y d d }~X nX d S )N)cause)Zformat_checkerZcheckr   r   messager8   )r   formatr   r   r   r   r   r   r:      s
    
r:   c             c   s,   | j |dr(t||k r(td|f V  d S )Nr7   z%r is too short)r	   r   r   )r   mLr   r   r   r   r   	minLength   s    r<   c             c   s,   | j |dr(t||kr(td|f V  d S )Nr7   z%r is too long)r	   r   r   )r   r;   r   r   r   r   r   	maxLength   s    r=   c             c   s   | j |dsd S x~t|D ]r\}}||kr,q| j |drZxR| j|||dD ]
}|V  qJW qtj|}x&|D ]}||krjtd||f V  qjW qW d S )Nr   )r   z%r is a dependency of %r)r	   r   r   r   ensure_listr   )r   dependenciesr   r   propertyZ
dependencyr   r   r   r   r?      s    

r?   c             c   s   ||krt d||f V  d S )Nz%r is not one of %r)r   )r   Zenumsr   r   r   r   r   enum   s    rA   c          
   c   s   t | jdd }|d krL| jj|"}x| j||D ]
}|V  q2W W d Q R X nJ| jj|\}}| jj| z x| j||D ]
}|V  qxW W d | jj  X d S )Nresolve)getattrZresolverZ	resolvingr   rB   Z
push_scopeZ	pop_scope)r   refr   r   rB   Zresolvedr   Zscoper   r   r   rD      s    rD   c             c   s   t j|}g }xzt|D ]X\}}|dkr,d S | j|dr`t| j|||d}|sTd S |j| q| j||rd S qW tt j|||dV  d S )Nanyr   )r   )context)	r   r>   r"   r	   listr   extendr   	types_msg)r   typesr   r   
all_errorsr%   typeerrorsr   r   r   type_draft3   s    
rN   c             c   s   | j |dsd S xt|D ]\}}||krRxv| j|| |||dD ]
}|V  qBW q|jddrtd| }|jd|d ||d |jj| |jj	|dg |V  qW d S )Nr   )r   r   requiredFz%r is a required property)r   Zvalidator_valuer   r   )
r	   r   r   r(   r   Z_setr   
appendleftr   rH   )r   
propertiesr   r   r@   r   r   r   r   r   properties_draft3   s(    rR   c             c   s<   x6t j|D ](}| j|d|girtd||f V  qW d S )NrL   z%r is disallowed for %r)r   r>   is_validr   )r   Zdisallowr   r   Z
disallowedr   r   r   disallow_draft3  s    rT   c             c   sf   | j |dr,x| j||D ]
}|V  qW d S x4t|D ](\}}x| j|||dD ]
}|V  qPW q6W d S )Nr   )r   )r	   r   r"   )r   Zextendsr   r   r   r%   r   r   r   r   extends_draft3  s    
rU   c             #   s8   t j|}t fdd|D s4tt j |V  d S )Nc             3   s   | ]}j  |V  qd S )N)r	   ).0rL   )r   r   r   r   	<genexpr>"  s    ztype_draft4.<locals>.<genexpr>)r   r>   rE   r   rI   )r   rJ   r   r   r   )r   r   r   type_draft4  s    
rX   c             c   sX   | j |dsd S xBt|D ]6\}}||krx$| j|| |||dD ]
}|V  qBW qW d S )Nr   )r   r   )r	   r   r   )r   rQ   r   r   r@   r   r   r   r   r   properties_draft4&  s    rY   c             c   s8   | j |dsd S x"|D ]}||krtd| V  qW d S )Nr   z%r is a required property)r	   r   )r   rO   r   r   r@   r   r   r   required_draft45  s
    
rZ   c             c   s,   | j |dr(t||k r(td|f V  d S )Nr   z"%r does not have enough properties)r	   r   r   )r   mPr   r   r   r   r   minProperties_draft4=  s    r\   c             c   s<   | j |dsd S | j |dr8t||kr8td|f V  d S )Nr   z%r has too many properties)r	   r   r   )r   r[   r   r   r   r   r   maxProperties_draft4D  s    r]   c             c   s:   x4t |D ](\}}x| j|||dD ]
}|V  q$W q
W d S )N)r   )r"   r   )r   ZallOfr   r   r%   r   r   r   r   r   allOf_draft4K  s    r^   c             #   s   t |}g }xL|D ]0\}}tj ||d}|s8|}	P |j| qW td f |dV   fdd|D }
|
r|
j|	 djdd |
D }td	 |f V  d S )
N)r   z.%r is not valid under any of the given schemas)rF   c                s    g | ]\}}j  |r|qS r   )rS   )rV   is)r   r   r   r   
<listcomp>`  s    z oneOf_draft4.<locals>.<listcomp>z, c             s   s   | ]}t |V  qd S )N)r   )rV   r   r   r   r   rW   c  s    zoneOf_draft4.<locals>.<genexpr>z%r is valid under each of %s)r"   rG   r   rH   r   appendr   )r   ZoneOfr   r   Z
subschemasrK   r%   r   errsZfirst_validZ
more_validZreprsr   )r   r   r   oneOf_draft4Q  s"    

rd   c             c   sV   g }xLt |D ],\}}t| j|||d}|s0P |j| qW td|f |dV  d S )N)r   z.%r is not valid under any of the given schemas)rF   )r"   rG   r   rH   r   )r   ZanyOfr   r   rK   r%   r   rc   r   r   r   anyOf_draft4i  s    re   c             c   s"   | j ||rtd||f V  d S )Nz%r is not allowed for %r)rS   r   )r   Z
not_schemar   r   r   r   r   
not_draft4w  s    rf   )&r
   Z
jsonschemar   Zjsonschema.exceptionsr   r   Zjsonschema.compatr   r   r    r$   r)   r+   r.   r2   r4   r5   r6   r   r:   r<   r=   r?   rA   rD   rN   rR   rT   rU   rX   rY   rZ   r\   r]   r^   rd   re   rf   r   r   r   r   <module>   sB   	
