
    MhW;                         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dS )    N)lookup_recursive_ref)_utils)ValidationErrorc                 b    |                      d          }|d|fgS |                                 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     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jsonschema/_legacy_keywords.pyignore_ref_siblingsr   	   s4     **V

C
||~~    c              #     K   |                      |d          sd S |                                D ]\  }}||vr
|                      |d          r|                     |||          E d {V  ?|                      |d          r||vr|d|}t          |          V  r|D ]}||vr|d|}t          |          V  d S )Nobjectschema_pathstring is a dependency of )is_typer	   descendr   )	validatordependenciesinstancer
   property
dependencymessageeachs           r   dependencies_draft3r      sN     Xx00  , 2 2 4 4 3 3*8##Z22 	3 ((*( )           z844 	3))'KKxKK%g....." 3 3x''!%IIXIIG)'2222233 3r   c              #   $  K   |                      |d          sdS |                                D ]`\  }}||vr
|                      |d          r"|D ]}||vr|d|}t          |          V  B|                     |||          E d{V  ad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   s           r   !dependencies_draft4_draft6_draft7r!   /   s      Xx00  , 2 2 4 4  *8##Z11 	" 3 3x''!%IIXIIG)'222223
 !((*( )           r   c              #      K   t          j        |          D ]F}|                     d|gi                              |          r|d|}t	          |          V  Gd S )Ntyper
   z is disallowed for )r   ensure_listevolveis_validr   )r   disallowr   r
   
