o
    Eg/                     @  sz  d dl mZ d dlZd dlZd dlZd dlZd dlZG dd deZ	e
dd Zdd ee_ejd	d
 Zejdd Zdd Zdd Zdd Zdd Zdd Zdd Zedd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z d+d, Z!d-d. Z"d/d0 Z#e
d1d2Z$ee$_%ee$_&ee$_'e
d3d4Z(ee(_%ee(_)ee(_&ee(_'e
d5d6Z*ee*_%ee*_&ee*_'e
d7d8Z+ee+_%ee+_)ee+_&ee+_'e
d9d2Z,ee,_%ee,_&ee,_'e
d:d;Z-d<e-j._/eee-_%ee-_&ee-_'e
d=d>Z0d<e0j._/eee0_%ee0_&ee0_'e
d?d@Z1d<e1j._/eee1_%ee1_)e e1_&e!e1_'e
dAdBZ2e"e2_%ee2_&ee2_'e
dCdDZ3e#e3_%ee3_&ee3_'G dEdF dFe
dFdGZ4G dHdI dIe
dIdJZ5G dKdL dLe
dLdMZ6G dNdO dOe
dOdPZ7G dQdR dRe
dRdPZ8dSdT Z9dkdUdVZ:e:e;Z<e:e=Z>e:e?Z@e:eAdWdXZBe:eAdYdXZCdZd[ ZDd\d] ZEd^d_ ZFd`da ZGdbdc ZHddde ZIdfdg ZJe	fddhdidjZKdS )l    )annotationsNc                      s&   e Zd Zd fdd	Zdd Z  ZS )ValidationErrorNc                   s   t  | || _|| _d S N)super__init__	error_msgctx)selfr   r   	__class__ ^/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/cfgv.pyr      s   
zValidationError.__init__c                 C  sH   d}| }|j d ur|d|j  d7 }|j}|j d us	|d|j 7 }|S )N
z==> z=====> )r   r   )r	   outerrr   r   r   __str__   s   

zValidationError.__str__r   )__name__
__module____qualname__r   r   __classcell__r   r   r
   r   r   
   s    r   Missingr   c                 C  s   dS )NMISSINGr   r	   r   r   r   <lambda>   s    r   c              
   c  sJ    zd V  W d S  t y$ } zt \}}}t || d|d d }~ww )N)r   r   sysexc_infowith_traceback)msge_tbr   r   r   validate_context   s   r"   c              
   c  sF    zd V  W d S  t y" } zt \}}}| ||d d }~ww r   r   )tpr   r    r!   r   r   r   
reraise_as'   s   r$   c                 C     d S r   r   r	   dctr   r   r   	_dct_noop0      r(   c                 C  sT   | j |vrd S td| j   | || j   W d    d S 1 s#w   Y  d S )NzAt key: )keyr"   check_fnr&   r   r   r   _check_optional4   s
   
"r,   c                 C  s   | | j| j d S r   )
setdefaultr*   defaultr&   r   r   r   _apply_default_optional;   s   r/   c                 C  s$   | | jt| jkr|| j= d S d S r   )getr*   r   r.   r&   r   r   r   _remove_default_optional?   s   r1   c                 C  s   | j |vrtd| j  d S )NzMissing required key: )r*   r   r&   r   r   r   _require_keyD   s   
r2   c                 C  s   t | | t| | d S r   )r2   r,   r&   r   r   r   _check_requiredI   s   
r3   c                       fdd}|S )Nc                   s   t |  j d S r   )validateschemavalr   r   r   r+   P      z#_check_fn_recurse.<locals>.check_fnr   )r	   r+   r   r   r   _check_fn_recurseN   s   r:   c                 C     t || j | j|| j< d S r   )apply_defaultsr*   r6   r&   r   r   r   _apply_default_required_recurseU      r=   c                 C  r;   r   )remove_defaultsr*   r6   r&   r   r   r    _remove_default_required_recurseY   r>   r@   c                 C  s"   | j |vr
t| | t| | d S r   )r*   r/   r=   r&   r   r   r   _apply_default_optional_recurse]   s   

rA   c                 C  s&   | j |v rt| | t| | d S d S r   )r*   r@   r1   r&   r   r   r    _remove_default_optional_recursec   s   

rB   c                   r4   )Nc                   s   | | jt| jkr | | d S | j|v rI| jrK| j|v rMt| jdr*| j }nd| j}td| j d| j d| d| j d|| j 
d S d S d S )Ndescribe_oppositezis not 	Expected z to be absent when  z, found z: )	r0   condition_keyr   condition_valueensure_absentr*   hasattrrC   r   )r	   r'   explanationinnerr   r   _check_conditionalj   s(   

z2_get_check_conditional.<locals>._check_conditionalr   )rL   rM   r   rK   r   _get_check_conditionali   s   rN   c                 C  &   | | jt| jkrt| | d S d S r   )r0   rF   r   rG   r/   r&   r   r   r   #_apply_default_conditional_optional|      rP   c                 C  rO   r   )r0   rF   r   rG   r1   r&   r   r   r   $_remove_default_conditional_optional   rQ   rR   c                 C  rO   r   )r0   rF   r   rG   r=   r&   r   r   r   "_apply_default_conditional_recurse   rQ   rS   c                 C  rO   r   )r0   rF   r   rG   r@   r&   r   r   r   #_remove_default_conditional_recurse   rQ   rT   c                 C  s\   t t|t| j }|r,ddd |D }ddd | jD }td| d| d S )N, c                 s      | ]}t |V  qd S r   str.0xr   r   r   	<genexpr>       z,_no_additional_keys_check.<locals>.<genexpr>c                 s  rV   r   rW   rY   r   r   r   r\      r]   zAdditional keys found: z .  Only these keys are allowed: )sortedsetkeysjoinr   )r	   r'   extraextra_skeys_sr   r   r   _no_additional_keys_check   s   re   c                 C  s2   t t|t| j }|r| || j| d S d S r   )r^   r_   r`   callback)r	   r'   rb   r   r   r   _warn_additional_keys_check   s   rg   Required)r*   r+   RequiredRecurse)r*   r6   Optional)r*   r+   r.   OptionalRecurse)r*   r6   r.   OptionalNoDefaultConditional)r*   r+   rF   rG   rH   )FConditionalOptional)r*   r+   r.   rF   rG   rH   ConditionalRecurse)r*   r6   rF   rG   rH   NoAdditionalKeys)r`   WarnAdditionalKeys)r`   rf   c                      s8   e Zd ZdZ fddZdd Zdd Zdd	 Z  ZS )
Mapr   c                   s   t  | |||S r   r   __new__)clsobject_nameid_keyitemsr
   r   r   rt         zMap.__new__c                 C  s   t |tstd| j dt|j | jd u r d| j d}n|| jt}d| j d| j d|d}t	| | j
