
    =wgZ'                     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 ed      Zddddd ed	       ed
      fZdZdZ	d ed      ddd ed      d ed      d ed      f
Z
d ed      ddddd ed      df	Zd d!d"dd#d$d% ed       ed&      d'd( ed)      d* ed+      d, ed-      d. ed/      d0 ed1      d2d3d4d5 ed6      d7 ed8      d9 ed:      d;fZd<d= ed>      d?d@ edA      dBdC edD      dEdF edG      dH edI      fZdJ ZyK)LFinnishStemmeraS  
    The Finnish Snowball stemmer.

    :cvar __vowels: The Finnish vowels.
    :type __vowels: unicode
    :cvar __restricted_vowels: A subset of the Finnish vowels.
    :type __restricted_vowels: unicode
    :cvar __long_vowels: The Finnish vowels in their long forms.
    :type __long_vowels: tuple
    :cvar __consonants: The Finnish consonants.
    :type __consonants: unicode
    :cvar __double_consonants: The Finnish double consonants.
    :type __double_consonants: tuple
    :cvar __step1_suffixes: Suffixes to be deleted in step 1 of the algorithm.
    :type __step1_suffixes: tuple
    :cvar __step2_suffixes: Suffixes to be deleted in step 2 of the algorithm.
    :type __step2_suffixes: tuple
    :cvar __step3_suffixes: Suffixes to be deleted in step 3 of the algorithm.
    :type __step3_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 Finnish
           stemming algorithm can be found under
           http://snowball.tartarus.org/algorithms/finnish/stemmer.html
    u
   aeiouyäöu	   aeiouäöaaeeiioouuu   ääu   ööbcdfghjklmnpqrstvwxz)bbccddffgghhjjkkllmmnnppqqrrssttvvwwxxzzkaanu   käänstikinhan   hänkou   köpau   pänsau   nsämmennesinian   änensiinttenseenhenhinhon   höndentta   ttässa   ssästa   ställa   llälta   ltälleksiineta   täna   näa   änimpiimpau   impäimmiimmau   immämpimpa   mpämmimma   mmäejau   ejäc           
      J   |j                         }d}| j                  || j                        \  }}| j                  D ]x  }|j	                  |      s|dk(  r||v rZ|dd }|dd }|dd }nJ|t        |       dz
     t        d      v r-|dt        |        }|dt        |        }|dt        |        } n | j                  D ]t  }|j	                  |      s|dk(  r|d   dk7  rQ|dd	 }|dd	 }|dd	 }n@|d
k(  r|dd	 }|dd	 }|dd	 }|j	                  d      rdj                  |dd df      }|j	                  d      rdj                  |dd df      }|j	                  d      rdj                  |dd df      }n|dk(  r|dd	 dv s|dd	 dv r|dd	 }|dd	 }|dd	 }n|t        d      k(  rZ|dd	 t        d      t        d      fv s/|dd	 t        d      t        d      t        d      t        d      fv r;|dd	 }|dd	 }|dd	 }n+|dk(  r|dd	 dv r|dd	 }|dd	 }|dd	 }n|dd }|dd }|dd } n | j                  D ]&  }|j	                  |      s|ddddt        d       t        d!      fv r|dk(  r|d   d"k(  sg|dk(  r|d   d#k(  sZ|dk(  r|d   d$k(  sM|dk(  r|d   d%k(  s@|t        d       k(  r|d   t        d&      k(  s!|t        d!      k(  r|d   t        d'      k(  r|dd }|dd }|dd }d(}nn|d)v rf|t        |       dz
     d$k(  rO|t        |       d*z
     | j                  v r1|dt        |        }|dt        |        }|dt        |        }d(}n#|d+k(  r%|d,d | j                  v r|dd }|dd }|dd }d(}nܐM|d"t        d&      fv r4|d	   | j                  v r|d   | j                  v r|dd- }|dd- }|dd- }d(}n|d.t        d/      fv r|d   d#k(  r|dd }|dd }|dd }d(}nn|d0k(  r:|dd- }|dd- }|dd- }d(}|d	d d1k(  s|d	d | j                  v r?|dd- }|dd- }|dd- }n/|dt        |        }|dt        |        }|dt        |        }d(} n | j                  D ]v  }|j	                  |      s|d2d3t        d4      d5d6t        d7      fv r|dd d8k7  r=|dd }|dd }|dd }n-|dt        |        }|dt        |        }|dt        |        } n |r t        |      dk\  r|d-   d9v r|dd- }|dd- }nw|sut        |      d*k\  rg|d-   d:k(  r_|d	   | j                  v rN|dd- }|dd- }|dd- }|j	                  d;      r|dd }|dd }n#|j	                  d6      r|dd d8k7  r
