
     hpA                     $   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	 Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G d( d)e          ZdS )*    )
namedtuple)
text_typesnumeric_types)validate_format)uniqNErrortextindexc                      fd| D             S )Nc                 L    g | ] }t          |j        g|j        z             !S  )r   r	   r
   ).0errorkeys     N/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/coreschema/schemas.py
<listcomp>zpush_index.<locals>.<listcomp>   s>        	ej3%%+-..      r   )errorsr   s    `r   
push_indexr      s.          r   c                   >    e Zd Zi Zd
dZd Zd Zd Zd Zd Z	d	 Z
dS )Schema Nc                 0    || _         || _        || _        d S N)titledescriptiondefault)selfr   r   r   s       r   __init__zSchema.__init__!   s    
&r   c                 `    | j         |         }| j        }t           |j        di |g           S Nr   )r   __dict__r   format)r   codeerror_stringparamss       r   
make_errorzSchema.make_error&   s9    {4((\(22622B777r   c                     t          | t                    r| j        }n| g}t          |t                    r|j        }n|g}t          ||z             S r   )
isinstanceUnionchildrenr   otherself_childrenother_childrens       r   __or__zSchema.__or__+   sY    dE"" 	# MMM!FMeU## 	%"^NN#WN]^3444r   c                     t          | t                    r| j        }n| g}t          |t                    r|j        }n|g}t          ||z             S r   )r)   Intersectionr+   r,   s       r   __and__zSchema.__and__8   sY    dL)) 	# MMM!FMe\** 	%"^NN#WNMN:;;;r   c                 $    t          | |g          S r   )ExclusiveUnionr   r-   s     r   __xor__zSchema.__xor__E   s    tUm,,,r   c                      t          |           S r   )Not)r   s    r   
__invert__zSchema.__invert__H   s    4yyr   c                 B    | j         |j         k    o| j        |j        k    S r   )	__class__r"   r6   s     r   __eq__zSchema.__eq__K   s$    Neo- ,MU^+	
r   )r   r   N)__name__
__module____qualname__r   r   r'   r0   r3   r7   r:   r=   r   r   r   r   r      s        F   
8 8 8
5 5 5< < <- - -  
 
 
 
 
r   r   c                   <     e Zd ZddddddddZd fd	ZddZ x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                 `    t          t          |           j        di | t          |t                    rt                      | _        n	|| _        d}|| _        |pg | _        || _	        || _
        || _        || _        d | _        |%d |                                D             | _        d S d S )NTc                 >    i | ]\  }}t          j        |          |S r   )recompile)r   r   values      r   
<dictcomp>z#Object.__init__.<locals>.<dictcomp>r   s6     - - -C 
3- - -r   r   )superrB   r   r)   boolAnythingadditional_properties_schema
propertiesrG   rH   rI   pattern_propertiesadditional_propertiespattern_properties_regexitems)	r   rU   rG   rH   rI   rV   rW   kwargsr<   s	           r   r   zObject.__init__]   s    $fd$..v...+T22 	)08

D-- 1FD-$(!$ B,,"4%:" )-%)- - &++--- - -D))) *)r   c                    t          |t                    s|                     d          gS g }t          d |                                D                       r||                     d          gz  }| j        7| j        D ]/}||vr)|                     d          g}|t          ||          z  }0| j        Vt          |          | j        k     r>| j        dk    r||                     d          gz  }n||                     d          gz  }| j	        1t          |          | j	        k    r||                     d          gz  }t          |                                          }| j        ||t          | j                                                  z  }| j                                        D ]9\  }}||vr
|                    ||         |          }|t          ||          z  }:| j        t          |          D ]z}| j                                        D ]^\  }}	t#          j        ||          rD|	                    ||         |          }|t          ||          z  }|                    |           _{| j        r:|D ]6}| j                            ||         |          }|t          ||          z  }7n.|D ]+}|                     d	          g}|t          ||          z  },|S )
NrD   c              3   B   K   | ]}t          |t                     V  d S r   )r)   r   )r   r   s     r   	<genexpr>z"Object.validate.<locals>.<genexpr>}   s/      GG3:c:...GGGGGGr   rE   rG      rF   rI   rH   rJ   )r)   dictr'   anykeysrG   r   rI   lenrH   setrU   rY   validaterV   listrX   rM   searchdiscardrW   rT   )
r   rO   contextr   r   error_itemsremaining_keysproperty_itempatternschemas
             r   rd   zObject.validatex   s"   %&& 	-OOF++,,GG%**,,GGGGG 	7t}5566F=$} ; ;e###'??:#>#>"?Kjc:::F*5zzD///&!++tw7788FFt/?@@AAF*5zzD///4??+;<<== UZZ\\**?&c$/"6"6"8"8999N&*o&;&;&=&= 7 7"]e##+44U3ZII*[#666 ".N++ 4 4'+'D'J'J'L'L 4 4OGVy#.. 4&,ooeCj'&J&J*[#">">>&..s333	4 % 	7% 7 7"?HHsU\]]*[#6667 & 7 7#/ABBC*[#666r   )NNNNNTr   r>   r?   r@   r   r   rd   __classcell__r<   s   @r   rB   rB   R   sr        $5%-OK/ F     63 3 3 3 3 3 3 3r   rB   c                   8     e Zd ZddddddZd fd
	ZddZ xZS )ArrayzMust be an array.rC   z)Must have no more than {max_items} items.z%Must have at least {min_items} items.z!Must not contain duplicate items.)rD   rF   	max_items	min_itemsuniqueNFTc                 (    t          t          |           j        di | |t                      }t	          |t
                    r(|du r$||t          |          k    rt          |          }|| _        || _        || _	        || _
        || _        d S )NFr   )rQ   rr   r   rS   r)   re   rb   rY   rs   rt   unique_itemsadditional_items)r   rY   rs   rt   rw   rx   rZ   r<   s          r   r   zArray.__init__   s    #eT#--f---=JJEeT"" 	''75'@'@ IE

$:$:JJ	
""( 0r   c                 J   t          |t                    s|                     d          gS g }| j        | j        }t          | j        t                    }t	          |          D ]y\  }}|rI|t          | j                  k     r| j        |         }n#t          | j        t                    r n1| j        }|                    ||          }|t          ||          z  }z| j
        Vt          |          | j
        k     r>| j
        dk    r||                     d          gz  }n||                     d          gz  }| j        1t          |          | j        k    r||                     d          gz  }| j        r(t          |          s||                     d          gz  }|S )NrD   r^   rF   rt   rs   ru   )r)   re   r'   rY   	enumeraterb   rx   rR   rd   r   rt   rs   rw   r   )	r   rO   rh   r   child_schemais_listidxitemri   s	            r   rd   zArray.validate   s   %&& 	-OOF++,,:!:L T22G&u-- 7 7	T 
AS__,,'+z# &d&;TBB A!E+/+@L*33D'BB*[#666>%5zzDN**>Q&&tw7788FFt{;;<<F>%5zzDN**4??;7788 	6;; 64??84455r   )NNNFTr   rn   rp   s   @r   rr   rr      sl        #%@<5 F1 1 1 1 1 1"# # # # # # # #r   rr   c                   >     e Zd ZdZdddddddZd fd
	ZddZ x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}.rD   minimumexclusive_minimummaximumexclusive_maximummultiple_ofNc                      t          t          |           j        di | || _        || _        || _        || _        || _        d S r!   )rQ   r   r   r   r   r   r   r   )r   r   r   r   r   r   rZ   r<   s          r   r   zNumber.__init__   sR    $fd$..v...!2!2&r   c                    t          |t                    r|                     d          gS t          |t                    s|                     d          gS | j        r?t          |t
                    r*|                                s|                     d          gS g }| j        P| j        r%|| j        k    r||                     d          gz  }n$|| j        k     r||                     d          gz  }| j	        P| j
        r%|| j	        k    r||                     d          gz  }n$|| j	        k    r||                     d          gz  }| j        jt          | j        t
                    r+t          |          | j        z                                   }n
|| j        z  }|r||                     d          gz  }|S )NrD   r   r   r   r   r   )r)   rR   r'   r   integer_onlyfloat
is_integerr   r   r   r   r   )r   rO   rh   r   faileds        r   rd   zNumber.validate  s   eT"" 	-OOF++,,%// 	-OOF++,, 	-E5!9!9 	-%BRBRBTBT 	-OOF++,,<#% ;DL((t/BCCDDF4<''ty99::F<#% ;DL((t/BCCDDF4<''ty99::F'$*E22 2#EllT-==IIKKK!11 ;4??=99::r   )NNFFNr   )r>   r?   r@   r   r   r   rd   ro   rp   s   @r   r   r      st        L#@>=;= F' ' ' ' ' '       r   r   c                   $    e Zd ZdddddddZdZd	S )
IntegerzMust be an integer.r   r   r   r   r   r   TN)r>   r?   r@   r   r   r   r   r   r   r   #  s3        %@>=;= F LLLr   r   c                   :     e Zd ZdddddddZd fd		Zdd
Z x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}.)rD   blank
max_length
min_lengthrl   r#   Nc                      t          t          |           j        di | || _        || _        || _        || _        d | _        | j        t          j	        |          | _        d S d S r!   )
rQ   r   r   r   r   rl   r#   pattern_regexrM   rN   )r   r   r   rl   r#   rZ   r<   s         r   r   zString.__init__9  sr    $fd$..v...$$!<#!#G!4!4D $#r   c                 h   t          |t                    s|                     d          gS g }| j        Vt	          |          | j        k     r>| j        dk    r||                     d          gz  }n||                     d          gz  }| j        1t	          |          | j        k    r||                     d          gz  }| j        3t          j        | j	        |          s||                     d          gz  }| j
        .t          || j
                  s||                     d          gz  }|S )NrD   r^   r   r   r   rl   r#   )r)   r   r'   r   rb   r   rl   rM   rf   r   r#   r   r   rO   rh   r   s       r   rd   zString.validateD  s0   %,, 	-OOF++,,?&5zzDO++?a''tw7788FFt|<<==F?&5zzDO++4??<8899<#9T/77 74??95566;""5$+66 64??84455r   )NNNNr   rn   rp   s   @r   r   r   /  so        #%GC8- F	5 	5 	5 	5 	5 	5       r   r   c                       e Zd ZddiZddZdS )BooleanrD   zMust be a boolean.Nc                 \    t          |t                    s|                     d          gS g S NrD   )r)   rR   r'   r   rO   rh   s      r   rd   zBoolean.validate`  s.    %&& 	-OOF++,,	r   r   r>   r?   r@   r   rd   r   r   r   r   r   [  s5        $F     r   r   c                       e Zd ZddiZddZdS )NullrD   zMust be null.Nc                 6    ||                      d          gS g S r   )r'   r   s      r   rd   zNull.validatek  s"    OOF++,,	r   r   r   r   r   r   r   r   f  s4        F     r   r   c                   0     e Zd ZdddZ fdZddZ xZS )EnumzMust be one of {enum}.zMust be {exact}.)enumexactc                      t          t          |           j        di | || _        t	          |          dk    rt          |d                   | _        d S d S )Nr^   r   r   )rQ   r   r   r   rb   reprr   )r   r   rZ   r<   s      r   r   zEnum.__init__w  sX    "dD",,V,,,	t99>>d1gDJJJ >r   Nc                     || j         vrDt          | j                   dk    r|                     d          gS |                     d          gS g S )Nr^   r   r   )r   rb   r'   r   s      r   rd   zEnum.validate~  sQ    	!!49~~""0011OOF++,,	r   r   rn   rp   s   @r   r   r   q  s^        (# F
' ' ' ' '       r   r   c            	       F    e Zd ZddiZeeeeee	 e
d          fz   ZddZdS )rS   rD   zMust be a valid primitive type.Nc                 R   t          || j                  s|                     d          gS g }t          |t                    r(t	                      }||                    ||          z  }n<t          |t                    r't                      }||                    ||          z  }|S r   )r)   typesr'   re   rr   rd   r_   rB   )r   rO   rh   r   rm   s        r   rd   zAnything.validate  s    %,, 	-OOF++,,eT"" 	6WWFfooeW555FFt$$ 	6XXFfooeW555Fr   r   )r>   r?   r@   r   r   r_   re   intr   rR   rD   r   rd   r   r   r   rS   rS     sV        1F $c5$T

