o
    iT>                     @   s  d dl mZ d dlmZmZ d dlZd dlmZmZm	Z	m
Z
mZmZmZmZ d dlmZ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&d0d1 Z'd2d3 Z(d4d5 Z)d6d7 Z*d8d9 Z+d:d; Z,d<d= Z-d>d? Z.d@dA Z/dBdC Z0dDdE Z1dFdG Z2dHdI Z3dJdK Z4dLdM Z5dNdO Z6dS )P    )Fraction)	urldefragurljoinN)ensure_listequal
extras_msgfind_additional_properties%find_evaluated_item_indexes_by_schema&find_evaluated_property_keys_by_schemaunbooluniq)FormatErrorValidationErrorc                 c   s^    |  |ds	d S | D ]\}}| D ]\}}t||r+| j||||dE d H  qqd S Nobjectpathschema_path)is_typeitemsresearchdescend)	validatorpatternPropertiesinstanceschemapattern	subschemakv r!   Q/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jsonschema/_validators.pyr      s   r   c                 c   s4    |  |ds	d S |D ]}| j||dE d H  qd S )Nr   )r   r   )r   r   )r   propertyNamesr   r   propertyr!   r!   r"   r#      s   r#   c           
      c   s    |  |ds	d S tt||}|  |dr*|D ]}| j|| ||dE d H  qd S |su|rwd|v rht|dkr;d}nd}ddd	 t|D }dd
d	 t|d D }| d| d| }	t|	V  d S d}	t|	t| V  d S d S d S )Nr   r   r      doesdo, c                 s       | ]}t |V  qd S Nrepr.0eachr!   r!   r"   	<genexpr>6       z'additionalProperties.<locals>.<genexpr>c                 s   r*   r+   r,   r.   r!   r!   r"   r1   7   s    
 z not match any of the regexes: z8Additional properties are not allowed (%s %s unexpected))	r   setr   r   lenjoinsortedr   r   )
r   aPr   r   extrasextraverbjoinedpatternserrorr!   r!   r"   additionalProperties&   s,   

r?   c                 c   s    |  |ds	d S t|dg }t|}|du r,||kr,d| d| }t|V  d S t||D ]}| j|| ||dE d H  q1d S )NarrayprefixItemsFzExpected at most z items, but found )r   r   r   )r   r5   getr   ranger   )r   r   r   r   prefixtotalmessageindexr!   r!   r"   r   A   s   r   c              	   c   s    |  |dr|  |di drd S t|dg }|  |dr=t||d  |dD ]\}}| j|||dE d H  q+d S |sbt|t|dg krdd}t|t|t|dg d   V  d S d S d S )Nr@   r   r   )startr%   z3Additional items are not allowed (%s %s unexpected))r   rB   r5   	enumerater   r   r   )r   aIr   r   	len_itemsrG   itemr>   r!   r!   r"   additionalItemsS   s"   

rM   c                 c   s$    t ||st|dV  d S d S )Nz was expected)r   r   )r   constr   r   r!   r!   r"   rN   e   s   
rN   c                 c   s    |  |ds	d S d}|dd}|dt|}|D ]"}| j|d|r=|d7 }||kr=td| dd|d	V   d S q||k r_|sNt|d
V  d S td| d| dd|d	V  d S d S )Nr@   r   minContainsr&   maxContainsr   z8Too many items match the given schema (expected at most ))r   validator_valuez1 does not contain items matching the given schemaz8Too few items match the given schema (expected at least z
 but only z	 matched))r   rB   r5   evolveis_validr   )r   containsr   r   matchesmin_containsmax_containsr0   r!   r!   r"   rV   j   sD   