|dd }|dd }|d	d | j                  v r
|dd- }|dd- }t        |      d*k\  r+|d	   | j                  v r|d-   t        d<      v r
|dd- }|dd- }|j	                  d=      r
|dd- }|dd- }|j	                  d>      r
|dd- }|dd- }t        dt        |            D ]p  }||    | j                  v r|dk(  r|| dz
  d | j                  v r?|dd- } |S || dz
  | dz    | j                  v rdj                  |d|  || dz   d f      } |S  |S )?z
        Stem a Finnish 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#   Nr   u   ntaeiouyäör,   kr-   kse rD   r.   )rF   rH   )r;   r=   r?   rA   r/   rG   rI   r<   r>   r@   rB   r0   )rC   rE   r%   r4   r5   r6   r&   r7   rJ   eiorK      öT)r1   r8   r2      r3   ir9   r:   rL   ierQ   rR   rS   rT   rU   rV   poijtrP   u   aäei)ojujjo)lower_r1r2_standard_FinnishStemmer__vowels_FinnishStemmer__step1_suffixesendswithlenr   _FinnishStemmer__step2_suffixesjoin_FinnishStemmer__step3_suffixes"_FinnishStemmer__restricted_vowels_FinnishStemmer__long_vowels_FinnishStemmer__consonants_FinnishStemmer__step4_suffixesrange"_FinnishStemmer__double_consonants)selfwordstep3_successr1r2suffixra   s          S/var/www/horilla/myenv/lib/python3.12/site-packages/whoosh/lang/snowball/finnish.pystemzFinnishStemmer.stem8   s    zz|$$T4==9B ++ 	F{{6"U?|#CRyWWS[L1,-3E1FF#Mc&k\2#f+.#f+.	 ++ -	F{{6"T>Bx3#CRyWWt^9DCRBCRB}}U+!wwSb	5'9:{{5)WWb"gu%56{{5)WWb"gu%56t^R|3R'CC#CRyWWqz)R'
AgJ'??R(Qx[()(Qx[(B B#CRyWWt^Br{n4#CRyWW9DCRBCRB[-	` ++ ?	F{{6"eUE5!H+k+ +5T"X_5T"X_5T"X_5T"X_1X;.48qy3H1X;.48qy3H#CRyWW(,66c&k\A-.#5c&k\A-.$2J2JJ#Mc&k\2#f+.#f+.(, v%Br{d&8&88#CRyWW(, QvY//Bx4==0T"XARAR5R#CRyWW(,q{33Bx3#CRyWW(,s]9DCRBCRB$(MBCyD(DI9K9K,K#CRyWW#f+.DMc&k\*BMc&k\*B$(M?	D ++ 	F{{6"eUAhKk+ +Br{d*#CRyWW#f+.DMc&k\*BMc&k\*B	 SW\bfn9DCRBCGqLfm2$-- 79DCRBCRB{{6"CRyWU#2b	T(9CRyW bc7d(((9DCRBGqLRVt'8'88rFa	l"9DCRB;;|$9DCRB;;t9DCRB q#d)$ 
	AQBx4==(6QBFG}(@(@@#CRy   QBFA26*d.F.FF!wwSqb	4Q='AB 
	     N)__name__
__module____qualname____doc__r   ro   rv   rw   rx   r{   rp   rs   ru   ry   r    r   r   r   r      sW   4 !"HO,4tT1Z=z]$M)L? ,u(T1W:tQwZIq{E5$aj$0ueq{AhK(UAhK(UAhK(UE5$'
D!G*c1V9 )ff)eUAhKq{E1X;@Rr   r   N)basesr   whoosh.compatr   r   r   r   r   <module>r      s    # D% Dr   