
    =wg}8                     2    d dl mZ ddlmZ  G d de      Zy)   )_StandardStemmer    )uc            	          e Zd ZdZ ed      Zg ddddddd	d
dddddddddddddddddddddd d!d" ed#      d$d%d&d'd( ed)      d*d+d,d-Zg d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdB edC       edD      dEdFdGdHdIdJ edK      dLdMdNdOdPZg dQdRdSdTdU edV      dWdXdYdZd[d\d]d^d_d`dadb edc       edd      dedfdg edh      didjdkdldm edn       edo      dpdq edr      dsdt edu      dvZ edw       edx      dydzd{d| ed}      fZ	d~ Z
d Zy)FrenchStemmera  
    The French Snowball stemmer.

    :cvar __vowels: The French vowels.
    :type __vowels: unicode
    :cvar __step1_suffixes: Suffixes to be deleted in step 1 of the algorithm.
    :type __step1_suffixes: tuple
    :cvar __step2a_suffixes: Suffixes to be deleted in step 2a of the algorithm.
    :type __step2a_suffixes: tuple
    :cvar __step2b_suffixes: Suffixes to be deleted in step 2b of the algorithm.
    :type __step2b_suffixes: tuple
    :cvar __step4_suffixes: Suffixes to be deleted in step 4 of the algorithm.
    :type __step4_suffixes: tuple
    :note: A detailed description of the French
           stemming algorithm can be found under
           http://snowball.tartarus.org/algorithms/french/stemmer.html
    u   aeiouyâàëéêèïîôûù	issementsissementatricesatriceateursationslogiesusionsutionsementsammentemmentancesiqUesismesablesistesateurationlogieusionutionencesementeusesmentsanceiqUeismeableisteence   itésiveseauxeusementeux   itéiveifsauxifissaIentissantesiraIentissanteissantsissionsirionsissaisissaitissantissentissiezissonsiraisiraitirentiriezironsirontissesissezu   îmesu   îtesiraiirasirezisseiesirau   îtieirisitieraIentassionserionsassentassiez   èrenteraiseraiteriezeronserontaIentantesassesionseraieraserez   âmes   âtesanteantsasse   éeseraiezaisaitant   ée   éserez   âtaias   éa   ière   IèreionierIere   ëc                    |j                         }d}d}d}d}t        dt        |            D ]4  }||dz
     dk(  s||   dk(  sdj                  |d| d||dz   d f      }6 t        dt        |      dz
        D ]  }||dz
     | j                  v r_||dz      | j                  v rK||   dk(  rdj                  |d| d||dz   d f      }n%||   dk(  rdj                  |d| d	||dz   d f      }||dz
     | j                  v s||dz      | j                  v s||   d
k(  sdj                  |d| d||dz   d f      } | j                  || j                        \  }}| j                  || j                        }	| j                  D ]  }
|j                  |
      s|
dk(  r	|dd }d}n|
dv r@|
|v r|dt        |
        }d}n|
|v rdj                  |dt        |
        df      }d}n|
dv r|
|	v r|dt        |
        }d}|dd dk(  rd|v r|dd }|dd dk(  r~d|v ry|dd }nr|dd dk(  r(d|v r|dd }n_d|v rZdj                  |dd df      }nB|dd dv rd|v sd|v r2|dd }n+|dd t        d      t        d      fv rt        d      |	v st        d      |	v rdj                  |dd df      }n|
dk(  r4|
|	v r0dj                  |dd df      }dj                  |	dd df      }	d}n|
d k(  r|
|	v rdj                  |dd d!f      }d}n|
d"v rZ|
|	v rV|	j                  |
      sE|	|	j                  |
      dz
     | j                  v r"|dt        |
        }|	dt        |
        }	d}n"|
d#k(  r|
|v rdj                  |dd d$f      }d}n|
d%v r5|
|v r1|t        |
       dz
     | j                  vr|dt        |
        }d}n|
d&v r|
|v r|dt        |
        }d}n|
d'v rA|
|v r=|dt        |
        }d}|dd d(k(  rd(|v r|dd }n~dj                  |dd df      }nf|
d)v r(|
|v r$dj                  |dt        |
        d*f      }d}n:|
