
    /h.                         S SK r S SKJr  S SKJr  S SKJr  S SKJr   " S S\ R                  5      r
 " S S	\ R                  5      rg)
    N)closing)data)PorterStemmer)SnowballStemmerc                   2    \ rS rSrS rS rS rS rS rSr	g)	SnowballTest	   c                 X   [        SS5      nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S	:X  d   eUR                  S
5      S	:X  d   eUR                  S5      S	:X  d   eUR                  S5      S	:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   e[        SS5      nUR                  S5      S:X  d   eUR                  S5      S	:X  d   eUR                  S5      S:X  d   e[        S5      nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S	:X  d   eUR                  S5      S:X  d   eg)zl
this unit testing for test the snowball arabic light stemmer
this stemmer deals with prefixes and suffixes
arabicTu&   الْعَرَبِــــــيَّةu   عربu   العربيةu   فقالواu   قالu   الطالباتu   طالبu   فالطالباتu   والطالباتu   الطالبونu   اللذانu   منFu   اللذu   الكلماتu   كلمNr   stem)self
ar_stemmers     P/var/www/auris/envauris/lib/python3.13/site-packages/nltk/test/unit/test_stem.pytest_arabicSnowballTest.test_arabic
   s    %Xt4
GHHTTT/0H<<<~.(:::12j@@@34
BBB34
BBB12j@@@~..@@@v&&000$Xu5
~.*<<<12j@@@/0H<<<$X.
GHHTTT/0H<<<~.(:::12j@@@/0H<<<    c                 H    [        S5      nUR                  S5      S:X  d   eg )Nrussianu   авантненькаяu   авантненькr   )r   stemmer_russians     r   test_russianSnowballTest.test_russian'   s'    ))4##$>?CYYYYr   c                     [        S5      n[        SSS9nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eg )NgermanT)ignore_stopwordsu	   Schränkeschrankkeinenkeinr   )r   stemmer_germanstemmer_german2s      r   test_germanSnowballTest.test_german+   s|    (2)(TJ""=1Y>>>##M2i???""8,666##H-999r   c                 v    [        S5      nUR                  S5      S:X  d   eUR                  S5      S:X  d   eg )Nspanish	Visionadovisionalguealgur   r   stemmers     r   test_spanishSnowballTest.test_spanish5   s<    !),||K(H444 ||G$...r   c                 H    [        S5      nUR                  S5      S:X  d   eg )Nenglishzy'syr   r)   s     r   test_short_strings_bug#SnowballTest.test_short_strings_bug=   s#    !),||E"c)))r    N)
__name__
__module____qualname____firstlineno__r   r   r!   r+   r0   __static_attributes__r2   r   r   r   r   	   s    =:Z:/*r   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)
PorterTestB   c                     [        [        R                  " S5      R                  SS95       nUR	                  5       R                  5       sS S S 5        $ ! , (       d  f       g = f)Nz*stemmers/porter_test/porter_vocabulary.txtutf-8encoding)r   r   findopenread
splitlinesr   fps     r   _vocabularyPorterTest._vocabularyC   sR    IIBCHH  I 
 779'')
 
 
s   A
A#c                     [        US9n[        U R                  5       U5       H4  u  pEUR                  U5      nXe:X  a  M   SR	                  UUUU5      5       e   g )N)modez*{} should stem to {} in {} mode but got {})r   ziprE   r   format)r   stemmer_modeexpected_stemsr*   word	true_stemour_stems          r   _test_against_expected_output(PorterTest._test_against_expected_outputK   sd    \2"4#3#3#5~FOD||D)H%;BB	%  Gr   c                    [        [        R                  " S5      R                  SS95       nU R	                  [
        R                  UR                  5       R                  5       5        SSS5        g! , (       d  f       g= f)aJ  Tests all words from the test vocabulary provided by M Porter

The sample vocabulary and output were sourced from
https://tartarus.org/martin/PorterStemmer/voc.txt and
https://tartarus.org/martin/PorterStemmer/output.txt
and are linked to from the Porter Stemmer algorithm's homepage
at https://tartarus.org/martin/PorterStemmer/
z-stemmers/porter_test/porter_martin_output.txtr<   r=   N)	r   r   r?   r@   rP   r   MARTIN_EXTENSIONSrA   rB   rC   s     r   test_vocabulary_martin_mode&PorterTest.test_vocabulary_martin_modeX   sj     IIEFKK  L 
 ..//1E1E1G
 
 
   =A33
Bc                    [        [        R                  " S5      R                  SS95       nU R	                  [
        R                  UR                  5       R                  5       5        S S S 5        g ! , (       d  f       g = f)Nz+stemmers/porter_test/porter_nltk_output.txtr<   r=   )	r   r   r?   r@   rP   r   NLTK_EXTENSIONSrA   rB   rC   s     r   test_vocabulary_nltk_mode$PorterTest.test_vocabulary_nltk_modej   sh    IICDII  J 
 ..--rwwy/C/C/E
 
 
rV   c                    [        [        R                  " S5      R                  SS95       nU R	                  [
        R                  UR                  5       R                  5       5        S S S 5        U R	                  [
        R                  [        R                  " S5      R                  SS9R                  5       R                  5       5        g ! , (       d  f       Nl= f)Nz/stemmers/porter_test/porter_original_output.txtr<   r=   )	r   r   r?   r@   rP   r   ORIGINAL_ALGORITHMrA   rB   rC   s     r   test_vocabulary_original_mode(PorterTest.test_vocabulary_original_modet   s     IIGHMM  N 
 ..00"'')2F2F2H
 	**,,IIGHT7T#TVZ\	

 
s   =C
Cc                 B    [        5       R                  S5      S:X  d   eg)ztTest for bug https://github.com/nltk/nltk/issues/1581

Ensures that 'oed' can be stemmed without throwing an error.
oedoNr   r   )r   s    r   test_oed_bugPorterTest.test_oed_bug   s    
 ##E*c111r   c                     [        5       nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  SSS9S:X  d   eUR                  S5      S:X  d   eUR                  SSS9S:X  d   eg	)
z}Test for improvement on https://github.com/nltk/nltk/issues/2507

Ensures that stems are lowercased when `to_lowercase=True`
OnonIiF)to_lowercaseGithubgithubNrb   )r   porters     r   test_lowercase_option PorterTest.test_lowercase_option   s    
 {{4 D((({{33&&&{{3U{3s:::{{8$000{{8%{8HDDDr   r2   N)r3   r4   r5   r6   rE   rP   rT   rY   r]   rc   rn   r7   r2   r   r   r9   r9   B   s&    *$
02
Er   r9   )unittest
contextlibr   nltkr   nltk.stem.porterr   nltk.stem.snowballr   TestCaser   r9   r2   r   r   <module>rv      s=       * .6*8$$ 6*r[E"" [Er   