o
    join                     @   s6  d Z ddlZddlZddlmZ ddlmZ ddlmZ dedejfdd	Z	ej
d
d ejD   ZeejZeeddeZdg dgdg dgdg dgdg dgddggdg dgdg dgdg dgdg dgdg d gd!g d"gd#g d$ggZej
d%d& eD   Zej
d'd& eD   Zed(d) Ze	d*Ze
ddddddd+Zeed  ed, eed  ed- B eed  ed. B eee  ed/ B  Zd0d ed1D Zd2d ed3d1D Zeej
e ej
e d4  d5 Z d6ej!d7e"dejfd8d9Z#e#ed:ee e#ed; ed<j$ee e#e d= j$ Z%e#ed:ee ed>e j$ e#ed; ed<j$ee e#e d= j$ Z&e#ed;ee e#ed: ed<j$ee e#e d= j$ Z'ed>e j$e#ed; ee ed?e  e#ed: ed<j$ee e#e d= j$ Z(e#e d=ed@ e#ed: ed@ e#ed; Z)e#ed;ed@ e#ed: ed@ e#e d= Z*e#ed:ee e#e d= Z+e%e&B e'B e(B e)B e*B e+B Z,e#e,dAZ,ee,  Z-ee-dde Z.dBe"de"fdCdDZ/dBe"de"fdEdFZ0dS )Gz@Grammar for extracting possible dates from running test (en_us).    N)byte)pynutil)rewritetopreturnc                 C   sB   dd t d| d D }dd t d| d D | }tj|  S )zAdds optional leading "0" to single-digit numbers in a range.

  Args:
    top: Top of the range

  Returns:
    An FST representing numbers from 1 to top inclusive, with single digit cases
    possibly with a leading "0".
  c                 S      g | ]}t |qS  str.0dr   r   I/home/ubuntu/.local/lib/python3.10/site-packages/pynini/examples/dates.py
<listcomp>$       z)_possibly_zero_padded.<locals>.<listcomp>   c                 S   s   g | ]}|d qS )02dr   r   r   r   r   r   %   r   )rangepyniniunionoptimize)r   numsr   r   r   _possibly_zero_padded   s   
r   c                 C   s   g | ]
}t | |qS r   )r   crossupperr   xr   r   r   r   *   s    r    1)januaryjanzjan.2)februaryfebzfeb.3)marchmarzmar.4)aprilaprzapr.5may6)junejunzjun.7)julyjulzjul.8)augustaugzaug.9)	septemberseptzsept.sepzsep.10)octoberoctzoct.11)novembernovznov.12)decemberdeczdec.c                 c   s*    | ]}t t j|d   |d V  qdS )r   r   N)r   r   r   r   r   r   r   	<genexpr>=   s    "rB   c                 c   s    | ]}|d  V  qdS )r   Nr   )r   mr   r   r   rB   ?   s     )r   .   0stndrdthc                 C   r   r   r	   r   r   r   r   r   N   r   
   c                 C   r   r   r	   r   r   r   r   r   O   r   r      exprmarkc                 C   s<   t d| d}||  |t d| d | S )zIntroduces XML markup.

  Args:
    expr: an FST.
    mark: the name to apply to the region.

  Returns:
    An FST mapping from "expr" to "<mark>expr</mark>".
  <>z</)r   insertconcatr   )rN   rO   markupr   r   r   _markupV   s   

rU   monthday,yeartheof/datetextc                 C      t | tS N)r   one_top_rewrite_date_matcherr^   r   r   r   match      rd   c                 C   r_   r`   )r   ra   _date_taggerrc   r   r   r   tag   re   rg   )1__doc__stringr   
pynini.libr   r   r   intFstr   r   ascii_lowercaseclosure
_lowercaseBYTE_sigma_star	cdrewrite_tolower
_month_mapr   _month_names_month_numsaccep_space	_day_nums	_four_etcdelete_day_ordinalr   _digit_digit_no_zero
add_weight_yearFstLiker
   rU   ques_mdy_full_date_mdy_full_date_ordinal_dmy_full_date_dmy_full_date_ordinal_numeric_ymd_numeric_dmy_month_year_daterb   rf   rd   rg   r   r   r   r   <module>   s  













