o
    -gB                     @   s   d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
mZ g dZedZedZedejZed	eZed
ZedZedZdZdd Zdd Zdd Zdd Zdd Zdd Zedkrse  dS dS )    N)OrderedDict)_get_language_locale_dict)get_dict_differenceget_raw_data)	u   ’u   ʼu   ʻu   ՚u   ꞌu   ′u   ‵u   ʹu   ＇u0   ([DMY])+‏*[-/. 	]*([DMY])+‏*[-/. 	]*([DMY])+z(?<![\+\-]\s*)\{0\}z^M?\d+$|z^\s*[Aa]\s*\.?\s*[Mm]\s*\.?\s*$z^\s*[Pp]\s*\.?\s*[Mm]\s*\.?\s*$z[\(\)]z!../raw_data/cldr_dates_full/main/c                 C   s    t | tot| ot|  S N)
isinstancestrRELATIVE_PATTERNsearchPARENTHESIS_PATTERN)relative_string r   a/var/www/html/django-vendor/venv/lib/python3.10/site-packages/dateparser_scripts/get_cldr_data.py_filter_relative_string$   s
   

r   c                 C   s   t |  S r   )DEFAULT_MONTH_PATTERNmatch)
month_namer   r   r   _filter_month_name,   s   r   c                    s4  t |  d }t |  d }t|}tj|td}W d    n1 s"w   Y  t|}tj|td}W d    n1 s=w   Y  |d |  d d d |d |  d d  t }d	d
g}ddgg d}	g d}
g d}g d}g d}g d}g d}ddg| |d< z
d d  }W n ty   d d d  }Y nw tdt	|
 |d< tttfdd|D |d< tttfdd|D |d < tttfd!d|D |d"< tttfd#d|D |d$< tttfd%d|D |d&< tttfd'd|D |d(< tttfd)d|D |d*< tttfd+d|D |d,< tttfd-d|D |d.< tttfd/d|D |d0< tttfd1d|D |d2< tttfd3d|D |d4< fd5d|D |d6< fd7d|D |d8< fd9d|D |d:< fd;d|D |d<< fd=d|D |d>< fd?d|D |d@< fdAd|D |dB< dCd fdDd|D D |dE< dFd fdGd|D D |dH<  fdId|	D |dJ<  fdKd|
