
    Mhh                        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d eD             Zd Zd ZdS )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                  0    e Zd ZdZdZd Zd ZddZd ZdS )	r   zA json schema validator.
jsonschemac                T    || _         t          |          | _        | j        | _        dS zInitialize the validator.N)_schema_JsonSchemaValidator_default_validator
_validator)selfschemas     T/var/www/html/test/jupyter/venv/lib/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_tree2   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 )	r	   z(A schema validator using fastjsonschema.fastjsonschemac                |    t                                          |           t          j        |          | _        dS r   )superr   r.   compiler   )r   r   	__class__s     r   r   z FastJsonSchemaValidator.__init__<   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.validateA   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   Nr4   )r0   r    r   r6   r   r7   r8   )r   r   r   r$   validate_funcr9   r2   s         r   r    z#FastJsonSchemaValidator.iter_errorsH   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_treeV   s     O!#&&&r   r&   )
r'   r(   r)   r*   r+   r   r   r    r%   __classcell__)r2   s   @r   r	   r	   7   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>rC   f   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 )r   
ValueError_VALIDATOR_MAP)validator_namer>   r+   modulevalidator_clss        r   _validator_for_namerJ   i   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getrJ   )rG   s    r   r
   r
   v   s)     Z^^$8:JKKN~...r   )r*   
__future__r   rM   r.   r   r   r6   r   r   jsonschema.exceptionsr   r   __all__r   r	   rF   r   rJ   r
   r,   r   r   <module>rS      sA    # " " " " " 				         F F F F F F > > > > > > < < < < < < < <  ( ( ( ( ( ( ( (8(' (' (' (' ('1 (' (' ('X ~'>?:23 21.111

 
 
/ / / / /r   