ó
    Û“,j!  ã            
       ó*  • S SK Jr  S SKJr  S SKrS SKr\R                  " SS5      r\R                  " \R                  S5      5      r
\R                  " SS5      r\R                  " \R                  S5      5      r\R                  " SS5      r\R                  " \R                  S5      5      rS	 H  r\\
\SS
 S-   '   M     \
R                  \
R                  5        V Vs0 s H  u  pU R!                  SS5      U_M     snn 5        \R                  \R                  5        V Vs0 s H  u  pU R!                  SS5      U_M     snn 5        \" / SQ5      rS rS r0 r\
R                  5        HL  u  rr\R1                  5       \;   a  M  S\;  a  M$  \R3                  S5      r\" \SS/5       H  r\\\'   M
     MN     \R                  \5        \" SS5      r\R;                  \
5        \R;                  \5        \" SS5      r\R;                  \
5        \R;                  \5        \R;                  \5        \" SS5      r\R;                  \
5        \R;                  \5        \" SS5      r \ R;                  \
5        \" SS5      r!\!R;                  \"" \
RG                  5       5      5        \!R;                  \"" \RG                  5       5      5        \!R;                  \"" \RG                  5       5      5        \\\\ S.r$SS jr%S rS r&gs  snn f s  snn f )é    )Úproduct)Ú
TextSearchNÚcontractionszdata/contractions_dict.jsonzutf-8zdata/leftovers_dict.jsonzdata/slang_dict.json)ÚjanuaryÚfebruaryÚmarchÚaprilÚjuneÚjulyÚaugustÚ	septemberÚoctoberÚnovemberÚdecemberé   Ú.Ú'u   â€™)zhe'szhe'llzwe'llúwe'dzit'szi'dr   zwe'rezi'llzwho'rezo'c                 óä   • / nUR                  U 5        / nU HO  nU Vs/ s H  oU/PM     nn[        XA5      n[        U6  H#  nUR                  SR                  U5      5        M%     MQ     U$ s  snf )NÚ )ÚappendÚintersperser   Újoin)ÚtokensÚjoinersÚcombsÚresultsÚoptionÚxÚcs          Ú£C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\contractions/__init__.pyÚget_combinationsr"   (   so   € Ø€EØ	‡L�L�ÔØ€GÛˆÙ%Ó&šv˜!“#™vˆÐ&Ü˜VÓ-ˆÜ˜&Ó!ˆAØ�N‰N˜2Ÿ7™7 1›:Ö&ó "ñ ð
 €Nùò	 's   ŸA-c                 ó>   • U/[        U 5      S-  S-
  -  nXSS S2'   U$ )Né   é   r   )Úlen)ÚlstÚitemÚresults      r!   r   r   4   s-   € ØˆV”s˜3“x !‘| aÑ'Ñ(€FØˆ1ˆ4ˆaˆ4�LØ€Mó    r   ÚinsensitiveÚnormÚobject))TF©TT)FT)FFc                 ó8   • [         X4   nUR                  U 5      $ ©N)Ú	replacersÚreplace)ÚsÚ	leftoversÚslangÚtss       r!   Úfixr7   d   s   € Ü	�IÐ%Ñ	&€BØ�:‰:�a‹=Ðr*   c                 ó\   • [         R                  5        H  nUR                  X5        M     g r0   )r1   ÚvaluesÚadd)ÚkeyÚvaluer6   s      r!   r:   r:   i   s!   € Ü×ÑÖ ˆØ
�‰ˆsÖò !r*   c           	      óž  •  [        U5        [        nUR	                  U 5      n/ nU Hy  nUR
                  U-
  nUR                  U-   nUS:  a  SnU[        U 5      :”  a  [        U 5      nUR                  UR                  UR
                  UR                  XU S.5        M{     U$ ! [         a  n[        U5        [        S5      eSnAff = f)au  
Return all contractions and their location before fix for manual check. Also provide a viewing window to quickly
preview the contractions in the text.
:param text: texture.
:param flank: int number, control the size of the preview window. The window would be "flank-contraction-flank".
:return: preview_items, a list includes all matched contractions and their locations.
zArgument flank must be integer!Nr   )ÚmatchÚstartÚendÚviewing_window)
ÚintÚ	ExceptionÚprintÚts_view_windowÚfindallr?   r@   r&   r   r>   )	ÚtextÚflankÚer6   r   Úpreview_itemsr)   Úwindow_startÚ
window_ends	            r!   ÚpreviewrM   n   sÏ   € ð;ÜˆEŒ
ô 
€BØ�j‰j˜Ó€GØ€MÛˆØ—|‘| eÑ+ˆØ—Z‘Z %Ñ'ˆ
Ø˜!ÓØˆLØœ˜D›	Ó!Ü˜T›ˆJØ×Ñ v§|¡|¸f¿l¹lÐSY×S]ÑS]Ø/3À*Ð/MñOö 	Pñ ð Ðøô ó ;ÜˆaŒÜÐ9Ó:Ð:ûð;ús   ‚B' Â'
CÂ1CÃCr.   )'Ú	itertoolsr   Ú
textsearchr   ÚjsonÚpkgutilÚget_dataÚ	json_openÚloadsÚdecodeÚcontractions_dictÚleftovers_dictÚ
slang_dictÚmonthÚupdateÚitemsr2   ÚsetÚsafety_keysr"   r   Úunsafe_dictÚkÚvÚlowerÚsplitr   ÚcombÚts_leftoversr:   Úts_leftovers_slangÚts_slangÚts_basicrE   ÚlistÚkeysr1   r7   rM   )r_   r`   s   00r!   Ú<module>rj      sè  ðÝ Ý !ã Û à×Ò˜^Ð-JÓK€	Ø—J’J˜y×/Ñ/°Ó8Ó9Ð à×Ò˜^Ð-GÓH€	Ø—’˜I×,Ñ,¨WÓ5Ó6€à×Ò˜^Ð-CÓD€	Ø�ZŠZ˜	×(Ñ(¨Ó1Ó2€
ó€Eð */Ð�e˜B˜Q�i #‘oÓ&ñð × Ñ Ð?P×?VÑ?VÔ?XÔYÒ?X±t°q˜!Ÿ)™) C¨Ó/°Ò2Ñ?XÒYÔ Zà × Ñ ¸N×<PÑ<PÔ<RÔSÒ<R±D°A�q—y‘y  eÓ,¨aÒ/Ñ<RÒSÔ TáÚ^ó€ò
	òð €Ø×#Ñ#Ö%�D€A€qØ‡w�wƒy�KÓÙØ
�!ƒ|ÙØ�W‰W�S‹\€FÙ  ¨"¨c¨Ö3ˆØˆ�DÓó 4ñ &ð × Ñ �+Ô á˜-¨Ó0€Ø × Ñ Ð"Ô #Ø × Ñ �Ô  á ¨vÓ6Ð Ø × Ñ Ð(Ô )Ø × Ñ �~Ô &Ø × Ñ �zÔ "á�m VÓ,€Ø ‡�ÐÔ Ø ‡�ˆZÔ á�m VÓ,€Ø ‡�ÐÔ á˜M¨8Ó4€Ø × Ñ ‘4Ð)×.Ñ.Ó0Ó1Ô 2Ø × Ñ ‘4˜×+Ñ+Ó-Ó.Ô /Ø × Ñ ‘4˜
Ÿ™Ó)Ó*Ô +ð  Ø$ØØñ	€	ôò
ó
ùó_ ZùãSs   Ã#L	
Ä(L