D |dL<  fdMd|D |dN<  fdOd|D |dP<  fdQd|D |dR<  fdSd|D |dT<  fdUd|D |dV< t |dW<  fdXd|	D |dW dY<  fdZd|	D |dW d[<  fd\d|	D |dW d]<  fd^d|
D |dW d_<  fd`d|
D |dW da<  fdbd|
D |dW dc<  fddd|D |dW de<  fdfd|D |dW dg<  fdhd|D |dW di<  fdjd|D |dW dk<  fdld|D |dW dm<  fdnd|D |dW do<  fdpd|D |dW dq<  fdrd|D |dW ds<  fdtd|D |dW du< t |dv< ttt fdwd|	D |dv dx< ttt fdyd|	D |dv dz< ttt fd{d|
D |dv d|< ttt fd}d|
D |dv d~< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< ttt fdd|D |dv d< |S )Nz/ca-gregorian.jsonz/dateFields.json)object_pairs_hookmaindates	calendars	gregorianfieldszstand-aloneformatwideabbreviated)yearz
year-shortzyear-narrow)monthzmonth-shortzmonth-narrow)weekz
week-shortzweek-narrow)dayz	day-shortz
day-narrow)hourz
hour-shortzhour-narrow)minutezminute-shortzminute-narrow)secondzsecond-shortzsecond-narrowzrelativeTimePattern-count-onezrelativeTimePattern-count-othernamedateFormatsshort_valuez\1\2\3
date_orderc                    *   g | ]} D ]}d  | | d qqS )months1r   .0key1key2field_keys_2gregorian_dictr   r   
<listcomp>\       z)_retrieve_locale_data.<locals>.<listcomp>januaryc                    r*   )r+   2r   r-   r1   r   r   r4   g   r5   februaryc                    r*   )r+   3r   r-   r1   r   r   r4   r   r5   marchc                    r*   )r+   4r   r-   r1   r   r   r4   }   r5   aprilc                    r*   )r+   5r   r-   r1   r   r   r4      r5   mayc                    r*   )r+   6r   r-   r1   r   r   r4      r5   junec                    r*   )r+   7r   r-   r1   r   r   r4      r5   julyc                    r*   )r+   8r   r-   r1   r   r   r4      r5   augustc                    r*   )r+   9r   r-   r1   r   r   r4      r5   	septemberc                    r*   )r+   10r   r-   r1   r   r   r4      r5   octoberc                    r*   )r+   11r   r-   r1   r   r   r4      r5   novemberc                    r*   )r+   12r   r-   r1   r   r   r4      r5   decemberc                    r*   )daysmonr   r-   r1   r   r   r4      r5   mondayc                    r*   )rM   tuer   r-   r1   r   r   r4      r5   tuesdayc                    r*   )rM   wedr   r-   r1   r   r   r4      r5   	wednesdayc                    r*   )rM   thur   r-   r1   r   r   r4      r5   thursdayc                    r*   )rM   frir   r-   r1   r   r   r4      r5   fridayc                    r*   )rM   satr   r-   r1   r   r   r4      r5   saturdayc                    r*   )rM   sunr   r-   r1   r   r   r4     r5   sundayc                 S      g | ]}t d |qS )am)
AM_PATTERNsubr.   xr   r   r   r4         
c                    r*   )
dayPeriodsr]   r   r-   r1   r   r   r4   	  r5   r]   c                 S   r\   )pm)
PM_PATTERNr_   r`   r   r   r   r4     rb   c                    r*   )rc   rd   r   r-   r1   r   r   r4     r5   rd   c                       g | ]} | d  qS displayNamer   r.   keydate_fields_dictr   r   r4         r   c                    rf   rg   r   ri   rk   r   r   r4     rm   r   c                    rf   rg   r   ri   rk   r   r   r4     rm   r    c                    rf   rg   r   ri   rk   r   r   r4     rm   r!   c                    rf   rg   r   ri   rk   r   r   r4   !  rm   r"   c                    rf   rg   r   ri   rk   r   r   r4   #  rm   r#   c                    rf   rg   r   ri   rk   r   r   r4   %  rm   r$   zrelative-typec                    rf   zrelative-type--1r   ri   rk   r   r   r4   )      z
1 year agoc                    rf   zrelative-type-0r   ri   rk   r   r   r4   -  ro   z
0 year agoc                    rf   zrelative-type-1r   ri   rk   r   r   r4   1  ro   z	in 1 yearc                    rf   rn   r   ri   rk   r   r   r4   5  ro   z1 month agoc                    rf   rp   r   ri   rk   r   r   r4   9  ro   z0 month agoc                    rf   rq   r   ri   rk   r   r   r4   =  ro   z
in 1 monthc                    rf   rn   r   ri   rk   r   r   r4   A  ro   z
1 week agoc                    rf   rp   r   ri   rk   r   r   r4   E  ro   z
0 week agoc                    rf   rq   r   ri   rk   r   r   r4   I  ro   z	in 1 weekc                    rf   rn   r   ri   rk   r   r   r4   M  ro   z	1 day agoc                    rf   rp   r   ri   rk   r   r   r4   Q  ro   z	0 day agoc                    rf   rq   r   ri   rk   r   r   r4   U  ro   zin 1 dayc                    rf   rp   r   ri   rk   r   r   r4   Y  ro   z
0 hour agoc                    rf   rp   r   ri   rk   r   r   r4   ]  ro   z0 minute agoc                    rf   rp   r   ri   rk   r   r   r4   a  ro   z0 second agozrelative-type-regexc                    (   g | ]}D ]} | d   |qqS zrelativeTime-type-futuregetr-   rl   relative_keysr   r   r4   j      z
in \1 yearc                    rr   zrelativeTime-type-pastrt   r-   rv   r   r   r4   u  rx   z\1 year agoc                    rr   rs   rt   r-   rv   r   r   r4     rx   zin \1 monthc                    rr   ry   rt   r-   rv   r   r   r4     rx   z\1 month agoc                    rr   rs   rt   r-   rv   r   r   r4     rx   z
in \1 weekc                    rr   ry   rt   r-   rv   r   r   r4     rx   z\1 week agoc                    rr   rs   rt   r-   rv   r   r   r4     rx   z	in \1 dayc                    rr   ry   rt   r-   rv   r   r   r4     rx   z
\1 day agoc                    rr   rs   rt   r-   rv   r   r   r4     rx   z
in \1 hourc                    rr   ry   rt   r-   rv   r   r   r4     rx   z\1 hour agoc                    rr   rs   rt   r-   rv   r   r   r4     rx   zin \1 minutec                    rr   ry   rt   r-   rv   r   r   r4     rx   z\1 minute agoc                    rr   rs   rt   r-   rv   r   r   r4     rx   zin \1 secondc                    rr   ry   rt   r-   rv   r   r   r4     rx   z\1 second ago)cldr_dates_full_diropenjsonloadr   upperAttributeErrorDATE_ORDER_PATTERNr_   r   grouplistfilterr   r   )localeca_gregorian_filedateFields_filefcldr_gregorian_datagcldr_datefields_data	json_dictfield_keys_1	year_keys
month_keys	week_keysday_keys	hour_keysminute_keyssecond_keysdate_format_stringr   )rl   r2   r3   rw   r   _retrieve_locale_data0   s  









	
	
















r   c                 C   s.   t d| } | dd} |  } d|  S )N'.  )RE_SANITIZE_APOSTROPHEr_   replacelowerjoinsplit)given_stringr   r   r   _clean_string  s   r   c                 C   sz   |   D ]-\}}t|trtttt|| |< qt|tr1tt|  | |< t	| | | |< qtt
dd |   S )zRemove duplicates and sortc                 S   s   | d S )N   r   )ra   r   r   r   <lambda>  s    z_clean_dict.<locals>.<lambda>)itemsr   r   sortedr   fromkeysmapr   dict_clean_dictr   )r   rj   valuer   r   r   r     s   

r   c               	   C   s  t   t } d}d}tj|st| tj|r t| t| | D ]_}tt	|}t
 }| | }|D ]}tt	|}tt||||< q8t
t| |d< || d }	td|	  tj|dddd	d
}
t|	d}||
 W d    n1 sw   Y  q'd S )Nz%../dateparser_data/cldr_language_dataz<../dateparser_data/cldr_language_data/date_translation_data/locale_specificz.jsonzwriting    ),z: F)indent
separatorsensure_asciizutf-8wb)r   r   ospathisdirmkdirshutilrmtreer   r   r   r   r   r   printr|   dumpsencoder{   write)language_locale_dictparent_directory	directorylanguagejson_language_dictlocale_specific_dictlocales_listr   json_locale_dictfilenamejson_stringr   r   r   r   r     sB   




r   __main__)r|   r   r   collectionsr   regexre"dateparser_scripts.order_languagesr   dateparser_scripts.utilsr   r   APOSTROPHE_LOOK_ALIKE_CHARScompiler   r
   Ur   r   r   r^   re   r   rz   r   r   r   r   r   r   __name__r   r   r   r   <module>   s<    



   W 
