
    j	                        d dl mZ d dlZd dlmZ h dZddhZh dZh dZd-dZ	d.dZ
d/dZd0dZd1dZd2d3dZd4d"Zd5d$Zd6d7d'Zd8d)Zd9d,ZdS ):    )annotationsN)Iterable>	   lives_at	same_area
checked_in
co_suspect
studies_atappeared_atguardian_ofsame_schoolsuspected_inallnone>   N 1m1y3m6m>   lowhighmediumnormalextremezjhmstrreturnboolc                    t          | pd                                          }t          t          j        d|                    S )zFValidate a 15-digit ID or an 18-character ID with optional X checksum.r   z(?:\d{15}|\d{17}[\dXx])r   stripr   re	fullmatch)r   values     3/home/longshao/multi-rider-rag/shared/validators.pyvalidate_zjhmr%      s8    
OO!!##E7??@@@    depth
int | Nonec                L    t          | t                    od| cxk    odk    nc S )N      
isinstanceint)r'   s    r$   validate_depthr/      s+    eS!!5a5ooooAoooo5r&   	relations
str | Nonec                    | dv rdS d t          |                               d          D             }|sdS |t          z  r|t          k    S |t          k    S )NNr   Tc                    h | ]<}|                                 |                                                                 =S  )r    lower).0parts     r$   	<setcomp>z%validate_relations.<locals>.<setcomp>$   s9    XXXd4::<<XTZZ\\!!XXXr&   ,)r   splitVALID_RELATION_ALIASESVALID_RELATIONS)r0   partss     r$   validate_relationsr?   !   sk    JtXXc)nn.B.B3.G.GXXXE t%% /...O##r&   
time_rangec                    | t           v S N)VALID_TIME_RANGES)r@   s    r$   validate_time_rangerD   ,   s    ***r&   r#   minimumr.   maximumc                L    t          | t                    o|| cxk    o|k    nc S rB   r,   )r#   rE   rF   s      r$   validate_int_rangerH   0   s3    eS!!Ag&A&A&A&A'&A&A&A&AAr&   FallowedIterable[str]allow_emptyc                r    t          | pd                                          }|s|S |t          |          v S r3   )r   r    set)r#   rI   rK   
normalizeds       r$   validate_allowedrO   4   s>    U[b!!''))J W%%r&   	min_score	max_scorec                Z    t          | dd          sdS t          |dd          sdS | |k    S )Nr   d   FrH   )rP   rQ   s     r$   validate_score_rangerU   ;   s?    iC00 uiC00 u	!!r&   pagec                $    t          | dd          S )Nr*   i rT   )rV   s    r$   validate_pagerX   C   s    dAv...r&   rS   sizec                $    t          | d|          S )Nr*   rT   )rY   rF   s     r$   validate_page_sizer[   G   s    dAw///r&   	area_codec                    t          | pd                                          }| p!t          t          j        d|                    S )Nr   z\d{6}|\d{8}|\d{12}r   )r\   r#   s     r$   validate_area_coder^   K   sA    	R  &&((E9HR\*?GGHHHr&   rawdefaultc                f    | | dk    r|S 	 t          |           S # t          t          f$ r Y d S w xY wr3   )r.   	TypeError
ValueError)r_   r`   s     r$   parse_int_argrd   P   sK    
{cRii3xxz"   tts    00)r   r   r   r   )r'   r(   r   r   )r0   r1   r   r   )r@   r1   r   r   )r#   r(   rE   r.   rF   r.   r   r   )F)r#   r1   rI   rJ   rK   r   r   r   )rP   r(   rQ   r(   r   r   )rV   r(   r   r   )rS   )rY   r(   rF   r.   r   r   )r\   r1   r   r   )r_   r1   r`   r.   r   r(   )
__future__r   r!   typingr   r=   r<   rC   VALID_RISK_LEVELSr%   r/   r?   rD   rH   rO   rU   rX   r[   r^   rd   r5   r&   r$   <module>rh      sc   " " " " " " 				      
 
 
   666 BBB A A A A6 6 6 6$ $ $ $+ + + +B B B B& & & & &" " " "/ / / /0 0 0 0 0I I I I
     r&   