
    %$}gnA                     4    d dl Zd dlmZ  G d d          ZdS )    N)
get_loggerc                   N   e Zd ZdZg dZed             Zed             Zed             Zed             Z	ed             Z
ed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             ZdS )LanguageValidatorN)"nameskippertainsimplificationsno_word_spacingagoinmondaytuesday	wednesdaythursdayfridaysaturdaysundayjanuaryfebruarymarchaprilmayjunejulyaugust	septemberoctobernovemberdecemberyearmonthweekdayhourminutesecondsentence_splitter_groupc                 D    | j         t                      | _         | j         S )N)loggerr   )clss    _/var/www/py-google-trends/myenv/lib/python3.11/site-packages/dateparser/languages/validation.pyr   zLanguageValidator.get_logger.   s    :#CJz    c                 8   d}||                      ||          z  }|sdS ||                     ||          z  }||                     ||          z  }||                     ||          z  }||                     ||          z  }||                     ||          z  }||                     ||          z  }||                     ||          z  }||                     ||          z  }|| 	                    ||          z  }|| 
                    ||          z  }|S )NTF)_validate_type_validate_name_validate_word_spacing_validate_skip_list_validate_pertain_list_validate_weekdays_validate_months_validate_units_validate_other_words_validate_simplifications_validate_extra_keysr*   language_idinforesults       r+   validate_infozLanguageValidator.validate_info4   s7   #$$[$777 	5#$$[$777#,,[$???#))+t<<<#,,[$???#((d;;;#&&{D999#%%k4888#++K>>>#//TBBB#**;===r,   c                     d}t          |t                    s?|                                                     d|t	          |          j        d           d}|S )NTzALanguage '%(id)s' info expected to be dict, but have got %(type)sidtypeF)
isinstancedictr   errorrA   __name__r9   s       r+   r.   z LanguageValidator._validate_typeH   s^    $%% 	NN""S"DJJ,?@@   Fr,   c                     d}d|vs#t          |d         t                    r|d         s,|                                                     dd|i           d}|S )NTr   z&Language '%(id)s' does not have a namer@   F)rB   strr   rD   r9   s       r+   r/   z LanguageValidator._validate_nameU   sf    ZVc%B%B$v,NN""84:M   Fr,   c                     d|vrdS d}|d         }|dvr-|                                                      d||d           d}|S )Nr
   T)TFzQInvalid 'no_word_spacing' value %(value)r for '%(id)s' language: expected boolean)valuer@   F)r   rD   )r*   r:   r;   r<   rI   s        r+   r0   z(LanguageValidator._validate_word_spacinga   sk    D((4&'%%NN""#{33  
 Fr,   c                 F   d|vrdS d}|d         }t          |t                    s|s:|dk     s|dk    r-|                                                     d||d           d}n?|                                                     d|t	          |          j        d	           d}|S )
Nr'   T      zfInvalid 'sentence_splitter_group' number %(number)r for '%(id)s' language: expected number from 1 to 6)numberr@   Fz`Invalid 'sentence_splitter_group' for '%(id)s' language: expected int type but have got %(type)sr?   )rB   intr   rD   rA   rE   )r*   r:   r;   r<   groups        r+   !_validate_sentence_splitter_groupz3LanguageValidator._validate_sentence_splitter_groups   s    $D004./eS!! 	 	qyyEAII  &&2$K88  
 NN"":"DKK,@AA  
 Fr,   c                 b   d|vrdS d}|d         }t          |t                    rJ|D ]F}t          |t                    r|s-|                                                     d||d           d}Gn?|                                                     d|t          |          j        d           d}|S )Nr   TzOInvalid 'skip' token %(token)r for '%(id)s' language: expected not empty stringtokenr@   FzSInvalid 'skip' list for '%(id)s' language: expected list type but have got %(type)sr?   rB   listrG   r   rD   rA   rE   )r*   r:   r;   r<   skip_tokens_listrS   s         r+   r1   z%LanguageValidator._validate_skip_list   s    4<&-- 	) # #!%-- #U #NN$$**4"'{;;  
 #F# NN"";"D1A,B,B,KLL  
 Fr,   c                 b   d|vrdS d}|d         }t          |t                    rJ|D ]F}t          |t                    r|s-|                                                     d||d           d}Gn?|                                                     d|t          |          j        d           d}|S )	Nr   Tr   zRInvalid 'pertain' token %(token)r for '%(id)s' language: expected not empty stringrR   FzVInvalid 'pertain' list for '%(id)s' language: expected list type but have got %(type)sr?   rT   )r*   r:   r;   r<   pertain_tokens_listrS   s         r+   r2   z(LanguageValidator._validate_pertain_list   s    D  4"6l)400 	, # #!%-- #U #NN$$**4"'{;;  
 #F# NN"";"D1D,E,E,NOO  
 Fr,   c           	         d}dD ]}||vs||         s.|                                                      d||d           d}<||         }t          |t                    rK|D ]G}t          |t                    r|s.|                                                      d|||d           d}H|                                                      d||t          |          j        d	           d}|S )
