a
    ΝGdpA                     @   sV  d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	Z	edddgZ
d	d
 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G dd d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G dd d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G d'd( d(eZG d)d* d*eZdS )+    )
namedtuple)
text_typesnumeric_types)validate_format)uniqNErrortextindexc                    s    fdd| D S )Nc                    s    g | ]}t |j g|j qS  )r   r   r	   ).0errorkeyr
   N/var/www/html/django/DPS/env/lib/python3.9/site-packages/coreschema/schemas.py
<listcomp>   s   zpush_index.<locals>.<listcomp>r
   )errorsr   r
   r   r   
push_index   s    
r   c                   @   sJ   e Zd Zi ZdddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )Schema Nc                 C   s   || _ || _|| _d S N)titledescriptiondefault)selfr   r   r   r
   r
   r   __init__!   s    zSchema.__init__c                 C   s&   | j | }| j}t|jf i |g S r   )r   __dict__r   format)r   codeZerror_stringparamsr
   r
   r   
make_error&   s    
zSchema.make_errorc                 C   s<   t | tr| j}n| g}t |tr*|j}n|g}t|| S r   )
isinstanceUnionchildrenr   otherZself_childrenZother_childrenr
   r
   r   __or__+   s    

zSchema.__or__c                 C   s<   t | tr| j}n| g}t |tr*|j}n|g}t|| S r   )r    Intersectionr"   r#   r
   r
   r   __and__8   s    

zSchema.__and__c                 C   s   t | |gS r   )ExclusiveUnionr   r$   r
   r
   r   __xor__E   s    zSchema.__xor__c                 C   s   t | S r   )Not)r   r
   r
   r   
__invert__H   s    zSchema.__invert__c                 C   s   | j |j ko| j|jkS r   )	__class__r   r)   r
   r
   r   __eq__K   s    
zSchema.__eq__)r   r   N)__name__
__module____qualname__r   r   r   r%   r'   r*   r,   r.   r
   r
   r
   r   r      s   
r   c                       s<   e Zd ZddddddddZd fdd	ZdddZ  ZS )ObjectzMust be an object.zObject keys must be strings.Must not be empty.zThis field is required.z3Must have no more than {max_properties} properties.z/Must have at least {min_properties} properties.zInvalid property.)typeinvalid_keyemptyrequiredmax_propertiesmin_propertiesinvalid_propertyNTc                    s   t t| jf i | t|tr*t | _n
|| _d}|| _|p@g | _|| _	|| _
|| _|| _d | _|d ur~dd | D | _d S )NTc                 S   s   i | ]\}}t ||qS r
   )recompile)r   r   valuer
   r
   r   
<dictcomp>r   s   z#Object.__init__.<locals>.<dictcomp>)superr2   r   r    boolAnythingadditional_properties_schema
propertiesr7   r8   r9   pattern_propertiesadditional_propertiespattern_properties_regexitems)r   rC   r7   r8   r9   rD   rE   kwargsr-   r
   r   r   ]   s     


zObject.__init__c           
      C   s  t |ts| dgS g }tdd | D r@|| dg7 }| jd urx| jD ]&}||vrP| dg}|t||7 }qP| jd urt|| jk r| jdkr|| dg7 }n|| dg7 }| j	d urt|| j	kr|| d	g7 }t
| }| jd urP|t
| j 8 }| j D ]6\}}||vr.q||| |}|t||7 }q| jd urt|D ]R}| j D ]@\}}	t||rr|	|| |}|t||7 }|| qrqd| jr|D ]&}| j|| |}|t||7 }qn&|D ] }| d
g}|t||7 }q|S )Nr4   c                 s   s   | ]}t |t V  qd S r   )r    r   )r   r   r
   r
   r   	<genexpr>}       z"Object.validate.<locals>.<genexpr>r5   r7      r6   r9   r8   r:   )r    dictr   anykeysr7   r   r9   lenr8   setrC   rG   validaterD   listrF   r;   searchdiscardrE   rB   )
r   r=   contextr   r   error_itemsZremaining_keysZproperty_itempatternschemar
   r
   r   rR   x   sR    






zObject.validate)NNNNNT)Nr/   r0   r1   r   r   rR   __classcell__r
   r
   rI   r   r2   R   s   
