o
    i                     @   s   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 dZ
G dd	 d	e
Zd
eefdee
fgZdd eD Zdd Zdd ZdS )z[
Common validator wrapper to provide a uniform usage of other schema validation
libraries.
    N)JsonSchemaException)Draft4Validator)	ErrorTreeValidationErrorc                   @   s6   e Zd ZdZdZdd Zdd Zddd	Zd
d ZdS )JsonSchemaValidatorzA json schema validator.
jsonschemac                 C   s   || _ t|| _| j| _dS zInitialize the validator.N)_schema_JsonSchemaValidator_default_validator
_validatorselfschema r   O/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/nbformat/json_compat.py__init__   s   
zJsonSchemaValidator.__init__c                 C   s   | j | dS )Validate incoming data.N)r   validate)r   datar   r   r   r      s   zJsonSchemaValidator.validateNc                 C   sB   |du r
| j |S t| j dr| j j|d|S | j ||S )%Iterate over errors in incoming data.Nevolve)r   )r   iter_errorshasattrr   )r   r   r   r   r   r   r       s
   zJsonSchemaValidator.iter_errorsc                 C   s
   t |dS )$Create an error tree for the errors.)errors)r   r   r   r   r   r   
error_tree(   s   
zJsonSchemaValidator.error_treeN)	__name__
__module____qualname____doc__namer   r   r   r   r   r   r   r   r      s    
r   c                       sB   e Zd ZdZdZ fddZdd Zd fdd		Zd
d Z  Z	S )FastJsonSchemaValidatorz(A schema validator using fastjsonschema.fastjsonschemac                    s   t  | t|| _dS r   )superr   r%   compiler   r   	__class__r   r   r   2   s   z FastJsonSchemaValidator.__init__c              
   C   s>   z|  | W dS  ty } z
tt||jd|d}~ww )r   schema_pathN)r   _JsonSchemaExceptionr   strpath)r   r   errorr   r   r   r   7   s   z FastJsonSchemaValidator.validateNc              
      sj   |durt  ||S g }| j}z|| W |S  ty4 } ztt||jdg}W Y d}~|S d}~ww )r   Nr*   )r&   r   r   r,   r   r-   r.   )r   r   r   r   validate_funcr/   r(   r   r   r   >   s   
z#FastJsonSchemaValidator.iter_errorsc                 C   s   t d)r   z>JSON schema error introspection not enabled for fastjsonschema)NotImplementedErrorr   r   r   r   r   L   s   z"FastJsonSchemaValidator.error_treer   )
r   r    r!   r"   r#   r   r   r   r   __classcell__r   r   r(   r   r$   -   s    r$   r%   r   c                 C   s   g | ]}|d  qS )r   r   ).0itemr   r   r   
<listcomp>[   s    r5   c                 C   sR   | t vrtd|  dt  tD ]\}}}|r| |kr|  S qtdt|  )NzInvalid validator 'z' value!
Valid values are: zMissing validator for )
VALIDATORS
ValueError_VALIDATOR_MAPrepr)validator_namer#   modulevalidator_clsr   r   r   _validator_for_name^   s   r=   c                  C   s   t jdd} t| S )zU
    Return the default validator based on the value of an environment variable.
    NBFORMAT_VALIDATORr%   )osenvirongetr=   )r:   r   r   r   get_current_validatork   s   rB   )r"   r?   r%   r   r   r,   r   r
   r   r   r   r$   r8   r6   r=   rB   r   r   r   r   <module>   s    +