D ]}|| q=W d    d S 1 sPw   Y  d S )NzExpected a z map but got a zAt z()(=))
isinstancedictr   rv   typer   rw   r0   r   r"   rx   check)r	   vcontextkey_v_sitemr   r   r   r      s   




"z	Map.checkc                 C  "   |  }| jD ]}|| q|S r   )copyrx   apply_defaultr	   r   retr   r   r   r   r<         
zMap.apply_defaultsc                 C  r   r   )r   rx   remove_defaultr   r   r   r   r?      r   zMap.remove_defaults	r   r   r   	__slots__rt   r   r<   r?   r   r   r   r
   r   rr      s    rr   )rv   rw   rx   c                      s:   e Zd ZdZd fdd	Zdd Zdd Zd	d
 Z  ZS )Arrayr   Tc                   s   t  j| ||dS )Nofallow_emptyrs   )ru   r   r   r
   r   r   rt     ry   zArray.__new__c                 C  sD   t t| | js|std| jj d|D ]}t|| j qd S )NzExpected at least 1 '')check_array	check_anyr   r   r   rv   r5   )r	   r   r8   r   r   r   r     s   
zArray.checkc                       fdd|D S )Nc                      g | ]}t | jqS r   )r<   r   rZ   r8   r   r   r   
<listcomp>      z(Array.apply_defaults.<locals>.<listcomp>r   r	   r   r   r   r   r<     ry   zArray.apply_defaultsc                   r   )Nc                   r   r   )r?   r   r   r   r   r   r     r   z)Array.remove_defaults.<locals>.<listcomp>r   r   r   r   r   r?     ry   zArray.remove_defaults)Tr   r   r   r
   r   r     s    	r   r   c                   @  s    e Zd ZdZdd Zdd ZdS )Notr   c                 C     d| j S )Nzis r7   r   r   r   r   rC        zNot.describe_oppositec                 C  s   |t uo|| jkS r   )r   r8   r	   otherr   r   r   __eq__!  ry   z