r2   c                       s8   e Zd ZddddddZd fd
d	ZdddZ  ZS )ArrayzMust be an array.r3   z)Must have no more than {max_items} items.z%Must have at least {min_items} items.z!Must not contain duplicate items.)r4   r6   	max_items	min_itemsuniqueNFTc                    st   t t| jf i | |d u r$t }t|trR|du rR|d u sJ|t|krRt|}|| _|| _|| _	|| _
|| _d S )NF)r?   r\   r   rA   r    rS   rP   rG   r]   r^   unique_itemsadditional_items)r   rG   r]   r^   r`   ra   rH   rI   r
   r   r      s    zArray.__init__c           	      C   s.  t |ts| dgS g }| jd ur| j}t | jt}t|D ]X\}}|r||t| jk rd| j| }nt | jtrv qn| j}|||}|t	||7 }q>| j
d urt|| j
k r| j
dkr|| dg7 }n|| dg7 }| jd urt|| jkr|| dg7 }| jr*t|s*|| dg7 }|S )Nr4   rL   r6   r^   r]   r_   )r    rS   r   rG   	enumeraterP   ra   r@   rR   r   r^   r]   r`   r   )	r   r=   rV   r   Zchild_schemaZis_listidxitemrW   r
   r
   r   rR      s6    




zArray.validate)NNNFT)NrZ   r
   r
   rI   r   r\      s   r\   c                       s>   e Zd ZdZdddddddZd fd
d	ZdddZ  ZS )NumberFzMust be a number.+Must be greater than or equal to {minimum}.Must be greater than {minimum}.(Must be less than or equal to {maximum}.Must be less than {maximum}.$Must be a multiple of {multiple_of}.r4   minimumexclusive_minimummaximumexclusive_maximummultiple_ofNc                    s8   t t| jf i | || _|| _|| _|| _|| _d S r   )r?   re   r   rl   rn   rm   ro   rp   )r   rl   rn   rm   ro   rp   rH   rI   r
   r   r      s    zNumber.__init__c                 C   s4  t |tr| dgS t |ts,| dgS | jrPt |trP| sP| dgS g }| jd ur| jr|| jkr|| dg7 }n|| jk r|| dg7 }| j	d ur| j
r|| j	kr|| dg7 }n|| j	kr|| dg7 }| jd ur0t | jtrt|| j   }n
|| j }|r0|| dg7 }|S )Nr4   rm   rl   ro   rn   rp   )r    r@   r   r   integer_onlyfloat
is_integerrl   rm   rn   ro   rp   )r   r=   rV   r   failedr
   r
   r   rR     s4    








zNumber.validate)NNFFN)N)r/   r0   r1   rq   r   r   rR   r[   r
   r
   rI   r   re      s   	re   c                   @   s"   e Zd ZdddddddZdZd	S )
IntegerzMust be an integer.rf   rg   rh   ri   rj   rk   TN)r/   r0   r1   r   rq   r
   r
   r
   r   ru   #  s   ru   c                       s:   e Zd ZdddddddZd fd	d
	ZdddZ  ZS )StringzMust be a string.zMust not be blank.z/Must have no more than {max_length} characters.z+Must have at least {min_length} characters.z#Must match the pattern /{pattern}/.zMust be a valid {format}.)r4   blank
max_length
min_lengthrX   r   Nc                    sN   t t| jf i | || _|| _|| _|| _d | _| jd urJt	|| _d S r   )
r?   rv   r   rx   ry   rX   r   pattern_regexr;   r<   )r   rx   ry   rX   r   rH   rI   r
   r   r   9  s    
zString.__init__c                 C   s   t |ts| dgS g }| jd ur^t|| jk r^| jdkrN|| dg7 }n|| dg7 }| jd urt|| jkr|| dg7 }| jd urt| j	|s|| dg7 }| j
d urt|| j
s|| dg7 }|S )Nr4   rL   rw   ry   rx   rX   r   )r    r   r   ry   rP   rx   rX   r;   rT   rz   r   r   r   r=   rV   r   r
   r
   r   rR   D  s$    





