a
    xd:                     @   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
 d dlmZ dZdZdZd	Zd
Zeejeje eeedd eee
 Zdd eeD ZeeeeZedZ dd Z!dd Z"dd Z#dd Z$dddZ%e&dkre%  dS )    N)OrderedDict)RoundTripLoader)avoid_languages)combine_dictsz<../dateparser_data/cldr_language_data/date_translation_data/z/../dateparser_data/supplementary_language_data/zE../dateparser_data/supplementary_language_data/date_translation_data/z../dateparser/data/z)../dateparser/data/date_translation_data/c                 C   s   | d d S N )xr   r   ^/var/www/html/Ranjet/env/lib/python3.9/site-packages/dateparser_scripts/write_complete_data.py<lambda>       r   c                 C   s   g | ]}|d d qS r   r   ).0r	   r   r   r
   
<listcomp>   r   r   z\{0\}c                 C   sJ   t  }|  D ]6\}}t|D ]\}}td|}|||< q|||< q|S )Nz(\\d+[.,]?\\d*))r   items	enumerateRELATIVE_PATTERNsub)relative_dataZmodified_relative_datakeyvalueistringr   r   r
   _modify_relative_data   s    

r   c                 C   sJ   |  di }t|}|  di }| D ]\}}| di }t|}q(d S )Nzrelative-type-regexZlocale_specific)getr   r   )Zlanguage_datar   Zlocale_specific_data_infoZlocale_relative_datar   r   r
   _modify_data%   s    r   c                 C   s   i }i }| t v rNtt|  d }tj|td}W d    n1 sD0    Y  | tv rtt|  d  }tt|	 }W d    n1 s0    Y  t
||}d|vr| |d< |S )Nz.json)object_pairs_hookz.yamlname)cldr_languagesopencldr_date_directoryjsonloadr   supplementary_languagessupplementary_date_directoryr   get_datar   )languageZ	cldr_dataZsupplementary_datafgZcomplete_datar   r   r
   #_get_complete_date_translation_data.   s    ,.
r*   c                 C   sF   |r||| < n4t | |}|| W d    n1 s80    Y  d S )N)r    write)filenametextmode	in_memoryin_memory_resultoutr   r   r
   _write_file=   s    
r2   Fc           	      C   s  i }| s>t jtst t t jtr4tt t t tt	d }t
| }W d   n1 sl0    Y  tD ]Z}t|}t||}t| tj|dddd}d| d d	}tt| d
 |d| | qzd}ttd |dd| ttd ddd| |S )a7  
    This function is responsible of generating the needed py files from the
    CLDR files (JSON format) and supplementary language data (YAML format).

    Use it with in_memory=True to avoid writing real files and getting a
    dictionary containing the file names and their content (used when testing).
    zbase_data.yamlN   ),z: F)indent
separatorsensure_asciizinfo = 
zutf-8z.pywbzsfrom dateparser.data import date_translation_data
from .languages_info import language_order, language_locale_dict
z__init__.pyw )ospathisdirtranslation_data_directorymkdirdate_translation_directoryshutilrmtreer    supplementary_directoryr   r&   all_languagesr*   r   r   r"   dumpsencoder2   )	r/   r0   r(   Z	base_datar'   Zdate_translation_dataZtranslation_dataZout_textZ	init_textr   r   r
   write_complete_dataE   s.    


*

rH   __main__)F)'r"   r<   rB   collectionsr   regexreZruamel.yamlr   Z"dateparser_scripts.order_languagesr   Zdateparser_scripts.utilsr   r!   rD   r%   r?   rA   chdirr=   dirnameabspath__file__listsetmaplistdirr   r$   unionrE   compiler   r   r   r*   r2   rH   __name__r   r   r   r
   <module>   s0    

	
(