disallowedr   s         r   disallow_draft3r*   M   s      (22 + +
FZL#9::CCHMM 	+#FF(FFG!'*****+ +r   c              #      K   |                      |d          r|                     ||          E d {V  d S t          |          D ]#\  }}|                     |||          E d {V  $d S )Nr   r   )r   r   	enumerate)r   extendsr   r
   index	subschemas         r   extends_draft3r0   T   s      (++ $$Xw777777777%g.. M My$$Xye$LLLLLLLLLLM Mr   c              #   Z  K   |                      |d          sd S |                      |d          r5t          |          D ]#\  }}|                     |||          E d {V  $d S t          t          |          |          D ]'\  \  }}}|                     ||||          E d {V  (d S )Nr    r   pathr3   r   )r   r,   r   zipr   r	   r   r
   r.   itemr/   s          r   items_draft3_draft4r8   \   s     Xw// )) $X.. 	B 	BKE4 ((u5(AAAAAAAAAA	B 	B ),Ih,?,?(G(G 	 	$MUD9 ((ie )          	 	r   c              #     K   |                      |d          r*|                      |                    di           d          rd S t          |                    dg                     }|                      |d          r?t          ||d          |          D ]#\  }}|                     |||          E d {V  $d S |st          |          t          |                    dg                     k    rUd}t          |t          j        |t          |                    dg                     d                    z            V  d S d S d S )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0VZZ44h?? 	FJJw++,,IX&& 
$Xijj%9KKK 	? 	?KE4 ((r(>>>>>>>>>>	? 	? 
CMMC

7B(?(?$@$@@@EF%hs6::gr3J3J/K/K/L/L&MNNN
 
 	
 	
 	
 	
 	

 
@@r   c              #   Z  K   |                      |d          sd S |                      |d          rGt          t          |          |          D ]'\  \  }}}|                     ||||          E d {V  (d S t          |          D ]#\  }}|                     |||          E d {V  $d S )Nr    r4   r2   )r   r5   r,   r   r6   s          r   items_draft6_draft7_draft201909rB   |   s     Xw// (( B(+Ih,?,?(G(G 	 	$MUD9 ((ie )          	 	
 %X.. 	B 	BKE4 ((u5(AAAAAAAAAA	B 	Br   c              #      K   |                      |d          sd S |                    dd          r	||k    }d}n||k     }d}|r|d| d|}t          |          V  d S d S )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      s      Xx00 zz$e,, W$%G# 'EESEE'EEg&&&&&&&' 'r   c              #      K   |                      |d          sd S |                    dd          r	||k    }d}n||k    }d}|r|d| d|}t          |          V  d S d S )NrD   exclusiveMaximumFzgreater than or equal tozgreater thanrF   z the maximum of rG   )r   maximumr   r
   rI   rJ   r   s          r   maximum_draft3_draft4rO      s      Xx00 zz$e,, W$(G# 'EESEE'EEg&&&&&&&' 'r   c              #     K   |                      |d          sd S |                                D ]\  }}||v r&|                     ||         |||          E d {V  /|                    dd          rkt	          |d          }|                    d|d         ||           |j                            |           |j        	                    |dg           |V  d S )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_draft3rW      sA     Xx00 )//11  )x (("$	 )           ]]:u-- 
	#x$J$J$JKKEJJ$ )* 5!	     J!!(+++$$h
%;<<<KKK% r   c              #   X  K   t          j        |          }g }t          |          D ]t\  }}|                     |d          r@t	          |                     |||                    }|s d S |                    |           [|                     ||          r d S ug }|D ]]}	 |                    t          |d                              ,# t          $ r% |                    t          |                     Y Zw xY wt          |dd                    |           |          V  d S )Nr   r   namez is not of type z, )context)r   r%   r,   r   listr   rU   appendrepr	Exceptionr   join)	r   typesr   r
   
all_errorsr.   r#   errorsreprss	            r   type_draft3rd      sz     u%%EJ ''  tT8,, 	)++Hd+NNOOF f%%%%x.. 		 E % %	%LLd6l++,,,, 	% 	% 	%LLd$$$$$	%
99tyy'7'799       s   $(C,C<;C<c              #       K                         |d          sd S t           fd|D                       st          d|d          V  d S d S )Nr    c              3   j   K   | ]-}                                                    |          V  .dS )r$   N)r&   r'   ).0elementcontainsr   s     r   	<genexpr>z)contains_draft6_draft7.<locals>.<genexpr>   sV         	))227;;     r   zNone of z! are valid under the given schema)r   anyr   )r   ri   r   r
   s   ``  r   contains_draft6_draft7rl      s      Xw//           
 DxDDD
 
 	
 	
 	
 	
 	
	
 
r   c              #      K   t          | j                  }|                     ||j        |j                  E d {V  d S )N)resolver)r   	_resolverr   contentsrn   )r   recursiveRefr   r
   resolveds        r   rq   rq      sj      #I$788H  " !           r   c           	         |                      |d          rg S g }|                    d          }|b| j                            |          }|                    t          |                     |j        |j                  ||j                             d|v r\t          | j                  }|                    t          |                     |j        |j                  ||j                             d|v rd|v r)t          t          t          |                              S |                      |d         d          r)t          t          t          |                              S |t          t          t          |d                                       z  }d	|v r|                     |d	         
                              |          r9|t          | ||d	                   z  }d|v r|t          | ||d                   z  }nd|v r|t          | ||d                   z  }dD ]_}||v rYt          |          D ]I\  }}|                     ||         
                              |          r|                    |           J`dD ]K}||v rE||         D ]<}	t!          |                     ||	          d          }
|
|t          | ||	          z  }=L|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
   ro   $recursiveRefr	   r@   r   ifr$   thenelse)ri   unevaluatedItemsallOfoneOfanyOf)r   r   ro   lookuprU   %find_evaluated_item_indexes_by_schemar&   rp   rn   r   r[   ranger;   r'   r,   r\   nextr   )r   r   r
   evaluated_indexesr   rr   keywordkvr/   errss              r   r   r      sU    ++ 	
**V

C
&--c22  1  #,&/ !   ! 		
 		
 		
 &  '	(;<<  1  #,&/ !   ! 		
 		
 		
 &&&c(mm,,---VG_h77 	.c(mm,,---T%F7O(<(<"="=>>>v~~6$<0099(CC 	!F8VD\" "  !%Jx& & ! v!F8VF^" "  4 0 0f!(++ 0 01##6'?#;;DDQGG 0%,,Q///.  f#G_  	I--h	BBDII<%)N!8Y* * % r   c              #      K   |                      |d          sd S t          | ||          fdt          |          D             }|r*d}t          |t	          j        |          z            V  d S d S )Nr    c                 "    g | ]\  }}|v	|S  r   )rg   r.   r7   evaluated_item_indexess      r   
<listcomp>z.unevaluatedItems_draft2019.<locals>.<listcomp>F  s3       ... 	...r   z4Unevaluated items are not allowed (%s %s unexpected))r   r   r,   r   r   r<   )r   rz   r   r
   unevaluated_itemsr?   r   s         @r   unevaluatedItems_draft2019r   @  s      Xw// B8V     )( 3 3    LFef&78I&J&JJKKKKKKKL Lr   c                 |   |                      |d          rg S g }|                    d          }|b| j                            |          }|                    t          |                     |j        |j                  ||j                             d|v r\t          | j                  }|                    t          |                     |j        |j                  ||j                             dD ]r}||v rl||         }|                      |d          r|r||
                                z  }>|                      |d          r|D ]}||v r|                    |           sd|v r:|D ]7}|d         D ],}	t          j        |	|          r|                    |           -8d|v r9|d                                         D ]\  }}
||vr
|t          | ||
          z  }d	D ]K}||v rE||         D ]<}
t          |                     ||
          d           }||t          | ||
          z  }=Ld
|v r|                     |d
                                       |          r9|t          | ||d
                   z  }d|v r|t          | ||d                   z  }nd|v r|t          | ||d                   z  }|S )Nrt   r   ru   rv   )rV   additionalPropertiesunevaluatedPropertiesr   patternPropertiesdependentSchemasr{   rw   r$   rx   ry   )r   r   ro   r   rU   &find_evaluated_property_keys_by_schemar&   rp   rn   r   keysr\   researchr	   r   r   r'   )r   r   r
   evaluated_keysr   rr   r   schema_valuer   patternr/   r   s               r   r   r   O  s   ++ 	N
**V

C
&--c222  #,&/ !   ! 		
 		
 		
 &  '	(;<<2  #,&/ !   ! 		
 		
 		
 8 8 f!'?L  y99 8l 8(--//1""<:: 8 , 8 8H8++&--h777f$$  	4 	4H!"56 4 49Wh// 4"))(3334 V###)*<#=#C#C#E#E 	 	Hix''D8Y  NN /  f#G_  	I--h	BBDII<"&L!8Y' ' N v~~6$<0099(CC 	D8VD\  N "Hx# #  vD8VF^  N r   c              #     K   |                      |d          sd S t          | ||          }g }|D ]=}||vr7|                     ||         |||          D ]}|                    |           >|rn|du r@d}t	          |t
                    }	t          |t          j        |	          z            V  d S d}t          |t          j        |          z            V  d S d S )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     sB     Xx00 ;8V N  
2 
2>))&&"$	 '   2 2 !''1111 
O;;OE,#666F!%&*;F*C*C"CDDDDDDDC  "%&*;<L*M*M"MNNNNNNN
O 
Or   )r   referencing.jsonschemar   
jsonschemar   jsonschema.exceptionsr   r   r   r!   r*   r0   r8   r@   rB   rK   rO   rW   rd   rl   rq   r   r   r   r   r   r   r   <module>r      sr   				 7 7 7 7 7 7       1 1 1 1 1 1  3 3 3.  <+ + +M M M  
 
 
$B B B' ' ' ' ' '   2  2

 

 

  K K K\L L LR R RjO O O O Or   