rV   c                 c   s6    |  |ds	d S ||krt|d|V  d S d S )Nnumberz) is less than or equal to the minimum of r   r   )r   minimumr   r   r!   r!   r"   exclusiveMinimum      
r]   c                 c   s6    |  |ds	d S ||krt|d|V  d S d S )NrZ   z, is greater than or equal to the maximum of r[   )r   maximumr   r   r!   r!   r"   exclusiveMaximum   r^   r`   c                 c   s:    |  |ds	d S ||k r|d|}t|V  d S d S )NrZ   z is less than the minimum of r[   )r   r\   r   r   rF   r!   r!   r"   r\         r\   c                 c   s:    |  |ds	d S ||kr|d|}t|V  d S d S )NrZ   z  is greater than the maximum of r[   )r   r_   r   r   rF   r!   r!   r"   r_      ra   r_   c                 c   s    |  |ds	d S t|tr/|| }zt||k}W n ty.   t|t| jdk}Y nw || }|rAt|d| V  d S d S )NrZ   r&   z is not a multiple of )r   
isinstancefloatintOverflowErrorr   denominatorr   )r   dBr   r   quotientfailedr!   r!   r"   
multipleOf   s   
rj   c                 c   6    |  |drt||k rt|dV  d S d S d S )Nr@    is too shortr   r5   r   r   mIr   r   r!   r!   r"   minItems      rp   c                 c   6    |  |drt||krt|dV  d S d S d S )Nr@    is too longrm   rn   r!   r!   r"   maxItems   rq   rt   c                 c   s:    |r|  |drt|st|dV  d S d S d S d S )Nr@   z has non-unique elements)r   r   r   )r   uIr   r   r!   r!   r"   uniqueItems   s   
rv   c                 c   s:    |  |drt||st|d|V  d S d S d S )Nstringz does not match )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   rF   ry   )r   formatr   r   r>   r!   r!   r"   r|      s   
 r|   c                 c   rk   )Nrw   rl   rm   r   mLr   r   r!   r!   r"   	minLength   rq   r   c                 c   rr   )Nrw   rs   rm   r}   r!   r!   r"   	maxLength   rq   r   c                 c   s\    |  |ds	d S | D ]\}}||vrq|D ]}||vr*|d|}t|V  qqd S )Nr   z is a dependency of )r   r   r   )r   dependentRequiredr   r   r$   
dependencyr0   rF   r!   r!   r"   r      s   
r   c                 c   sH    |  |ds	d S | D ]\}}||vrq| j|||dE d H  qd S )Nr   r   r   r   r   )r   dependentSchemasr   r   r$   r   r!   r!   r"   r     s   r   c                 #   sp    |dks	|dkr&t | t fdd|D r$t|d|V  d S d S ||vr6t|d|V  d S d S )Nr   r&   c                 3   s    | ]	} t |kV  qd S r+   )r   r.   unbooledr!   r"   r1         zenum.<locals>.<genexpr>z is not one of )r   allr   )r   enumsr   r   r!   r   r"   enum  s   r   c                 c   s    t | jdd }|d u r.| j|}| ||E d H  W d    d S 1 s'w   Y  d S | j|\}}| j| z| ||E d H  W | j  d S | j  w )Nresolve)getattrresolver	resolvingr   r   
push_scope	pop_scope)r   refr   r   r   resolvedscoper!   r!   r"   r      s   "r   c           	   	   c   s    t |\}}| jjD ]:}t||}| j|%}d|v r6||d kr6| ||E d H  	 W d     d S W d    n1 s@w   Y  q| j|}| ||E d H  W d    d S 1 saw   Y  d S )Nz$dynamicAnchor)r   r   _scopes_stackr   r   r   )	r   
dynamicRefr   r   _fragmenturl
lookup_urlr   r!   r!   r"   r   /  s    
 "r   c                 #   sR    t |}t fdd|D s'ddd |D }t d| V  d S d S )Nc                 3   s    | ]	}  |V  qd S r+   )r   r/   typer   r   r!   r"   r1   A  r   ztype.<locals>.<genexpr>r)   c                 s   r*   r+   r,   r   r!   r!   r"   r1   B  r2   z is not of type )r   anyr6   r   )r   typesr   r   reprsr!   r   r"   r   >  s   r   c                 c   sL    |  |ds	d S | D ]\}}||v r#| j|| |||dE d H  qd S r   r   )r   