zString.validate)NNNN)NrZ   r
   r
   rI   r   rv   /  s   	rv   c                   @   s   e Zd ZddiZdddZdS )Booleanr4   zMust be a boolean.Nc                 C   s   t |ts| dgS g S Nr4   )r    r@   r   r   r=   rV   r
   r
   r   rR   `  s    
zBoolean.validate)Nr/   r0   r1   r   rR   r
   r
   r
   r   r|   [  s   r|   c                   @   s   e Zd ZddiZdddZdS )Nullr4   zMust be null.Nc                 C   s   |d ur|  dgS g S r}   )r   r~   r
   r
   r   rR   k  s    zNull.validate)Nr   r
   r
   r
   r   r   f  s   r   c                       s0   e Zd ZdddZ fddZd	ddZ  ZS )
EnumzMust be one of {enum}.zMust be {exact}.)enumexactc                    s:   t t| jf i | || _t|dkr6t|d | _d S )NrL   r   )r?   r   r   r   rP   reprr   )r   r   rH   rI   r
   r   r   w  s    zEnum.__init__Nc                 C   s4   || j vr0t| j dkr$| dgS | dgS g S )NrL   r   r   )r   rP   r   r~   r
   r
   r   rR   ~  s
    
zEnum.validate)NrZ   r
   r
   rI   r   r   q  s
   r   c                   @   s6   e Zd ZddiZeeeeee	e
df ZdddZdS )rA   r4   zMust be a valid primitive type.Nc                 C   sb   t || js| dgS g }t |tr>t }||||7 }n t |tr^t }||||7 }|S r}   )r    typesr   rS   r\   rR   rM   r2   )r   r=   rV   r   rY   r
   r
   r   rR     s    

zAnything.validate)N)r/   r0   r1   r   r   rM   rS   intrr   r@   r4   r   rR   r
   r
   r
   r   rA     s   rA   c                       s.   e Zd ZddiZ fddZdddZ  ZS )	r!   matchMust match one of the options.c                    s    t t| jf i | || _d S r   )r?   r!   r   r"   r   r"   rH   rI   r
   r   r     s    zUnion.__init__Nc                 C   s0   | j D ]}|||g krg   S q| dgS )Nr   r"   rR   r   )r   r=   rV   childr
   r
   r   rR     s    

zUnion.validate)NrZ   r
   r
   rI   r   r!     s   r!   c                       s&   e Zd Z fddZdddZ  ZS )r&   c                    s    t t| jf i | || _d S r   )r?   r&   r   r"   r   rI   r
   r   r     s    zIntersection.__init__Nc                 C   s&   g }| j D ]}|||| q
|S r   )r"   extendrR   )r   r=   rV   r   r   r
   r
   r   rR     s    
zIntersection.validate)N)r/   r0   r1   r   rR   r[   r
   r
   rI   r   r&     s   r&   c                       s0   e Zd ZdddZ fddZd	ddZ  ZS )
r(   r   z#Must match only one of the options.)r   match_only_onec                    s    t t| jf i | || _d S r   )r?   r(   r   r"   r   rI   r
   r   r     s    zExclusiveUnion.__init__Nc                 C   sP   d}| j D ]}|||g kr
|d7 }q
|s8| dgS |dkrL| dgS g S )Nr   rL   r   r   r   )r   r=   rV   matchesr   r
   r
   r   rR     s    

zExclusiveUnion.validate)NrZ   r
   r
   rI   r   r(     s
   r(   c                       s.   e Zd ZddiZ fddZdddZ  ZS )	r+   must_not_matchzMust not match the option.c                    s    t t| jf i | || _d S r   )r?   r+   r   r   )r   r   rH   rI   r
   r   r     s    zNot.__init__Nc                 C   s"   g }| j ||rg S | dgS )Nr   )r   rR   r   r{   r
   r
   r   rR     s    zNot.validate)NrZ   r
   r
   rI   r   r+     s   r+   c                   @   s&   e Zd Zdd Zdd ZdddZdS )	Refc                 C   s
   || _ d S r   )ref_name)r   r   r
   r
   r   r     s    zRef.__init__c                 C   s:   t |tsJ d|v sJ | j|d v s,J |d | j S Nrefs)r    rM   r   )r   rV   r
   r
   r   dereference  s    zRef.dereferenceNc                 C   s   |  |}|||S r   )r   rR   )r   r=   rV   rY   r
   r
   r   rR     s    
zRef.validate)N)r/   r0   r1   r   r   rR   r
   r
   r
   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )RefSpacec                 C   s&   ||v sJ || _ || _|| | _d S r   )r   rootroot_validator)r   r   r   r
   r
   r   r     s    zRefSpace.__init__c                 C   s   d| j i}| j||S r   )r   r   rR   r~   r
   r
   r   rR     s    
zRefSpace.validateN)r/   r0   r1   r   rR   r
   r
   r
   r   r     s   r   )collectionsr   Zcoreschema.compatr   r   Zcoreschema.formatsr   Zcoreschema.utilsr   r;   r   r   objectr   r2   r\   re   ru   rv   r|   r   r   rA   r!   r&   r(   r+   r   r   r
   r
   r
   r   <module>   s,   4\@5,