
    cCik                     $    S r SSKr " S S5      rg)z%Number Normalizer class for SpeechT5.    Nc                   ,    \ rS rSrS rS rS rS rSrg)EnglishNumberNormalizer   c                     / SQU l         / SQU l        / SQU l        / SQU l        0 SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(S).EU l        g )*N)
 onetwothreefourfivesixseveneightnine)
r   eleventwelvethirteenfourteenfifteensixteen	seventeeneighteennineteen)
r   tentwentythirtyfortyfiftysixtyseventyeightyninety)r   thousandmillionbilliontrillionquadrillionquintillion
sextillion
septillion	octillion	nonillion	decillion$z dollarsu   €z euros   £z pounds   ¢z cents   ¥z japanese yenu   ﷼z saudi riyalu   ₹z indian rupeesu   ₽z russian rublesu   ฿z
 thai bahtu   ₺z turkish lirasu   ₴z ukrainian hryvniau   ₣z swiss francsu   ₡z costa rican colonu   ₱z philippine pesou   ₪z israeli shekelsu   ₮u    mongolian tögrögu   ₩z south korean wonz nigerian nairau    vietnamese Đồng)u   ₦u   ₫)onesteenstens	thousandscurrency_symbols)selfs    h/home/james-whalen/.local/lib/python3.13/site-packages/transformers/models/speecht5/number_normalizer.py__init__ EnglishNumberNormalizer.__init__   s   `	

 n	
$!
!
8!
 )!
 (	!

 /!
 >!
 #!
 $!
 <!
 #!
 '!
 ?!
 '!
 %!
 %!
  (!!
" &#!
$ %('!
    c                    US:X  a  g/ n[        S[        U R                  5      5       H  nUS-  S:w  a  SnUS-  S-  nUS-  nUS:  a  X@R                  U   S-   -  nUS:  a  US-  nUS:  a  US	:  a  X@R                  US-
     -  nOFU R
                  US-     nU R                  US-     nU(       a  XG-  nU(       a  U(       a  US
-  nXH-  nUR                  U5        US-  nM     S
R                  [        U5      5      $ )Nr   zeroi  r   d   z hundredz and 
   r    )	rangelenr5   r2   r3   r4   appendjoinreversed)	r7   numpartsiparthundreds
tens_units
tens_digit
ones_digits	            r8   spell_number$EnglishNumberNormalizer.spell_numberL   s   !8q#dnn-.ATzQ:, 3Y
a<IIh/*<<D!A~?zBJJzB77D!%:+;!<J!%:?!;J!*!% CKD*T"DLC3 /6 xx((r;   c           
         SU;   a  UR                  S5      u  p#OUSp2SnU R                  R                  5        Hv  u  pVUR                  U5      (       a  UnU[	        U5      S n  OMUR                  S5      (       d  ME  USS R                  U5      (       d  M`  UnSU[	        U5      S-   S -   n  O   SnUR                  S5      (       a  SnUSS nO&UR                  S5      (       a  SnU[	        S5      S nSnS	U;   d  S	U;   a&  S
nUR                  S	S5      nUR                  S	S5      nUR                  S[	        U5      S-
  S-  S-   -  5      n/ n	[        S[	        U5      S5       Hl  n
[        X*U
S-    5      nUS:  d  M  U R                  U5      nU R                  [	        X*S 5      S-  S-
     nU(       a  USU-   -  nU	R                  U5        Mn     SR                  U	5      nUS:X  a  U(       d  U(       a
  U U U U 3$ U U 3$ SR                  U Vs/ s H  oR                  [        U5      5      PM     sn5      nU(       d  U(       a  U U SU U U 3$ U U SU U 3$ s  snf )zG
Converts an individual number passed in string form to spelt-out form
.00r   N-   zminus minus%z percent   r   r@   z point )splitr6   items
startswithrB   replacezfillrA   intrN   r5   rC   rD   )r7   numberinteger_partdecimal_partcurrency_symbolsymbolnameminus_prefixpercent_suffixrG   rH   chunkrI   unitspelled_integerdigitspelled_decimals                    r8   convertEnglishNumberNormalizer.convertn   s    &=)/c):&L,)/,  11779LF&&v.."&+CKM:&&s++#..v66&*O#&c&kAo6G)H#HL : ""3''#L'+L$$W--#L'G7L,#"5'N'//R8L'//R8L#))!L0AA0E!/Ka/O*PQq#l+Q/AQ/0Eqy((/~~c,r*:&;q&@1&DEC$J&DT" 0 ((5/ 4  ?  . 1.1A/ARS (((89 "hhS_'`S_%(9(9#e*(ES_'`aO  ?  . 18I.IYZiYjk %~o%6go=N~N^_ (as    #I0c                    ^  Sn[         R                  " SS U5      n[         R                  " UU 4S jU5      n[         R                  " SSU5      nU$ )zV
Convert numbers / number-like quantities in a string to their spelt-out counterparts
u~   (?<!\w)(-?\$?\€?\£?\¢?\¥?\₹?\₽?\฿?\₺?\₴?\₣?\₡?\₱?\₪?\₮?\₩?\₦?\₫?\﷼?\d+(?:\.\d{1,2})?%?)(?!\w)z	(\d+,\d+)c                 D    U R                  S5      R                  SS5      $ )NrT   ,r   )groupr[   )matchs    r8   <lambda>2EnglishNumberNormalizer.__call__.<locals>.<lambda>   s    %++a.2H2Hb2Qr;   c                 D   > TR                  U R                  S5      5      $ )NrT   )rk   rp   )rq   r7   s    r8   rr   rs      s    t||EKKPQN7Sr;   z +r@   )resub)r7   textpatternconverted_texts   `   r8   __call__ EnglishNumberNormalizer.__call__   sO    
 T vvl$QSWX )SUYZc>:r;   )r6   r2   r3   r4   r5   N)	__name__
__module____qualname____firstlineno__r9   rN   rk   rz   __static_attributes__ r;   r8   r   r      s    5
n )DBHr;   r   )__doc__ru   r   r   r;   r8   <module>r      s    , 	l lr;   