propertiesr   r   r$   r   r!   r!   r"   r   F  s   r   c                 c   s8    |  |ds	d S |D ]}||vrt|dV  qd S )Nr   z is a required propertyr[   )r   requiredr   r   r$   r!   r!   r"   r   T  s   r   c                 c   rk   )Nr   z  does not have enough propertiesrm   r   mPr   r   r!   r!   r"   minProperties\  rq   r   c                 c   sF    |  |ds	d S |  |drt||kr!t|dV  d S d S d S )Nr   z has too many propertiesrm   r   r!   r!   r"   maxPropertiesa  s   r   c                 c   s.    t |D ]\}}| j|||dE d H  qd S )Nr   )rI   r   )r   allOfr   r   rG   r   r!   r!   r"   r   h  s   r   c                 c   sX    g }t |D ]\}}t| j|||d}|s d S || qt|d|dV  d S )Nr   , is not valid under any of the given schemascontext)rI   listr   extendr   )r   anyOfr   r   
all_errorsrG   r   errsr!   r!   r"   r   m  s   r   c                 #   s    t |}g }|D ]\}}tj ||d}|s|}	 n|| q	t d|dV   fdd|D }
|
rT|
|	 ddd |
D }t d	| V  d S d S )
Nr   r   r   c                    s&   g | ]\}}j |d  r|qS )rQ   )rT   rU   )r/   r   r0   r   r!   r"   
<listcomp>  s    zoneOf.<locals>.<listcomp>r)   c                 s   r*   r+   r,   )r/   r   r!   r!   r"   r1     r2   zoneOf.<locals>.<genexpr>z is valid under each of )rI   r   r   r   r   appendr6   )r   oneOfr   r   
subschemasr   rG   r   r   first_valid
more_validr   r!   r   r"   r   {  s*   
r   c                 c   s4    | j |d|r|d|}t|V  d S d S )NrQ   z should not be valid under )rT   rU   r   )r   
not_schemar   r   rF   r!   r!   r"   not_  s
   r   c                 c   sp    | j |d|r!d|v r|d }| j||ddE d H  d S d S d|v r6|d }| j||ddE d H  d S d S )NrQ   thenr   else)rT   rU   r   )r   	if_schemar   r   r   else_r!   r!   r"   if_  s   r   c                 #   sV    |  |ds	d S t| ||  fddt|D }|r)d}t|t| V  d S d S )Nr@   c                    s   g | ]
\}}| vr|qS r!   r!   )r/   rG   rL   evaluated_item_indexesr!   r"   r     s
    z$unevaluatedItems.<locals>.<listcomp>z4Unevaluated items are not allowed (%s %s unexpected))r   r	   rI   r   r   )r   unevaluatedItemsr   r   unevaluated_itemsr>   r!   r   r"   r     s   
r   c           	      c   s    |  |ds	d S t| ||}g }|D ]}||vr,| j|| |||dD ]}|| q$q|rM|du r@d}t|t| V  d S d}t|t| V  d S d S )Nr   r   Fz9Unevaluated properties are not allowed (%s %s unexpected)z[Unevaluated properties are not valid under the given schema (%s %s unevaluated and invalid))r   r
   r   r   r   r   )	r   unevaluatedPropertiesr   r   evaluated_keysunevaluated_keysr$   r   r>   r!   r!   r"   r     s2   
r   c                 c   sJ    |  |ds	d S tt||D ]\\}}}| j||||dE d H  qd S )Nr@   )r   r   r   r   )r   ziprI   r   )r   rA   r   r   rG   rL   r   r!   r!   r"   rA     s   rA   )7	fractionsr   urllib.parser   r   r   jsonschema._utilsr   r   r   r   r	   r
   r   r   jsonschema.exceptionsr   r   r   r#   r?   r   rM   rN   rV   r]   r`   r\   r_   rj   rp   rt   rv   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r!   r!   r!   r"   <module>   sT    (
#				