CCE     r   rS   c                   .     e Zd ZddiZ fdZddZ xZS )r*   matchMust match one of the options.c                 V     t          t          |           j        di | || _        d S r!   )rQ   r*   r   r+   r   r+   rZ   r<   s      r   r   zUnion.__init__  s1    #eT#--f--- r   Nc                 ~    | j         D ] }|                    ||          g k    rg c S !|                     d          gS )Nr   r+   rd   r'   )r   rO   rh   childs       r   rd   zUnion.validate  sO    ] 	 	E~~eW--33			 4(())r   r   rn   rp   s   @r   r*   r*     sY        1F! ! ! ! !
* * * * * * * *r   r*   c                   &     e Zd Z fdZddZ xZS )r2   c                 V     t          t          |           j        di | || _        d S r!   )rQ   r2   r   r+   r   s      r   r   zIntersection.__init__  s1    *lD!!*44V444 r   Nc                 p    g }| j         D ]+}|                    |                    ||                     ,|S r   )r+   extendrd   )r   rO   rh   r   r   s        r   rd   zIntersection.validate  s@    ] 	: 	:EMM%..889999r   r   )r>   r?   r@   r   rd   ro   rp   s   @r   r2   r2     sL        ! ! ! ! !       r   r2   c                   0     e Zd ZdddZ fdZddZ xZS )r5   r   z#Must match only one of the options.)r   match_only_onec                 V     t          t          |           j        di | || _        d S r!   )rQ   r5   r   r+   r   s      r   r   zExclusiveUnion.__init__  s1    ,nd##,66v666 r   Nc                     d}| j         D ]!}|                    ||          g k    r|dz  }"|s|                     d          gS |dk    r|                     d          gS g S )Nr   r^   r   r   r   )r   rO   rh   matchesr   s        r   rd   zExclusiveUnion.validate  s|    ] 	 	E~~eW--331 	7OOG,,--q[[OO$45566	r   r   rn   rp   s   @r   r5   r5     s^        1? F
! ! ! ! !
	 	 	 	 	 	 	 	r   r5   c                   .     e Zd ZddiZ fdZddZ xZS )r9   must_not_matchzMust not match the option.c                 V     t          t          |           j        di | || _        d S r!   )rQ   r9   r   r   )r   r   rZ   r<   s      r   r   zNot.__init__  s1    !c4!++F+++


