
    fh                        d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ	 ddl
mZmZ g dZ G d d	      Z G d
 de      ZdeefdeefgZeD  cg c]  } | d   	 c} Zd Zd Zyc c} w )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                  .    e Zd ZdZdZd Zd ZddZd Zy)	r   zA json schema validator.
jsonschemac                T    || _         t        |      | _        | j                  | _        yzInitialize the validator.N)_schema_JsonSchemaValidator_default_validator
_validator)selfschemas     O/var/www/cvtools/html/venv/lib/python3.12/site-packages/nbformat/json_compat.py__init__zJsonSchemaValidator.__init__    s#    "6v">11    c                :    | j                   j                  |       y)Validate incoming data.N)r   validate)r   datas     r   r   zJsonSchemaValidator.validate&   s    ((.r   Nc                    || j                   j                  |      S t        | j                   d      r+| j                   j                  |      j                  |      S | j                   j                  ||      S )%Iterate over errors in incoming data.evolve)r   )r   iter_errorshasattrr   )r   r   r   s      r   r    zJsonSchemaValidator.iter_errors*   sl    >**66t<<4**H5**111@LLTRR&&224@@r   c                    t        |      S )$Create an error tree for the errors.)errors)r   )r   r$   s     r   
error_treezJsonSchemaValidator.error_tree2   s    ''r   N)	__name__
__module____qualname____doc__namer   r   r    r%    r   r   r   r      s    "D2/A(r   r   c                  >     e Zd ZdZdZ fdZd Zd fd	Zd Z xZ	S )r	   z(A schema validator using fastjsonschema.fastjsonschemac                X    t         |   |       t        j                  |      | _        yr   )superr   r.   compiler   )r   r   	__class__s     r   r   z FastJsonSchemaValidator.__init__<   s"     (008r   c                    	 | j                  |       y# t        $ r&}t        t        |      |j                        |d}~ww xY w)r   schema_pathN)r   _JsonSchemaExceptionr   strpath)r   r   errors      r   r   z FastJsonSchemaValidator.validateA   s=    	QOOD!# 	Q!#e*%**E5P	Qs    	A!>Ac                    |t         |   ||      S g }| j                  }	  ||       |S # t        $ r,}t	        t        |      |j                        g}Y d}~|S d}~ww xY w)r   Nr4   )r0   r    r   r6   r   r7   r8   )r   r   r   r$   validate_funcr9   r2   s         r   r    z#FastJsonSchemaValidator.iter_errorsH   sn    7&tV44	K$  $ 	K%c%jejjIJF	Ks   - 	A"!AA"c                    d}t        |      )r#   z>JSON schema error introspection not enabled for fastjsonschema)NotImplementedError)r   r$   msgs      r   r%   z"FastJsonSchemaValidator.error_treeV   s     O!#&&r   r&   )
r'   r(   r)   r*   r+   r   r   r    r%   __classcell__)r2   s   @r   r	   r	   7   s     2D9
Q	'r   r	   r.   r   c                    | t         vrd|  dt          }t        |      t        D ]  \  }}}|s
| |k(  s|c S  d| }t        |      )NzInvalid validator 'z' value!
Valid values are: zMissing validator for )r   
ValueError_VALIDATOR_MAP)validator_namer>   r+   modulevalidator_clss        r   _validator_for_namerF   i   sh    Z'#N#33OPZ|\o'5 !#fmn,  ! #>"4
5C
S/r   c                 X    t         j                  j                  dd      } t        |       S )zU
    Return the default validator based on the value of an environment variable.
    NBFORMAT_VALIDATORr.   )osenvirongetrF   )rC   s    r   r
   r
   v   s%     ZZ^^$8:JKN~..r   )r*   
__future__r   rI   r.   r   r   r6   r   r   jsonschema.exceptionsr   r   __all__r   r	   rB   r   rF   r
   )items   0r   <module>rP      s    # 	   F > <( (8('1 ('X ~'>?:23 #11$d1g1

/! 2s   A&