Not.__eq__N)r   r   r   r   rC   r   r   r   r   r   r     s    r   r7   c                      0   e Zd ZdZ fddZdd Zdd Z  ZS )NotInr   c                      t  j| |dS Nvaluesrs   ru   r   r
   r   r   rt   (  r9   zNotIn.__new__c                 C  r   )Nz
is any of r   r   r   r   r   rC   +  r   zNotIn.describe_oppositec                 C  s   |t uo|| jvS r   r   r   r   r   r   r   r   .  ry   zNotIn.__eq__r   r   r   r   rt   rC   r   r   r   r   r
   r   r   %  
    r   r   c                      r   )Inr   c                   r   r   rs   r   r
   r   r   rt   5  r9   z
In.__new__c                 C  r   )Nzis not any of r   r   r   r   r   rC   8  r   zIn.describe_oppositec                 C  s   |t uo|| jv S r   r   r   r   r   r   r   ;  ry   z	In.__eq__r   r   r   r
   r   r   2  r   r   c                 C  r%   r   r   )r    r   r   r   r   ?  r)   r   c                   s    fdd}|S )Nc                   s2   t |  sp	 j}td| dt| j d S )NrD   z got )r}   r   r   r   )r   
typename_sr#   typenamer   r   check_type_fnD  s   

z!check_type.<locals>.check_type_fnr   )r#   r   r   r   r   r   
check_typeC  s   r   string)r   textc                   r4   )Nc                   s8   |  vrd dd t D }td| d| d S )NrU   c                 s  rV   r   rW   rY   r   r   r   r\   W  r]   z8check_one_of.<locals>.check_one_of_fn.<locals>.<genexpr>zExpected one of z
 but got: )ra   r^   r   )r   
possible_spossibler   r   check_one_of_fnU  s   z%check_one_of.<locals>.check_one_of_fnr   )r   r   r   r   r   check_one_ofT  s   r   c                 C  s0   zt |  W d S  t jy   t| dw )Nz is not a valid python regex)recompileerrorr   )r   r   r   r   check_regex^  s
   r   c                   r4   )Nc              	     sn   t | ttfstdt| jt| D ]\}}td|   | W d    n1 s/w   Y  qd S )NzExpected array but got z	At index )r}   listtupler   r   r   	enumerater"   )r   ir8   inner_checkr   r   check_array_fnf  s   
z#check_array.<locals>.check_array_fnr   )r   r   r   r   r   r   e  s   	r   c                    r4   )Nc                   s    D ]}||  qd S r   r   )r   fnfnsr   r   r   s  s   
zcheck_and.<locals>.checkr   )r   r   r   r   r   	check_andr  s   r   c                 C  s   | |  | S r   )r   r   r6   r   r   r   r5   y  s   
r5   c                 C  
   | | S r   )r<   r   r   r   r   r<   ~     
r<   c                 C  r   r   )r?   r   r   r   r   r?     r   r?   )display_filenamec          	      C  s0  |p| }t | tj| st| dtd| a zt| dd}| }W d    n1 s4w   Y  W n tyL } ztt	|d }~ww z||}W n t
ye } ztt	|d }~ww t|| t||W  d    W  d    S 1 sw   Y  W d    d S 1 sw   Y  d S )Nz is not a filezFile zutf-8)encoding)r$   ospathisfiler   r"   openreadUnicodeDecodeErrorrX   	Exceptionr5   r<   )	filenamer6   load_strategyexc_tpr   fcontentsr   datar   r   r   load_from_filename  s4   


"r   r   )L
__future__r   collections
contextlibos.pathr   r   r   
ValueErrorr   
namedtupler   r   __repr__contextmanagerr"   r$   r(   r,   r/   r1   r2   r3   propertyr:   r=   r@   rA   rB   rN   rP   rR   rS   rT   re   rg   rh   r   r   r   ri   r+   rj   rk   rl   rm   rt   __defaults__rn   ro   rp   rq   rr   r   r   r   r   r   r   bool
check_boolbytescheck_bytesint	check_intrX   check_string
check_textr   r   r   r   r5   r<   r?   r   r   r   r   r   <module>   s    





"



