
    e                         d 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 d          Z G d d	e          Zd
eefdeefgZd eD             Zd Zd ZdS )z[
Common validator wrapper to provide a uniform usage of other schema validation
libraries.
    N)JsonSchemaException)Draft4Validator)	ErrorTreeValidationErrorc                   0    e Zd ZdZdZd Zd ZddZd ZdS )	JsonSchemaValidatorzA json schema validator.
jsonschemac                 T    || _         t          |          | _        | j        | _        dS zInitialize the validator.N)_schema_JsonSchemaValidator_default_validator
_validator)selfschemas     4lib/python3.11/site-packages/nbformat/json_compat.py__init__zJsonSchemaValidator.__init__   s'    "6v">">1    c                 :    | j                             |           dS )Validate incoming data.N)r   validate)r   datas     r   r   zJsonSchemaValidator.validate   s    ((.....r   Nc                     || j                             |          S t          | j         d          r.| j                             |                              |          S | j                             ||          S )%Iterate over errors in incoming data.Nevolve)r   )r   iter_errorshasattrr   )r   r   r   s      r   r   zJsonSchemaValidator.iter_errors    su    >*66t<<<4*H55 	S*111@@LLTR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_tree(   s    ''''r   N)	__name__
__module____qualname____doc__namer   r   r   r!    r   r   r   r      sd        ""D2 2 2/ / /A A A 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 )	FastJsonSchemaValidatorz(A schema validator using fastjsonschema.fastjsonschemac                 |    t                                          |           t          j        |          | _        dS r   )superr   r+   compiler   )r   r   	__class__s     r   r   z FastJsonSchemaValidator.__init__2   s1       (088r   c                     	 |                      |           dS # 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.validate7   s`    	QOOD!!!!!# 	Q 	Q 	Q!#e**%*EEE5P	Qs    
A$AANc                     |"t                                          ||          S g }| j        }	  ||           n;# t          $ r.}t	          t          |          |j                  g}Y d}~nd}~ww xY w|S )r   Nr1   )r-   r   r   r3   r   r4   r5   )r   r   r   r    validate_funcr6   r/   s         r   r   z#FastJsonSchemaValidator.iter_errors>   s    77&&tV444	KM$# 	K 	K 	K%c%jjejIIIJFFFFFF	K s   < 
A4$A//A4c                 $    d}t          |          )r   z>JSON schema error introspection not enabled for fastjsonschema)NotImplementedError)r   r    msgs      r   r!   z"FastJsonSchemaValidator.error_treeL   s     O!#&&&r   r"   )
r#   r$   r%   r&   r'   r   r   r   r!   __classcell__)r/   s   @r   r*   r*   -   s        22D9 9 9 9 9
Q Q Q     	' 	' 	' 	' 	' 	' 	'r   r*   r+   r	   c                     g | ]
}|d          S )r   r(   ).0items     r   
<listcomp>r@   \   s    111$d1g111r   c                     | t           vrd|  dt            }t          |          t          D ]\  }}}|r
| |k    r|c S d| }t          |          )NzInvalid validator 'z' value!
Valid values are: zMissing validator for )
VALIDATORS
ValueError_VALIDATOR_MAP)validator_namer;   r'   modulevalidator_clss        r   _validator_for_namerH   _   s}    Z''\N\\PZ\\oo'5 ! !#fm 	!n,,    
5>
5
5C
S//r   c                  `    t           j                            dd          } t          |           S )zU
    Return the default validator based on the value of an environment variable.
    NBFORMAT_VALIDATORr+   )osenvirongetrH   )rE   s    r   get_current_validatorrN   l   s)     Z^^$8:JKKN~...r   )r&   rK   r+   r	   r   r3   r   r   jsonschema.exceptionsr   r   r   r*   rD   rB   rH   rN   r(   r   r   <module>rP      s    
			         F F F F F F > > > > > > < < < < < < < <( ( ( ( ( ( ( (8(' (' (' (' ('1 (' (' ('X ~'>?:23 21.111

 
 
/ / / / /r   