
    Ud                         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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.
    N)JsonSchemaException)Draft4Validator)	ErrorTreeValidationErrorc                   .    e Zd ZdZdZd Zd ZddZd Zy)	JsonSchemaValidatorzA json schema validator.
jsonschemac                 T    || _         t        |      | _        | j                  | _        yzInitialize the validator.N)_schema_JsonSchemaValidator_default_validator
_validator)selfschemas     6/usr/lib/python3/dist-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_tree(   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 )FastJsonSchemaValidatorz(A schema validator using fastjsonschema.fastjsonschemac                 X    t         |   |       t        j                  |      | _        yr   )superr   r+   compiler   )r   r   	__class__s     r   r   z FastJsonSchemaValidator.__init__2   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.validate7   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   Nr1   )r-   r   r   r3   r   r4   r5   )r   r   r   r    validate_funcr6   r/   s         r   r   z#FastJsonSchemaValidator.iter_errors>   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_treeL   s     O!#&&r   r"   )
r#   r$   r%   r&   r'   r   r   r   r!   __classcell__)r/   s   @r   r*   r*   -   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 )
VALIDATORS
ValueError_VALIDATOR_MAP)validator_namer;   r'   modulevalidator_clss        r   _validator_for_namerD   _   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getrD   )rA   s    r   get_current_validatorrJ   l   s%     ZZ^^$8:JKN~..r   )r&   rG   r+   r	   r   r3   r   r   jsonschema.exceptionsr   r   r   r*   r@   r>   rD   rJ   )items   0r   <module>rM      sz    
   F > <( (8('1 ('X ~'>?:23 #11$d1g1

/! 2s   A