
    gW;                         d dl Z d dlmZ 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d Zd Zd Zd Zd Zy)    N)lookup_recursive_ref)_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.
    $ref)getitems)schemarefs     P/var/www/openai/venv/lib/python3.12/site-packages/jsonschema/_legacy_keywords.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*8#Z2 ((*( )    z84)'N*>xlK%g.."x'!%(<XLIG)'22 # !5
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"x'!%(<XLIG)'22 #
 !((*( )    !5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*   M   sZ     ((2
FZL#9:CCHM#&9(FG!'** 3s   =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_draft3r0   T   sj     (+$$Xw777%g.y$$Xye$LLL / 	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r3   r   )r   r,   r   zipr   r	   r   r
   r.   itemr/   s          r   items_draft3_draft4r8   \   s     Xw/)$X.KE4 ((u5(AAA / ),Ih,?(G$MUD9 ((ie )    )H Bs$   ABB=BBBBc              #     K   | j                  |d      r"| j                  |j                  di       d      ry t        |j                  dg             }| j                  |d      r5t        ||d  |      D ]!  \  }}| j	                  |||      E d {    # y |sjt        |      t        |j                  dg             kD  rBd}t        |t        j                  |t        |j                  dg             d        z         y y y 7 tw)Nr    r	   r   )startr2   z3Additional items are not allowed (%s %s unexpected))r   r   lenr,   r   r   r   
extras_msg)r   aIr   r
   	len_itemsr.   r7   errors           r   additionalItemsr@   j   s     h0VZZ4h?FJJw+,IX&$Xij%9KKE4 ((r(>>> LCMC

7B(?$@@EF%%hs6::gr3J/K/L&MNN
 	
 AR ?s   BD	DA5D	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    r4   r2   )r   r5   r,   r   r6   s          r   items_draft6_draft7_draft201909rB   |   s     Xw/((+Ih,?(G$MUD9 ((ie )    )H
 %X.KE4 ((u5(AAA /	
 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_draft4rK      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)NrD   exclusiveMaximumFzgreater than or equal tozgreater thanrF   z the maximum of rG   )r   maximumr   r
   rI   rJ   r   s          r   maximum_draft3_draft4rP      sp     Xx0zz$e,W$(G#LSE)9'Eg&& rL   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   r4   requiredFz is a required property)r   validator_valuer   r
   )
r   r	   r   r   r   _setr3   
appendleftr   extend)r   
propertiesr   r
   r   r/   r?   s          r   properties_draft3rX      s     Xx0)//1)x (("$	 )    ]]:u-#xl2I$JKEJJ$ )* 5!	   JJ!!(+$$h
%;<K%  2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   rV   appendrepr	Exceptionr   join)	r   typesr   r
   
all_errorsr.   r#   errorsreprss	            r   type_draft3re      s     u%EJ 'tT8,)++Hd+NOFf%x. ( E	%LLd6l+, 
 ,&tyy'7&89   	%LLd$	%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      G 	)227;s   +.zNone of z! are valid under the given schema)r   anyr   )r   rj   r   r
   s   ``  r   contains_draft6_draft7rm      sP     Xw/   xl"CD
 	
	s   <A c              #      K   t        | j                        }| j                  ||j                  |j                        E d {    y 7 w)N)resolver)r   	_resolverr   contentsro   )r   recursiveRefr   r
   resolveds        r   rr   rr      sH     #I$7$78H  "" !   s   AAA	Ac           	         | j                  |d      rg S g }|j                  d      }|f| j                  j                  |      }|j	                  t        | j                  |j                  |j                        ||j                               d|v r`t        | j                        }|j	                  t        | j                  |j                  |j                        ||j                               d|v rvd|v rt        t        t        |                  S | j                  |d   d      rt        t        t        |                  S |t        t        t        |d                     z  }d	|v rf| j                  |d	   
      j                  |      r+|t        | ||d	         z  }d|v r+|t        | ||d         z  }nd|v r|t        | ||d         z  }dD ]P  }||v st        |      D ];  \  }}| j                  ||   
      j                  |      s+|j                  |       = R dD ]@  }||v s||   D ]1  }	t!        | j#                  ||	      d      }