d+v r(|
|v r$dj                  |dt        |
        df      }d}n|
d,v r'|
|v r#dj                  |dt        |
        d!f      }d}n|
t        d-      t        d.      fv ry|
|v ru|dt        |
        }d}|d/d d0k(  r!d0|v r|dd/ }ndj                  |dd d$f      }n|dd d(k(  r!d(|v r|dd }n{dj                  |dd df      }nd|dd dk(  r\d|v rX|dd }nR|
d1v rN|
|v rJ|dt        |
        }d}|dd dk(  r1d|v r-|dd }|dd d(k(  r d(|v r|dd }ndj                  |dd df      } n |r|rg| j                  D ]d  }
|j                  |
      s|
|	v rKt        |	      t        |
      kD  r4|	|	j                  |
      dz
     | j                  vr|dt        |
        }d} n |s| j                  D ]  }
|	j                  |
      s|
d2k(  rd2|v r|dd/ }d}n|
d3d4t        d5      d6d7d8d9d:d;d<d=t        d>      d?d@t        dA      t        dB      dCdDt        dE      fv r|dt        |
        }d}ng|
dFdGdHdIdJdKt        dL      t        dM      dNdOdPdQdRdt        dS      dTdUdVfv r6|dt        |
        }|	dt        |
        }	d}|	j                  dW      r|dd } n |s|s|rG|d   dk(  rdj                  |dd df      }n|d   t        dX      k(  rdj                  |dd dYf      }nt        |      dZk\  r|d   d[k(  r|d   t        d\      vr|dd }| j                  D ]  }
|j                  |
      s|
|	v s|
d]k(  r|
|v r|	d/   d^v r|dd }na|
d_t        d`      dat        db      fv r!dj                  |dt        |
        df      }n&|
dWk(  r|dd }n|
t        dc      k(  r|dd ddk(  r|dd } n |j                  de      r|dd }t        dt        |            D ][  }||    | j                  vr|dz  }|dk7  r;||    t        dE      t        df      fv rdj                  |d|  dW|| dz   d f      } n |j                  d	d      j                  dd      j                  dd
      }|S )gz
        Stem a French word and return the stemmed form.

        :param word: The word that is stemmed.
        :type word: str or unicode
        :return: The stemmed form.
        :rtype: unicode

        Fr   qr    NUrR   IyYr*   T)r+   r    r-   )r   r   ivateusx)abliqUr   r   u   ièru   Ièrr   iro   r   ent)r,   r!   r1   l)r	   r   )r"   r#   r$   r%   r&   r-   r   r   r   r   r   )r   r   r   r
   r   r   ic)r   r   log)r   r   r   r   )r'   r   r.   r(   abil)r2   r/   r0   r)   ra   rS   rU   rX   rY   rZ   r[   r\   r]   rb   rc   rd   rj   rk   rl   rp   rq   rr   rs   rw   rT   rV   rW   r^   r_   r`   re   rf   rg   rh   ri   rm   rn   rt   ru   rv   rx   r~      çc   su   aiouèsr{   str|   ry   r}   rz   r   gu)ennonnettelleill   è)lowerrangelenjoin_FrenchStemmer__vowels_r1r2_standard_FrenchStemmer__rv_french_FrenchStemmer__step1_suffixesendswithr   