NT)r   r   r   r   r   r   r   z@No translations for '%(weekday)s' provided for '%(id)s' language)weekdayr@   Fz\Invalid '%(weekday)s' translation %(token)r for '%(id)s' language: expected not empty string)rZ   rS   r@   zgInvalid '%(weekday)s' translations list for '%(id)s' language: expected list type but have got %(type)s)rZ   r@   rA   r   rD   rB   rU   rG   rA   rE   )r*   r:   r;   r<   rZ   translations_listrS   s          r+   r3   z$LanguageValidator._validate_weekdays   sF   
 %	 %	G d""$w-"  &&V '{;;    $W+T22 . ' 'E%eS11 ' '((..8(/%{SS  
 "''   &&? $+) $%6 7 7 @    r,   c           	         d}dD ]}||vs||         s.|                                                      d||d           d}<||         }t          |t                    rK|D ]G}t          |t                    r|s.|                                                      d|||d           d}H|                                                      d||t          |          j        d	           d}|S )
NT)r   r   r   r   r   r   r   r   r   r   r   r   z>No translations for '%(month)s' provided for '%(id)s' language)r!   r@   FzZInvalid '%(month)s' translation %(token)r for '%(id)s' language: expected not empty string)r!   rS   r@   zeInvalid '%(month)s' translations list for '%(id)s' language: expected list type but have got %(type)s)r!   r@   rA   r[   )r*   r:   r;   r<   r!   r\   rS   s          r+   r4   z"LanguageValidator._validate_months   sF   
 *	 *	E D  U   &&T#;77    $U+T22 . ' 'E%eS11 ' '((..8&+e;OO  
 "''   &&? "') $%6 7 7 @    r,   c           	         d}dD ]}||vs||         s.|                                                      d||d           d}<||         }t          |t                    rK|D ]G}t          |t                    r|s.|                                                      d|||d           d}H|                                                      d||t          |          j        d	           d}|S )
NT)r    r!   r"   r#   r$   r%   r&   z=No translations for '%(unit)s' provided for '%(id)s' language)unitr@   FzYInvalid '%(unit)s' translation %(token)r for '%(id)s' language: expected not empty string)r_   rS   r@   zdInvalid '%(unit)s' translations list for '%(id)s' language: expected list type but have got %(type)s)r_   r@   rA   r[   )r*   r:   r;   r<   r_   r\   rS   s          r+   r5   z!LanguageValidator._validate_units"  sB   N 	 	D4tDz  &&S!55    $T
+T22 . ' 'E%eS11 ' '((..8%)EMM  
 "''   &&? !%) $%6 7 7 @    r,   c           	         d}dD ]}||vs||         s.|                                                      d||d           d}<||         }t          |t                    rK|D ]G}t          |t                    r|s.|                                                      d|||d           d}H|                                                      d||t          |          j        d	           d}|S )
NT)r   z=No translations for '%(word)s' provided for '%(id)s' language)wordr@   FzYInvalid '%(word)s' translation %(token)r for '%(id)s' language: expected not empty string)ra   rS   r@   zdInvalid '%(word)s' translations list for '%(id)s' language: expected list type but have got %(type)s)ra   r@   rA   r[   )r*   r:   r;   r<   ra   r\   rS   s          r+   r6   z'LanguageValidator._validate_other_wordsG  sB    	 	D4tDz  &&S!55    $T
+T22 . ' 'E%eS11 ' '((..8%)EMM  
 "''   &&? !%) $%6 7 7 @    r,   c                    d|vrdS d}|d         }t          |t                    r|D ]}t          |t                    rt          |          dk    r.|                                                     d||d           d}Yt          |                                          d         \  }}t          |t                    rt          |t          t          f          s.|                                                     d||d           d}t          j
        |          }t          |          }t          j        d	|          }	|	                    t          j        d
