
    ^hh                        S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJr	  SSK
JrJr  / SQr " S S	5      r " S
 S\5      rS\\4S\\4/r\ V s/ s H  o S   PM	     sn rS rS rgs  sn f )z[
Common validator wrapper to provide a uniform usage of other schema validation
libraries.
    )annotationsN)JsonSchemaException)Draft4Validator)	ErrorTreeValidationError)r   JsonSchemaValidatorFastJsonSchemaValidatorget_current_validator
VALIDATORSc                  8    \ rS rSrSrSrS rS rS
S jrS r	S	r
g)r      zA json schema validator.
jsonschemac                R    Xl         [        U5      U l        U R                  U l        gzInitialize the validator.N)_schema_JsonSchemaValidator_default_validator
_validator)selfschemas     N/home/james-whalen/.local/lib/python3.13/site-packages/nbformat/json_compat.py__init__JsonSchemaValidator.__init__    s!    "6v">11    c                :    U R                   R                  U5        g)Validate incoming data.N)r   validate)r   datas     r   r   JsonSchemaValidator.validate&   s    ((.r   Nc                    Uc  U R                   R                  U5      $ [        U R                   S5      (       a(  U R                   R                  US9R                  U5      $ U R                   R                  X5      $ )%Iterate over errors in incoming data.evolve)r   )r   iter_errorshasattrr"   )r   r   r   s      r   r#   JsonSchemaValidator.iter_errors*   sm    >**66t<<4**H55**111@LLTRR&&224@@r   c                    [        US9$ )$Create an error tree for the errors.)errors)r   )r   r(   s     r   
error_treeJsonSchemaValidator.error_tree2   s    ''r   )r   r   r   N)__name__
__module____qualname____firstlineno____doc__namer   r   r#   r)   __static_attributes__ r   r   r   r      s    "D2/A(r   r   c                  L   ^  \ rS rSrSrSrU 4S jrS rS	U 4S jjrS r	Sr
U =r$ )
r	   7   z(A schema validator using fastjsonschema.fastjsonschemac                Z   > [         TU ]  U5        [        R                  " U5      U l        gr   )superr   r6   compiler   )r   r   	__class__s     r   r    FastJsonSchemaValidator.__init__<   s"     (008r   c                     U R                  U5        g! [         a#  n[        [        U5      UR                  S9UeSnAff = f)r   schema_pathN)r   _JsonSchemaExceptionr   strpath)r   r   errors      r   r    FastJsonSchemaValidator.validateA   s=    	QOOD!# 	Q!#e*%**E5P	Qs    
A<Ac                   > Ub  [         TU ]  X5      $ / nU R                  n U" U5        U$ ! [         a)  n[	        [        U5      UR                  S9/n SnAU$ SnAff = f)r!   Nr=   )r8   r#   r   r?   r   r@   rA   )r   r   r   r(   validate_funcrB   r:   s         r   r#   #FastJsonSchemaValidator.iter_errorsH   sl    7&t44	K$  $ 	K%c%jejjIJF	Ks   - 
A AA c                    Sn[        U5      e)r'   z>JSON schema error introspection not enabled for fastjsonschema)NotImplementedError)r   r(   msgs      r   r)   "FastJsonSchemaValidator.error_treeV   s     O!#&&r   )r   r+   )r,   r-   r.   r/   r0   r1   r   r   r#   r)   r2   __classcell__)r:   s   @r   r	   r	   7   s%    2D9
Q	' 	'r   r	   r6   r   c                    U [         ;  a  SU  S[          3n[        U5      e[         H  u  p#nU(       d  M  X:X  d  M  Us  $    SU < 3n[        U5      e)NzInvalid validator 'z' value!
Valid values are: zMissing validator for )r   
ValueError_VALIDATOR_MAP)validator_namerI   r1   modulevalidator_clss        r   _validator_for_namerR   i   sa    Z'#N#33OPZ|\o'5#m6n,   (6 #>"4
5C
S/r   c                 X    [         R                  R                  SS5      n [        U 5      $ )zM
Return the default validator based on the value of an environment variable.
NBFORMAT_VALIDATORr6   )osenvirongetrR   )rO   s    r   r
   r
   v   s%     ZZ^^$8:JKN~..r   )r0   
__future__r   rU   r6   r   r   r?   r   r   jsonschema.exceptionsr   r   __all__r   r	   rN   r   rR   r
   )items   0r   <module>r\      s    # 	   F > <( (8('1 ('X ~'>?:23 #11.$1g.1

/! 2s   A(