r   Nc                 l    g }| j                             ||          rg S |                     d          gS )Nr   )r   rd   r'   r   s       r   rd   zNot.validate  s<    :ug.. 	I 01122r   r   rn   rp   s   @r   r9   r9     sY        6F    3 3 3 3 3 3 3 3r   r9   c                   "    e Zd Zd Zd ZddZdS )Refc                     || _         d S r   )ref_name)r   r   s     r   r   zRef.__init__  s     r   c                     t          |t                    sJ d|v sJ | j        |d         v sJ |d         | j                 S Nrefs)r)   r_   r   )r   rh   s     r   dereferencezRef.dereference  sQ    '4(((((    }////vt}--r   Nc                 X    |                      |          }|                    ||          S r   )r   rd   )r   rO   rh   rm   s       r   rd   zRef.validate  s)    !!'**ug...r   r   )r>   r?   r@   r   r   rd   r   r   r   r   r     sF        ! ! !. . ./ / / / / /r   r   c                       e Zd Zd Zd ZdS )RefSpacec                 H    ||v sJ || _         || _        ||         | _        d S r   )r   rootroot_validator)r   r   r   s      r   r   zRefSpace.__init__  s/    t||||		"4jr   c                 J    d| j         i}| j                            ||          S r   )r   r   rd   r   s      r   rd   zRefSpace.validate  s'    49%"++E7;;;r   N)r>   r?   r@   r   rd   r   r   r   r   r     s2        ) ) )< < < < <r   r   )collectionsr   coreschema.compatr   r   coreschema.formatsr   coreschema.utilsr   rM   r   r   objectr   rB   rr   r   r   r   r   r   r   rS   r*   r2   r5   r9   r   r   r   r   r   <module>r      s:   " " " " " " 7 7 7 7 7 7 7 7 . . . . . . ! ! ! ! ! ! 				 	
7VW-..  &1
 1
 1
 1
 1
V 1
 1
 1
hY Y Y Y YV Y Y Yx= = = = =F = = =@2 2 2 2 2V 2 2 2j	 	 	 	 	f 	 	 	) ) ) ) )V ) ) )X    f       6       6   *    v   ,* * * * *F * * *"	 	 	 	 	6 	 	 	    V   .3 3 3 3 3& 3 3 3$/ / / / /& / / /	< 	< 	< 	< 	<v 	< 	< 	< 	< 	<r   