startswithrindex_FrenchStemmer__step2a_suffixes_FrenchStemmer__step2b_suffixes_FrenchStemmer__step4_suffixesreplace)selfwordstep1_successrv_ending_foundstep2a_successstep2b_successrR   r1r2rvsuffixs              R/var/www/horilla/myenv/lib/python3.12/site-packages/whoosh/lang/snowball/french.pystemzFrenchStemmer.stem7   s
    zz| q#d)$ 	>AAE{c!d1gnwwRa#tAEF|<=	> q#d)a-( 
	BAAE{dmm+QUt}}0L7c>77D!Hc4A<#@AD!W^77D!Hc4A<#@ADAE{dmm+tAE{dmm/K7c>77D!Hc4A<#@AD
	B $$T4==9BdDMM2 ++ 	F}}V$V#9D$(M00|#Mc&k\2(,2!ww]s6{l(;U'CD(,22v|#f+.D$(MBCyD(TRZ#CRy9,#'9Dbce+ B;#'9D"b[#%77D"Is+;#<Dbcn4 B;%2+#'9Dbcq{AhK&@@X;",(r0A#%77D"Is+;#<Dx'FbL77D"Iu#56D"Sb'5!12B&*Ox'FbL77D"Iu#56D&*O 11fl--/6*Q./4==@#f+.DMc&k\*B&*Ou_277D"Is#34D$(M 99flF|a/0E#f+.D$(M  0 04:bL#f+.D$(M  4 48>"#f+.D$(MBCyD(2:#'9D#%77D"Iu+=#>D22v|77D3v;,$7#?@D$(M FFl77D3v;,$7#=>D$(M00Vr\77D3v;,$7#?@D$(M(Qy\::v|#f+.D$(MBCyF*!R<#'9D#%77D"Is+;#<Dbcd*2:#'9D#%77D"Iu+=#>Dbcd*2:#'9D <<l#f+.D$(MBCyD(TRZ#CRy9,#rz'+CRy')wwSb	5/A'B	D 00 ==("R3v;)>299V,q01F#Mc&k\2)- ""44 F{{6*!V+"#'9D-1N#	8Qz](/'(/&&(.(UE()'
AgJd()&	(3 3 $(#f+#6D-1N#	8X(/'())a	lF(.u(-qz4(+(- - $(#f+#6D!#Mc&k\!2B-1N!{{3/'+CRy5: NnBx3wwSb	3/0bQvY&wwSb	3/0 D	Q48s?R+.CRy// ==(|"eO"rFdN#'9D#q|U())(6 6#%77D3v;,,?+E#FD#s]#'9D#qy0T"R[D5H#'9D!& ===>9D q#d)$ 	AQBxt}},Q6dA2h1V9ai*@@77D1"IsD!aM#BCD	 S#&WS#&WS#& 	     c                     d}t        |      dk\  rR|j                  d      s|d   |v r|d   |v r|dd }|S t        dt        |            D ]  }||   |v s||dz   d } |S  |S )a  
        Return the region RV that is used by the French stemmer.

        If the word begins with two vowels, RV is the region after
        the third letter. Otherwise, it is the region after the first
        vowel not at the beginning of the word, or the end of the word
        if these positions cannot be found. (Exceptionally, u'par',
        u'col' or u'tap' at the beginning of a word is also taken to
        define RV as the region to their right.)

        :param word: The French word whose region RV is determined.
        :type word: str or unicode
        :param vowels: The French vowels that are used to determine
                       the region RV.
        :type vowels: unicode
        :return: the region RV for the respective French word.
        :rtype: unicode
        :note: This helper method is invoked by the stem method of
               the subclass FrenchStemmer. It is not to be invoked directly!

        r   r   )parcoltapr   r      N)r   r   r   )r   r   vowelsr   rR   s        r   __rv_frenchzFrenchStemmer.__rv_french;  s    , t9> 56aF"tAw&'8!"X 	 q#d), AAw&(!!a%&\	
 	r   N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r    r   r   r   r      s(   $ EFHG GZ G GH G G"*G,4G6>G G"*G,4G6>G  G ")G +2G 4;G =DG  	G ")	G +2	G 4;	G =D	G
  G
 ")G
 +2G
 4;G
 =CG G !'G )/G 17G 9?G )G '-G /5G 7=G ?EG G  !{G -2G 49G ;@G BFG$ $Z $ $I $"$$-$/7$9A$!$#+$-5$7?$AI$ !$ #*$ ,3$ 5<$ >E$ !	$ #*	$ ,3	$ 56iL	$
 9$
 (.$
 06$
 8>$
 @F$ $ !&$ ()z$ 48$ :>$ @D$ $  #$G GI Gx G G!G#$Z=G29G;BG G")G+2G4;G=DG !G #)G +1G 39G ;AG 9	G ()|	G 6<	G >D	G
  G
 "#8G
 /4G
 6;G
 =BG G !&G ()zG 45W:G @DG G  !zG ,0G 26G 89yG CFG )a	lE5%QvY(BH!r   r   N)basesr   whoosh.compatr   r   r   r   r   <module>r      s    # V$ Vr   