a
    d&                     @   s   d dl mZ d dl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"S )#    )lookup_recursive_ref)_utils)ValidationErrorc                 C   s(   |  d}|durd|fgS |  S dS )z
    Ignore siblings of ``$ref`` if it is present.

    Otherwise, return all keywords.

    Suitable for use with `create`'s ``applicable_validators`` argument.
    $refN)getitems)schemaref r
   f/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/jsonschema/_legacy_validators.pyignore_ref_siblings   s    

r   c                 c   s   |  |dsd S | D ]\}}||vr*q|  |drN| j|||dE d H  q|  |dr|||vr|d|}t|V  q|D ]$}||vr|d|}t|V  qqd S )Nobjectschema_pathstring is a dependency of )is_typer   descendr   )	validatordependenciesinstancer   property
dependencymessageeachr
   r
   r   dependencies_draft3   s"    r   c                 c   s~   |  |dsdS | D ]`\}}||vr*q|  |drb|D ]$}||vr:|d|}t|V  q:q| j|||dE dH  qdS )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   r
   r
   r   !dependencies_draft4_draft6_draft7-   s    r   c                 c   sD   t |D ]4}| jd|gid|r
|d|}t|V  q
d S )Ntyper   z is disallowed for )r   ensure_listevolveis_validr   )r   Zdisallowr   r   Z
disallowedr   r
   r
   r   disallow_draft3K   s    r#   c                 c   sN   |  |dr"| ||E d H  d S t|D ]\}}| j|||dE d H  q*d S )Nr   r   )r   r   	enumerate)r   Zextendsr   r   index	subschemar
   r
   r   extends_draft3R   s
    r'   c                 c   s~   |  |dsd S |  |drFt|D ]\}}| j|||dE d H  q$n4tt||D ]$\\}}}| j||||dE d H  qTd S )Nr   r   pathr)   r   )r   r$   r   zipr   r   r   r   r%   itemr&   r
   r
   r   items_draft3_draft4Z   s    r.   c                 c   s~   |  |dsd S |  |drRtt||D ]$\\}}}| j||||dE d H  q*n(t|D ]\}}| j|||dE d H  qZd S )Nr   r*   r(   )r   r+   r$   r   r,   r
   r
   r   items_draft6_draft7_draft201909h   s    r/   c                 c   s\   |  |dsd S |ddr*||k}d}n||k }d}|rX|d| d|}t|V  d S )NnumberZexclusiveMinimumFzless than or equal toz	less than is z the minimum of r   r   r   )r   Zminimumr   r   failedcmpr   r
   r
   r   minimum_draft3_draft4v   s    r5   c                 c   s\   |  |dsd S |ddr*||k}d}n||k}d}|rX|d| d|}t|V  d S )Nr0   ZexclusiveMaximumFzgreater than or equal tozgreater thanr1   z the maximum of r2   )r   maximumr   r   r3   r4   r   r
   r
   r   maximum_draft3_draft4   s    r7   c                 c   s   |  |dsd S | D ]\}}||v rF| j|| |||dE d H  q|ddrt|d}|jd|d ||d |j| |j	|dg |V  qd S )Nr   r*   requiredFz is a required property)r   Zvalidator_valuer   r   )
r   r   r   r   r   Z_setr)   
appendleftr   extend)r   Z
propertiesr   r   r   r&   errorr
   r
   r   properties_draft3   s*    r<   c           	   	   c   s   t |}g }t|D ]P\}}| |drTt| j|||d}|sH d S || q| ||r d S qg }|D ]<}z|t|d  W qp t	y   |t| Y qp0 qpt
|dd| |dV  d S )Nr   r   namez is not of type z, )context)r   r    r$   r   listr   r:   appendrepr	Exceptionr   join)	r   typesr   r   
all_errorsr%   r   errorsZreprsr
   r
   r   type_draft3   s(    
rG   c                 #   s>    |dsd S t fdd|D s:td|dV  d S )Nr   c                 3   s    | ]}j  d |V  qdS )r   N)r!   r"   ).0elementcontainsr   r
   r   	<genexpr>   s   z)contains_draft6_draft7.<locals>.<genexpr>zNone of z! are valid under the given schema)r   anyr   )r   rK   r   r   r
   rJ   r   contains_draft6_draft7   s    
rN   c                 c   s(   t | j}| j||j|jdE d H  d S )N)resolver)r   	_resolverr   contentsrO   )r   recursiveRefr   r   resolvedr
   r
   r   rR      s    
rR   c           
      C   s  |  |drg S g }d|v rN| j|d }|t| j|j|jd||j d|v rd|v rptt	dt
|S |  |d drtt	dt
|S |tt	dt
|d 7 }d|v r| j|d d	|r|t| ||d 7 }d
|v r|t| ||d
 7 }nd|v r|t| ||d 7 }dD ]F}||v r t|D ],\}}| j|| d	|r6|| q6q dD ]L}||v rl|| D ]2}t| ||d}	|	du r|t| ||7 }qql|S )z
    Get all indexes of items that get evaluated under the current schema.

    Covers all keywords related to unevaluatedItems: items, prefixItems, if,
    then, else, contains, unevaluatedItems, allOf, oneOf, anyOf
    booleanr   )r   rP   r   ZadditionalItemsr   r   ifr   Zthenelse)rK   unevaluatedItems)ZallOfoneOfZanyOfN)r   rP   lookupr:   %find_evaluated_item_indexes_by_schemar!   rQ   rO   r?   rangelenr"   r$   r@   nextr   )
r   r   r   Zevaluated_indexesrS   keywordkvr&   Zerrsr
   r
   r   rZ      s`    







rZ   c                 #   sR   |  |dsd S t| ||  fddt|D }|rNd}t|t| V  d S )Nr   c                    s   g | ]\}}| vr|qS r
   r
   )rH   r%   r-   Zevaluated_item_indexesr
   r   
<listcomp>&  s   z.unevaluatedItems_draft2019.<locals>.<listcomp>z4Unevaluated items are not allowed (%s %s unexpected))r   rZ   r$   r   r   Z
extras_msg)r   rW   r   r   Zunevaluated_itemsr;   r
   ra   r   unevaluatedItems_draft2019   s    
rc   N)Zreferencing.jsonschemar   Z
jsonschemar   Zjsonschema.exceptionsr   r   r   r   r#   r'   r.   r/   r5   r7   r<   rG   rN   rR   rZ   rc   r
   r
   r
   r   <module>   s"   	A