|
"|t        | ||	      z  }3 B |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   Nr
   rp   $recursiveRefr	   r@   r   ifr$   thenelse)rj   unevaluatedItemsallOfoneOfanyOf)r   r   rp   lookuprV   %find_evaluated_item_indexes_by_schemar&   rq   ro   r   r\   ranger;   r'   r,   r]   nextr   )r   r   r
   evaluated_indexesr   rs   keywordkvr/   errss              r   r   r      s    +	
**V
C
&&--c2  1  #,,&// !  !!		
 & '	(;(;<  1  #,,&// !  !!		
 &&c(m,--VG_h7c(m,--T%F7O(<"=>>v~6$<099(C!F8VD\"  !%Jx& ! v!F8VF^"  4f!(+1##6'?#;DDQG%,,Q/ , 4 /f#G_	I--h	BDI<%)N!8Y* % - / r   c              #      K   | j                  |d      sy t        | ||      }t        |      D cg c]  \  }}||vr| }}}|r&d}t        |t	        j
                  |      z         y y c c}}w w)Nr    z4Unevaluated items are not allowed (%s %s unexpected))r   r   r,   r   r   r<   )	r   r{   r   r
   evaluated_item_indexesr.   r7   unevaluated_itemsr?   s	            r   unevaluatedItems_draft2019r   @  s     Xw/B8V !*( 3 3.. 	 3   Fef&7&78I&JJKK 	s   /A3A-2A3c                     | j                  |d      rg S g }|j                  d      }|f| j                  j                  |      }|j	                  t        | j                  |j                  |j                        ||j                               d|v r`t        | j                        }|j	                  t        | j                  |j                  |j                        ||j                               dD ]d  }||v s||   }| j                  |d      r|r||j                         z  }5| j                  |d      sH|D ]  }||v s|j                  |        f d|v r9|D ]4  }|d   D ]*  }	t        j                  |	|      s|j                  |       , 6 d|v r0|d   j                         D ]  \  }}
||vr|t        | ||
      z  } d	D ]@  }||v s||   D ]1  }
t        | j!                  ||
      d       }|"|t        | ||
      z  }3 B d
|v rg| j                  |d
         j#                  |      r,|t        | ||d
         z  }d|v r|t        | ||d         z  }|S d|v r|t        | ||d         z  }|S )Nru   r   rv   rw   )rW   additionalPropertiesunevaluatedPropertiesr   patternPropertiesdependentSchemasr|   rx   r$   ry   rz   )r   r   rp   r   rV   &find_evaluated_property_keys_by_schemar&   rq   ro   r   keysr]   researchr	   r   r   r'   )r   r   r
   evaluated_keysr   rs   r   schema_valuer   patternr/   r   s               r   r   r   O  s   +	N
**V
C
&&--c22  #,,&// !  !!		
 & '	(;(;<2  #,,&// !  !!		
 f!'?L  y9l(--/1""<: ,H8+&--h7 !- f$ H!"5699Wh/"))(3 7 !
 V##)*<#=#C#C#EHix'D8Y N $F /f#G_	I--h	BDI<"&L!8Y' N - / v~6$<099(CD8VD\ N "Hx#   vD8VF^ N r   c              #     K   | j                  |d      sy t        | ||      }g }|D ]5  }||vs| j                  ||   |||      D ]  }|j                  |        7 |ra|du r7d}t	        |t
              }	t        |t        j                  |	      z         y d}t        |t        j                  |      z         y y w)Nr   r4   Fz9Unevaluated properties are not allowed (%s %s unexpected))keyz[Unevaluated properties are not valid under the given schema (%s %s unevaluated and invalid))	r   r   r   r]   sortedstrr   r   r<   )
r   uPr   r
   r   unevaluated_keysr   _r?   extrass
             r   unevaluatedProperties_draft2019r     s     Xx0;8VN >)&&"$	 '  !''1  ;OE,#6F!%&*;*;F*C"CDDC  "%&*;*;<L*M"MNN s   ,CBC)r   referencing.jsonschemar   
jsonschemar   jsonschema.exceptionsr   r   r   r!   r*   r0   r8   r@   rB   rK   rP   rX   re   rm   rr   r   r   r   r    r   r   <module>r      ss    	 7  13.<+M
$B' ' 22

K\LRjOr   