
    *i3                     ~    S SK r S SKJr  S SKJr  S SKrS rS rS rS r	S r
SS	 jrS
 rS rS rS rS rS rS rg)    N)defaultdict)zip_longestc                 0    [         R                  " SU 5      $ )NNFKD)unicodedata	normalizess    T/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/jellyfish/_jellyfish.py
_normalizer      s      ++    c                     [         R                  " S[        5        [        U [        5      (       d!  [        S[        U 5      R                  -  5      eg )NzSThe jellyfish._jellyfish module is deprecated and will be removed in jellyfish 1.0.zexpected str or unicode, got %s)warningswarnDeprecationWarning
isinstancestr	TypeErrortype__name__r	   s    r   _check_typer      sC    MM] a9DG<L<LLMM r   c                    [        U 5        [        U5        X:X  a  g[        U 5      S-   n[        U5      S-   nU (       d  US-
  $ U(       d  US-
  $ S n[        U5      n[        SU5       H^  nXV/S/US-
  -  -   pT[        SU5       H>  nXG   S-   nXWS-
     S-   n	XGS-
     XS-
     XS-
     :X  a  SOS-   n
[        XU	5      XW'   M@     M`     US   $ )Nr      )r   lenrangemin)s1s2rowscolsprevcurrcdeletion	insertionedits              r   levenshtein_distancer)      s    OO	xr7Q;Dr7Q;DaxaxD
+C1d^sdQh//cq$Aw{HE
QIA;ra%yB1uI'=!1ED3CF	    r7Nr   c                    [        U 5        [        U5        [        U 5      n[        U5      nU(       a  U(       d  g[        XE5      n[        XE5      nUS-  S-
  nUS:  a  SnS/U-  nS/U-  n	Sn
[	        U 5       H\  u  p[        SX-
  5      n[        X-   US-
  5      n[        XS-   5       H&  nX   (       a  M  X   U:X  d  M  S=X'   X'   U
S-  n
  MZ     M^     U
(       d  gS=nn[	        U5       HD  u  nnU(       d  M  [        UU5       H  nX   (       d  M  US-   n  O   X   UW   :w  d  M?  US-  nMF     US-  n[        U
5      n
X-  X-  -   U
U-
  U
-  -   S-  nU(       a  US:  a  [        US	5      nSnX:  a   X   X   :X  a  US-  nX:  a  X   X   :X  a  M  U(       a  UUS
-  SU-
  -  -  nU(       aI  US	:  aC  XS-   :  a;  SU
-  Xk-   :  a0  USU-
  [        X-
  S-
  5      [        XE-   US-  -
  S-   5      -  -  -  nU$ )Ng           r   r   FT   gffffff?   g?g      ?)r   r   r   max	enumerater   float)r   r   long_tolerance
winklerizes1_lens2_lenmin_lensearch_ranges1_flagss2_flagscommon_charsis1_chlowhijktrans_counts1_fweights                       r   _jaro_winklerrC   0   sc   OOWFWF&!Gv&L A%*LawHwH LbM!Q%&!6A:.sF#A;;25E>,00hk!	 $ "  AX&441f%;;AA & u1~q  ' AK &L !#$k)\9: 	

F fslOeFA ea#gv..F !1u$L GK/sV|l&*+eFOa!e4Ka4O.PP F Mr   c                     [        XSS5      $ )NFrC   )r   r   s     r   jaro_similarityrF      s    ..r   c                     [        XUS5      $ )NTrE   )r   r   r1   s      r   jaro_winkler_similarityrH      s    66r   c           
         [        U 5        [        U5        [        U 5      n[        U5      nX#-   n[        [        5      n[	        US-   5       Vs/ s H  nS/US-   -  PM     nnXGS   S'   [	        SUS-   5       H  nXGUS-      S'   XUS-      S'   M     [	        SUS-   5       H  nXGS   US-   '   XS   US-   '   M     [	        SUS-   5       H  nSn	[	        SUS-   5       Ht  n
XQU
S-
        nU	nSnXS-
     XS-
     :X  a  SnU
n	[        Xx   U
   U-   XxS-      U
   S-   Xx   U
S-      S-   X{   U   X-
  S-
  -   S-   X-
  S-
  -   5      XxS-      U
S-   '   Mv     XXS-
     '   M     XrS-      US-      $ s  snf )Nr+   r   r   )r   r   r   intr   r   )r   r   len1len2infinitedaxscorer:   dbr>   i1j1costs                 r   damerau_levenshtein_distancerU      s   OOr7Dr7D{H 
S	B (-TAX7!aSD1HE7!HQK1dQh"a!eQa!eQ   1dQh"aQaQ   1dQhq$(#Aq1uIBBDa%yB1uI%"%d"!eQ!#Q!#	"!,q0AFQJ?	#Ea%LQ $ 2!e9!  $ ?4!8$$9 8s   E5c                    [        U 5        U (       d  g[        U 5      n U R                  5       n SnU S   /nSnU H  u  pEU S   U;   d  M  Un  O   S nU SS   HH  nU H)  u  pEXt;   d  M  XV:w  a  UR                  U5        US-  nUn  O   US:w  a  US:w  a  S nUS:X  d  MH    O   USSU-
  -  -  nSR	                  U5      $ )	N ))BFPV1)CGJKQSXZ2)DT3)L4)MN5)R6r   r   HWr-   0)r   r   upperappendjoin)r
   replacementsresultcountlsetsublastletters           r   soundexrq      s    N1A		AL dVFE "	Q44<D "
 AB%%ID~;MM#&QJE & }3A:  cQYF776?r   c                     [        U 5        [        U5        [        U5      [        U 5      :  a  Xp[        U 5      [        U5      -
  n[        U5       H  u  p4X@U   :w  d  M  US-  nM     U$ )Nr   )r   r   r/   )r   r   distancer:   r%   s        r   hamming_distancert      sd    OO 2wRB 2wR H"1:MH  Or   c                    [        U 5        U (       d  gU R                  5       n / nU R                  S5      (       a	  SU SS  -   n OxU R                  S5      (       a  U SS  n O\U R                  S5      (       a	  SU SS  -   n O=U R                  S	5      (       a	  S
U SS  -   n OU R                  S5      (       a  SU SS  -   n U R                  S5      (       a	  U S S S-   n OU R                  S5      (       a  U S S S-   n UR	                  U S   5        Sn[        U 5      nX#:  GaV  X   nUS:X  a  US-   U:  a  XS-      S:X  a	  SnUS-  nGOUS;   a  SnOUS:X  a  SnOUS:X  a  SnOUS:X  a  SnOUS:X  a#  US-   [        U 5      :  a  XS-      S:X  a  SnOSnOUS:X  a  XS-   US-    S:X  a  S nUS-  nOUS!:X  a%  US-   [        U 5      :  a  XS-      S":X  a  S#nUS-  nOnUS":X  aP  XS-
     S;  d/  US-   [        U 5      :  a  XS-      S;  d  US-   [        U 5      :X  a  XS-
     S;   a  SnO XS-
     nOUS$:X  a  XS-
     S;   a  XS-
     nUS%   US%   S%   :w  a  UR	                  U5        US-  nX#:  a  GMV  SR                  U5      nUR                  S5      (       a  US:w  a  US S% nUR                  S&5      (       a  US S S-   nUR                  S5      (       a  US:w  a  US S% nU$ )'NrW   MACMCCr,   KNr   KC)PHPFFFr+   SCHSSS)IEEEY)r\   RTRDNTNDDr   EVAFAEIOUAQGZSMNCHSSPrd   Fre   r   AY)r   rg   
startswithendswithrh   r   ri   )r
   keyr:   len_schs        r   nysiisr      s'   N		A
C 	||EAabEM	
d		abE	
c		!AB%K	
l	#	#1QR5L	
e		AabEM 	zz,crFSL	
2	3	3crFSL JJqt 	
AFE
)T9Q1U8s?BFA7]B3YB3YB3YB3Y1us1v~!E(c/3Y1UQU+t3BFA3Y1q53q6>aAh#oBFA3Y!eHG#AA1U87#:AQQx7"1uX3Y1U8w.q5Bb6SWR[ JJrN	QO )R ''#,C ||CSCZ#2h ||D#2hn ||CSCZ#2h Jr   c                 x   [        U 5        U R                  5       R                  SS5      n U R                  5       (       d  [	        S5      e/ nS nSnU  H*  nU(       d  US;  a  XB:w  a  UR                  U5        UnSnM,     [        U5      S:  a  SR                  US S US	S  -   5      $ SR                  U5      $ )
N rW   zstring must be alphabeticTr   F   r,   )r   rg   replaceisalpha
ValueErrorrh   r   ri   )r
   codexr"   firstr%   s        r   match_rating_codexr   R  s    N 	
	#r"A99;;455EDE Qg%!)LLO  5zA~wwuRay5:-..wwu~r   c                    [        U 5      n[        U5      n[        U5      n[        U5      n/ n/ n[        XE-
  5      S:  a  g XE-   nUS::  a  Sn	OUS::  a  Sn	OUS::  a  Sn	OSn	[        X#5       H>  u  pX:w  d  M  U
(       a  UR	                  U
5        U(       d  M-  UR	                  U5        M@     S=p[        [        U5      [        U5      5       H&  u  pX:w  d  M  U
(       a  US-  nU(       d  M!  US-  nM(     S	[        X5      -
  U	:  $ )
Nr,   r-            r+   r   r   r   )r   r   absr   rh   reversedr.   )r   r   codex1codex2rK   rL   res1res2lensum
min_ratingc1c2unmatched_count1unmatched_count2s                 r   match_rating_comparisonr   o  s   #F#Fv;Dv;DDD 4;1 [F{
	1
	2

 f-8BrB . +,+htnhtn=8 A% r A%  > $77JFFr   c                 	   [        U 5        / n[        U R                  5       5      n U R                  S5      (       a  U SS  n SnU[	        U 5      :  Ga`  X   nU[	        U 5      S-
  :  a  XS-      OSnU[	        U 5      S-
  :  a  XS-      OSnX4:X  a  US:w  a  US-  nM\  US;   a$  US:X  d  XS-
     S:X  a  UR                  U5        GOUS	:X  a+  US:w  a  XS-
     S
:X  a  U(       a  UR                  S	5        GOUS:X  a[  US:X  a  US:X  d  US:X  a  UR                  S5        US-  nGOrUS;   a  UR                  S5        US-  nGOTUR                  S5        GOAUS:X  a7  US:X  a  US;   a  UR                  S5        US-  nGOUR                  S5        GOUS;   a  UR                  U5        GOUS:X  aZ  US;   a  UR                  S5        GOUS:X  a  U(       a  US;  a  US-  nGOUS:X  a  U(       d  US-  nGOUR                  S5        GOUS:X  a*  US:X  d  US;   d  XS-
     S;  a  UR                  S5        GO[US:X  a$  US:X  d  XS-
     S:w  a  UR                  S5        GO1US:X  a1  US:X  a  UR                  S5        US-  nGOUR                  S5        GOUS:X  a  UR                  S5        GOUS:X  aU  US:X  a  UR                  S5        US-  nGOUS:X  a  US;   a  UR                  S5        US-  nGOUR                  S5        GOUS:X  a\  US:X  a  US;   a  UR                  S5        GOaUS:X  a  UR                  S5        US-  nGOCUS:w  d  US:w  a  UR                  S5        GO$US:X  a  UR                  S5        GOUS:X  a;  US:X  a  US:X  a  US-  nUR                  S5        OUS;   a  UR                  S5        OUS:X  a_  US:X  a6  US:X  d  US:X  a  US;   a  UR                  S5        OUR                  S5        OUR                  S5        UR                  S5        OeUS:X  a  US;   a  UR                  S5        OGUS :X  a  UR                  S5        O/US:X  a)  [	        U5      S:  a  US!   S:w  a  UR                  S5        US-  nU[	        U 5      :  a  GM`  S"R                  U5      R                  5       $ )#N)kngnpnwraer   r   z*****r+   r%   aeiour   bmr:   ahrO   ieyr
   r?   dgr>   tfjlmnrnpfqoarf   vwyzr   rW   )r   r   lowerr   r   rh   ri   rg   )r
   rk   r:   r%   nextnextnexts         r   	metaphoner     sL   NF1779A 	||233abE	A
c!f*Ds1vz>qQxw 3q6A:~1U87 9cFA<Avq5Sa #X!Va%CTc"#Xs{x3$#+c"Qc"Qc"#Xs{x50c"Qc"(]MM!#Xu}c"hg.EQXQc"#XAvA!eHG,Cc"#XAvq5Sc"#Xs{c"Qc"#XMM##Xs{c"QT!1c"Qc"#Xs{x4/c"c"QCc"#XMM##XAv$#+Qc"c"#XAv3;43;8t3CMM#&MM#&c"c"#Xwc"#XMM##X6{Q6":#4c"	QG c!f*J 776?  ""r   )F)r   collectionsr   	itertoolsr   r   r   r   r)   rC   rF   rH   rU   rq   rt   r   r   r   r    r   r   <module>r      s\     # ! ,N6Od/7(%V,^"Zz:'GTr#r   