o
    i                     @   s   d dl mZmZ d dl mZ d dlmZ d dlmZ d dlZej	d  dkr'e
ZG dd deZG d	d
 d
eZG dd deZG dd deZdS )    )YAMLValidationErrorYAMLSerializationError)InvalidValidatorError)YAML)utilsN   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	Validatorc                 C   s
   t | |S N)OrValidator)selfother r   S/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/strictyaml/validators.py__or__   s   
zValidator.__or__c                 C   s   |  | t|| dS )N	validator)validater   )r   chunkr   r   r   __call__   s   
zValidator.__call__c                 C   s   d | jjS )Nz{0}())format	__class____name__r   r   r   r   __repr__   s   zValidator.__repr__N)r   
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                   @      e Zd Zdd ZdS )MapValidatorc                 C   0   t |tstd|t|dkrtdd S )NzExpected a dict, found '{}'r   zaExpected a non-empty dict, found an empty dict.
Use EmptyDict validator to serialize empty dicts.)
isinstancedictr   r   lenr   datar   r   r   _should_be_mapping      
zMapValidator._should_be_mappingN)r   r   r   r$   r   r   r   r   r          r   c                   @   r   )SeqValidatorc                 C   r   )NzExpected a list, found '{}'r   zaExpected a non-empty list, found an empty list.
Use EmptyList validator to serialize empty lists.)r   listr   r   r!   r"   r   r   r   _should_be_list&   r%   zSeqValidator._should_be_listN)r   r   r   r)   r   r   r   r   r'   %   r&   r'   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r
   c                    s   t |ts	J dt |tsJ d|| _|| _ fdd tdd tt | D }|dkr9td	|td	d tt | D }|dkrTtd
	|d S )Nzvalidator_a must be a Validatorzvalidator_b must be a Validatorc                    s$   t | tr | j | jgS | gS r	   )r   r
   _validator_a_validator_br   unpackedr   r   r-   :   s
   
z&OrValidator.__init__.<locals>.unpackedc                 S      g | ]	}t |tr|qS r   )r   r   .0r   r   r   r   
<listcomp>D       z(OrValidator.__init__.<locals>.<listcomp>   zQYou tried to Or ('|') together {} Map validators. Try using revalidation instead.c                 S   r.   r   )r   r'   r/   r   r   r   r1   T   r2   zQYou tried to Or ('|') together {} Seq validators. Try using revalidation instead.)
r   r   r*   r+   r!   r(   r   flattenr   r   )r   validator_avalidator_bmap_validator_countseq_validator_countr   r,   r   __init__3   s4   	zOrValidator.__init__c                 C   s.   z| j |W S  ty   | j| Y S w r	   )r*   to_yamlr   r+   )r   valuer   r   r   r:   c   s
   zOrValidator.to_yamlc                 C   sN   z|  |}|j|_| |_|W S  ty&   | |}|j|_| |_| Y S w r	   )r*   
_validator_selected_validatorr   r+   )r   r   resultr   r   r   r   i   s   

zOrValidator.__call__c                 C   s   d t| jt| jS )Nz	{0} | {1})r   reprr*   r+   r   r   r   r   r   u   s   zOrValidator.__repr__N)r   r   r   r9   r:   r   r   r   r   r   r   r
   2   s
    0r
   )strictyaml.exceptionsr   r   r   strictyaml.representationr   
strictyamlr   sysversion_infostrunicodeobjectr   r   r'   r
   r   r   r   r   <module>   s    