|                     g }
|	D ]}|                                r#|
                    t          |                     9||j        v r!|
                    |j        |                    c|                                                     d|||d           d}t!          t#          t          |
                    }t!          t%          d|j        dz                       }||z
  }||z
  }|dhz  }|ra|                                                     d||d                    t#          t          t+          |                              d           d}|ra|                                                     d||d                    t#          t          t+          |                              d           d}n?|                                                     d|t-          |          j        d           d}|S )Nr	   TrK   zuInvalid simplification %(simplification)r for '%(id)s' language: eash simplification suppose to be one-to-one mapping)simplificationr@   Fr   zInvalid simplification %(simplification)r for '%(id)s' language: each simplification suppose to be string-to-string-or-int mappingz\\(\d+)z
\\g<(.+?)>zXInvalid simplification %(simplification)r for '%(id)s' language: unknown group %(group)s)rc   r@   rO   zZInvalid simplification %(simplification)r for '%(id)s' language: unknown groups %(groups)s, )rc   r@   groupsz`Invalid simplification %(simplification)r for '%(id)s' language: groups %(groups)s were not usedz^Invalid 'simplifications' list for '%(id)s' language: expected list type but have got %(type)sr?   )rB   rU   rC   lenr   rD   itemsrG   rN   recompilefindallextendisdigitappend
groupindexsetmaprangere   joinsortedrA   rE   )r*   r:   r;   r<   simplifications_listrc   keyrI   compiled_keyreplacementsre   rO   used_groupsexpected_groupsextra_groupsnot_used_groupss                   r+   r7   z+LanguageValidator._validate_simplificationsl  s   D((4#$56*D11 O	"6 G# G#!.$77 3~;N;NRS;S;SNN$$**O+9MM  
 #F!."6"6"8"899!<
U!#s++ :ec3Z3P3P NN$$**\+9MM  
 #F!z#E

!z*e<<##BJ}e$D$DEEE) ' 'E}} 'c%jj1111,"999l&=e&DEEEE((..6 3A&1).    "'!#c6"2"233"%eA|/BQ/F&G&G"H"H*_<"1K"?A3& 
#NN$$**4 /="-&*iiC9M9M0N0N&O&O    #F" 
#NN$$**: /="-&*iiC9P9P0Q0Q&R&R    #FOG#R NN"";"D1E,F,F,OPP  
 Fr,   c           
          d}t          |                                          t          | j                  z
  }|rS|                                                     d|d                    t          t          |                    d           d}|S )NTz0Extra keys found for '%(id)s' language: %(keys)srd   )r@   keysF)ro   r}   
VALID_KEYSr   rD   rr   rp   repr)r*   r:   r;   r<   
extra_keyss        r+   r8   z&LanguageValidator._validate_extra_keys  s    %%CN(;(;;
 	NN""B"DIIc$
6K6K,L,LMM   Fr,   )rE   
__module____qualname__r)   r~   classmethodr   r=   r.   r/   r0   rP   r1   r2   r3   r4   r5   r6   r7   r8    r,   r+   r   r      s       F# # #JJ   [
   [& 
 
 [
 	 	 [	   ["   [2   [4   [4 * * [*X / / [/b " " ["H " " ["H X X [Xt   [  r,   r   )regexrh   dateparser.utilsr   r   r   r,   r+   <module>r      s_        ' ' ' ' ' 'M M M M M M M M M Mr,   