U
    ½mœdËÎ  ã                   @   s&  d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dl*Z*d dl+m,Z, dZ-dZ.e-e. Z/dd„ Z0dd„ Z1dd „ Z2d!d"„ Z3d#d$„ Z4d%d&„ Z5ej6 7d'eef¡d(d)„ ƒZ8d*d+„ Z9d,d-„ Z:d.d/„ Z;d0d1„ Z<d2d3„ Z=d4d5„ Z>d6d7„ Z?d8d9„ Z@d:d;„ ZAd<d=„ ZBd>d?„ ZCd@dA„ ZDdBdC„ ZEdDdE„ ZFdFdG„ ZGdHdI„ ZHdJdK„ ZIdLdM„ ZJdNdO„ ZKdPdQ„ ZLdRdS„ ZMe#dTdU„ ƒZNdVdW„ ZOej6 7d'eef¡dXdY„ ƒZPdZd[„ ZQd\d]„ ZRd^d_„ ZSd`da„ ZTe#dbdc„ ƒZUej6 7d'eef¡ddde„ ƒZVdfdg„ ZWdhdi„ ZXdjdk„ ZYe#dldm„ ƒZZdndo„ Z[dpdq„ Z\ej6 7drej]ej^ej_g¡dsdt„ ƒZ`dudv„ Zadwdx„ Zbdydz„ Zcd{d|„ Zdd}d~„ Zedd€„ Zfd�d‚„ Zgdƒd„„ Zhe#d…d†„ ƒZid‡dˆ„ Zjd‰dŠ„ Zkd‹dŒ„ Zlej6 7d'eeef¡d�dŽ„ ƒZmej6 7d�ejnejog¡d�d‘„ ƒZpd’d“„ Zqej6 7d”ejrejod•fejsejod•fejnejnd–fejoejod–fg¡d—d˜„ ƒZtej6 7d™edšd›�edšd›�edšd›�g¡dœd�„ ƒZudždŸ„ Zve#d d¡„ ƒZwe%d¢d£„ ƒZxe#ej6 7d¤eeeg¡d¥d¦„ ƒƒZyej6 7d¤eeeg¡ej6 7d§d¨ezd©fdªe{d«fg¡d¬d­„ ƒƒZ|ej6 7d¤eeej}ee#d®�g¡ej6 7d¯d°d±„ d²d±„ g¡ej6 7d³dªd¨g¡d´dµ„ ƒƒƒZ~ej6 7d¤eeeg¡d¶d·„ ƒZej6 7d'eeeg¡ej6 7d¸d¹dºgddd»dd¼d½d¾d¿f	ddÀd±„ dd»dd¼dÁd¾d¿f	ddÂd±„ dd»dÃdÄdÅdÁdÆf	dddÇd±„ d»dÃdÈd±„ dÉd¾dÊf	ddddËddÌd±„ dÍd¾dÊf	dÎg¡dÏdÐ„ ƒƒZ€ej6 7dÑedÒdÓdÔœdÕdÒdÖœgfee-ff¡d×dØ„ ƒZ�dÙdÚ„ Z‚e#dÛdÜ„ ƒZƒej6 7d¤eeeeg¡dÝdÞ„ ƒZ„dS )ßé    )ÚMappingN)Úsparse)Ú
strip_tags)Ústrip_accents_unicode)Ústrip_accents_ascii)ÚHashingVectorizer)ÚCountVectorizer)ÚTfidfTransformer)ÚTfidfVectorizer)ÚENGLISH_STOP_WORDS)Útrain_test_split)Úcross_val_score)ÚGridSearchCV)ÚPipeline)Ú	LinearSVC)Úclone)Úassert_array_almost_equal)Úassert_array_equal)ÚIS_PYPY)Úassert_almost_equalÚfails_if_pypyÚassert_allclose_dense_sparseÚskip_if_32bit)Údefaultdict)Úpartial)ÚStringIO)zthe pizza pizza beer copyrightzthe pizza burger beer copyrightz!the the pizza beer beer copyrightzthe burger beer beer copyrightzthe coke burger coke copyrightzthe coke burger burger)zthe salad celeri copyrightz)the salad salad sparkling water copyrightzthe the celeri celeri copyrightzthe tomato tomato salad waterz the tomato salad water copyrightc                 C   s   t | ƒ ¡ S ©N)r   Úupper©Ús© r    úc/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/feature_extraction/tests/test_text.pyÚ	uppercase>   s    r"   c                 C   s   |   dd¡S )Nõ   Ã©Úe)Úreplacer   r    r    r!   Ústrip_eacuteB   s    r&   c                 C   s   |   ¡ S r   ©Úsplitr   r    r    r!   Úsplit_tokenizeF   s    r)   c                 C   s   dgS )NZthe_ultimate_featurer    r   r    r    r!   Úlazy_analyzeJ   s    r*   c                  C   s¬   d} d}t | ƒ|kst‚d} d}t | ƒ|ks0t‚d} d}t | ƒ|ksHt‚d} d}t | ƒ|ks`t‚d	} d
}t | ƒ|ksxt‚d} d}t | ƒ|ks�t‚d} d
}t | ƒ|ks¨t‚d S )Nõ   Ã Ã¡Ã¢Ã£Ã¤Ã¥Ã§Ã¨Ã©ÃªÃ«Úaaaaaaceeeeõ   Ã¬Ã­Ã®Ã¯Ã±Ã²Ã³Ã´ÃµÃ¶Ã¹ÃºÃ»Ã¼Ã½Úiiiinooooouuuuyõ   Ø¥u   Ø§õ   this is Ã  testúthis is a testu   oÌˆÚou   Ì€Ì�Ì‚ÌƒÚ u   oÌˆÌ„)r   ÚAssertionError©ÚaÚexpectedr    r    r!   Útest_strip_accentsN   s*    r8   c                  C   sd   d} d}t | ƒ|kst‚d} d}t | ƒ|ks0t‚d} d}t | ƒ|ksHt‚d} d}t | ƒ|ks`t‚d S )	Nr+   r,   r-   r.   r/   r3   r0   r1   )r   r4   r5   r    r    r!   Útest_to_asciir   s    r9   Ú
Vectorizerc              
   C   s  | dd�  ¡ }d}dddddd	d
dddg
}||ƒ|ks:t‚d}dddddddg}||ƒ|ks`t‚| dd�  ¡ }tdƒ}dddddddg}||ƒ|ks˜t‚| td�  ¡ }d}ddd d!d"d#d$d%d&d'g
}||ƒ|ksÒt‚| tdd(�  ¡ }d}d)ddddd*d+ddd,g
}||ƒ|k�st‚d S )-NÚascii©Ústrip_accentsõ:   J'ai mangÃ© du kangourou  ce midi, c'Ã©tait pas trÃ¨s bon.ÚaiÚmangeÚduÚ	kangourouÚceÚmidiÚetaitÚpasÚtresÚbonz0This is a test, really.

 I met Harry yesterday.ÚthisÚisÚtestZreallyZmetZharryZ	yesterdayÚfile)Úinputú'This is a test with a file-like object!ÚwithÚlikeÚobject©Úpreprocessoru;   J'ai mangÃ© du kangourou  ce midi,  c'Ã©tait pas trÃ¨s bon.ZAIZMANGEZDUZ	KANGOUROUZCEZMIDIZETAITZPASZTRESZBON)Ú	tokenizerr=   zj'aizmidi,zc'etaitzbon.)Úbuild_analyzerr4   r   r"   r)   )r:   ÚwaÚtextr7   r    r    r!   Útest_word_analyzer_unigrams‡   sb    ööörX   c                  C   sT   t dddd� ¡ } d}dddd	d
ddddddddddddddg}| |ƒ|ksPt‚d S )NÚwordÚunicode©é   é   ©Úanalyzerr=   Úngram_ranger>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   zai mangezmange duzdu kangourouzkangourou cezce midiz
midi etaitz	etait paszpas tresztres bon)r   rU   r4   )rV   rW   r7   r    r    r!   Ú'test_word_analyzer_unigrams_and_bigramsÅ   s6      ÿ
íra   c               	   C   sp   d} |   d¡}tddd� ¡ }t t¡� ||ƒ W 5 Q R X tdddd� ¡ }t t¡� ||ƒ W 5 Q R X d S )	Nr>   zutf-8r[   r;   )r`   ÚencodingÚchar©é   é   )r_   r`   rb   )Úencoder   rU   ÚpytestÚraisesÚUnicodeDecodeError)rW   Z
text_bytesrV   Úcar    r    r!   Útest_unicode_decode_errorã   s    
  ÿ
rl   c                  C   sö   t dddd� ¡ } d}dddd	d
g}| |ƒd d… |ks<t‚dddddg}| |ƒdd … |ksbt‚d}dddddg}| |ƒd d… |ksŒt‚dddddg}| |ƒdd … |ks²t‚t dddd� ¡ } tdƒ}dddddg}| |ƒd d… |ksòt‚d S ) Nrc   rZ   rd   r^   u9   J'ai mangÃ© du kangourou  ce midi, c'Ã©tait pas trÃ¨s bonzj'az'aizai zi mz maé   zs tresz tres ztres bzres bozes bonéûÿÿÿú1This 
	is a test, really.

 I met Harry yesterdayÚthiÚhisúis zs iz isz yesteÚyesterÚesterdÚsterdaÚterdayrL   ©rM   r_   r`   rN   ©r   rU   r4   r   ©ÚcngarW   r7   r    r    r!   Útest_char_ngram_analyzerö   s.      ÿ
  ÿ
r{   c                  C   s¨   t dddd� ¡ } d}dddd	d
g}| |ƒd d… |ks<t‚dddddg}| |ƒdd … |ksbt‚t dddd� ¡ } tdƒ}ddddddg}| |ƒd d… |ks¤t‚d S )NZchar_wbrZ   rd   r^   ro   z thrp   rq   rr   z thirm   rs   rt   ru   rv   zerday rn   rL   rw   zA test with a file-like object!z a z teZtesÚestzst z tesrf   rx   ry   r    r    r!   Útest_char_wb_ngram_analyzer  s$      ÿ
  ÿ
r}   c                  C   sŒ   t dddd� ¡ } d}dddg}| |ƒd d	… |ks8t‚d
ddg}| |ƒdd … |ksZt‚t dddd� ¡ }t|ƒ}||ƒ| |ƒksˆt‚d S )NrY   rZ   rd   r^   ro   zthis is testzis test reallyztest really metre   ztest really met harry yesterdayzthis is test really met harryz"is test really met harry yesterdayéýÿÿÿrL   rw   rx   )rz   rW   r7   Z	cnga_filerL   r    r    r!   Útest_word_ngram_analyzer$  s(      ÿ

ý  ÿ
r   c                  C   sÌ   dddœ} t |  ¡ ƒ}ttttttƒfD ]ž}|| ƒ}t|d�}| 	t
¡ t|tƒrb|j| kstt‚nt |jƒ|kstt‚| t
¡}|jd t|ƒks”t‚|| ƒ}t|d�}| |¡}t|ƒ|jd ks(t‚q(d S )Nr   r\   ©ÚpizzaÚbeer©Ú
vocabulary)ÚsetÚkeysÚdictÚlistÚiterr   r   Úintr   ÚfitÚJUNK_FOOD_DOCSÚ
isinstancer   Úvocabulary_r4   Ú	transformÚshapeÚlenÚinverse_transform)ÚvocabÚtermsÚtypÚvÚvectÚXÚinvr    r    r!   Ú&test_countvectorizer_custom_vocabulary;  s    






rš   c                  C   sd   ddg} t dt| d�fdtƒ fgƒ}| t¡}t|jd jƒt| ƒksJt‚|j	d t
| ƒks`t‚d S )Nr�   r‚   Úcountrƒ   Útfidfr\   )r   r   r	   Úfit_transformÚALL_FOOD_DOCSr…   Únamed_stepsrŽ   r4   r�   r‘   )Zwhat_we_likeÚpiper˜   r    r    r!   Ú/test_countvectorizer_custom_vocabulary_pipelineP  s    þÿ
r¡   c               	   C   sB   dddœ} d}t jt|d�� t| d�}| dg¡ W 5 Q R X d S )Nr   r€   z$Vocabulary contains repeated indices©Úmatchrƒ   Zpasta_siziliana©rh   ri   Ú
ValueErrorr   r‹   )r“   Úmsgr—   r    r    r!   Ú7test_countvectorizer_custom_vocabulary_repeated_indices]  s
    

r§   c               	   C   s>   dddœ} t jtdd�� t| d�}| dg¡ W 5 Q R X d S )Nr\   r]   r€   zdoesn't contain indexr¢   rƒ   Zpasta_verdurar¤   ©r“   r—   r    r    r!   Ú0test_countvectorizer_custom_vocabulary_gap_indexe  s    

r©   c               	   C   s¤   t ƒ } | jdd� |  ¡ tks"t‚| jdd� t t¡� |  ¡  W 5 Q R X | jdd� t t¡� |  ¡  W 5 Q R X dddg}| j|d� |  ¡ t|ƒks t‚d S )NÚenglish©Ú
stop_wordsZ_bad_str_stop_Z_bad_unicode_stop_ZsomeÚotherÚwords)	r   Ú
set_paramsÚget_stop_wordsr   r4   rh   ri   r¥   r…   )ÚcvZstoplistr    r    r!   Útest_countvectorizer_stop_wordsl  s    
r²   c               	   C   sj   t jtdd�� tg d�} |  dg¡ W 5 Q R X t jtdd��" tddd�}| dd	d
g¡ W 5 Q R X d S )Nzempty vocabularyr¢   rƒ   Úfooç      ð?rª   )Úmax_dfr¬   zto be or not to bez
and me toozand so do your¤   )r—   r–   r    r    r!   Ú%test_countvectorizer_empty_vocabulary{  s    
r¶   c                  C   sF   t ƒ } |  td d… ¡}|  tdd … ¡}|jd |jd ksBt‚d S )Nrm   r\   )r   r�   rž   r�   r4   )r±   ZX1ÚX2r    r    r!   Útest_fit_countvectorizer_twice†  s    r¸   c                  C   sD   ddddg} d}t |d�}| | ¡ ddd	g}| ¡ }t||ƒ d
S )z¦Check `get_feature_names_out()` when a custom token pattern is passed.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12971
    ú&This is the 1st document in my corpus.ú This document is the 2nd sample.úAnd this is the 3rd one.úIs this the 4th document?z'[0-9]{1,3}(?:st|nd|rd|th)\s\b(\w{2,})\b©Útoken_patternÚdocumentÚoneÚsampleN)r   r�   Úget_feature_names_outr   )Úcorpusr¾   Ú
vectorizerr7   Úfeature_names_outr    r    r!   Ú)test_countvectorizer_custom_token_pattern�  s    ü


rÆ   c               	   C   sF   ddddg} d}d}t |d�}tjt|d�� | | ¡ W 5 Q R X d	S )
z¥Check that we raise an error if token pattern capture several groups.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12971
    r¹   rº   r»   r¼   z)([0-9]{1,3}(?:st|nd|rd|th))\s\b(\w{2,})\bz,More than 1 capturing group in token patternr½   r¢   N©r   rh   ri   r¥   r‹   )rÃ   r¾   Úerr_msgrÄ   r    r    r!   Ú<test_countvectorizer_custom_token_pattern_with_several_group   s    ü
rÉ   c               	   C   sn   ddddg} d}t d| d�}tjt|d�� | | ¡ W 5 Q R X t ¡ � t d	t¡ | | ¡ W 5 Q R X d S )
NZSampleZUpperZCaseZ
VocabularyzyUpper case characters found in vocabulary while 'lowercase' is True. These entries will not be matched with any documentsT)Ú	lowercaser„   r¢   Úerror)	r   rh   ÚwarnsÚUserWarningr‹   ÚwarningsÚcatch_warningsÚsimplefilterr�   )r„   ÚmessagerÄ   r    r    r!   Ú'test_countvectorizer_uppercase_in_vocab³  s    ÿ
rÒ   c                  C   sP   dddgdddgdddgg} t ddd� | ¡}dddg}| |¡}t||ƒ d	S )
z0Check get_feature_names_out for TfidfTransformerr\   r   TÚl2©Ú
smooth_idfÚnormr6   ÚcÚbN)r	   r‹   rÂ   r   )r˜   ÚtrZfeature_names_inrÅ   r    r    r!   Ú%test_tf_transformer_feature_names_outÈ  s
    

rÚ   c                  C   s¬   dddgdddgdddgg} t ddd�}| | ¡ ¡ }|dk ¡ sFt‚t|d jdd�dddgƒ dddgdddgdddgg} t ddd�}| | ¡ ¡ }|dk ¡ s¨t‚d S )	Nr\   r   TrÓ   rÔ   r]   ©Zaxisr´   )r	   r�   ÚtoarrayÚallr4   r   Úsum©r˜   rÙ   rœ   r    r    r!   Útest_tf_idf_smoothingÒ  s    rà   c               	   C   sº   dddgdddgdddgg} t ddd�}| | ¡ ¡ }|dk ¡ sFt‚t|d jdd�dddgƒ dddgdddgdddgg} t ddd�}d	}tjt	|d
�� | | ¡ ¡  W 5 Q R X d S )Nr\   r   FrÓ   rÔ   r]   rÛ   r´   zdivide by zeror¢   )
r	   r�   rÜ   rÝ   r4   r   rÞ   rh   rÌ   ÚRuntimeWarning)r˜   rÙ   rœ   Zin_warning_messager    r    r!   Útest_tfidf_no_smoothingâ  s    râ   c                  C   sˆ   dgdgdgg} t ddd d�}| | ¡ ¡ }|d dks<t‚|d |d ksPt‚|d |d ksdt‚|d dk stt‚|d dk s„t‚d S )Nr\   r]   re   TF)Úsublinear_tfÚuse_idfrÖ   r   )r	   r�   rÜ   r4   rß   r    r    r!   Útest_sublinear_tfõ  s    rå   c               	   C   sp  t td d… ƒ} td g}ttƒd }tdd�}| | ¡}t|dƒrL| ¡ }|d|jd f dksft‚t|jd	�}||fD ]î}| 	|¡}t|dƒrš| ¡ }|j}|d|d
 f dks¸t‚|d|d f dksÐt‚|d|d f dksèt‚d|ksôt‚d|k�st‚|d|d f dk�st‚|d|d f dk�s6t‚|d|d f dk�sPt‚|d|d f dkszt‚qzt
dd�}	|	 |¡ 	|¡ ¡ }
t|	jƒt|jƒk�s¢t‚|
j|t|jƒfk�s¼t‚|	 	|¡ ¡ }|jt|ƒt|jƒfk�sèt‚t
ddd�}| |¡ 	|¡ ¡ }t|dƒ�rt‚t
dd�}t t¡� | 	|¡ W 5 Q R X ttj|dd�dg| ƒ t td d… ƒ} tdd�}|j|_| | ¡ ¡ }|j�r˜t‚t|
|ƒ | 	|¡ ¡ }t||ƒ td d	�}t t¡� | 	| ¡ W 5 Q R X |jddd� | ¡ }d}t|ƒ}||ƒ}||k�st‚|jdd d� t t¡� | ¡  W 5 Q R X d |_t t¡� | ¡  W 5 Q R X d S )!Néÿÿÿÿr\   ç      à?©rµ   Útocsrr   r�   r]   rƒ   ÚsaladÚtomatoÚwaterÚtheÚ	copyrightÚcokeÚburgerr‚   Úl1©rÖ   F)rÖ   rä   Úidf_T©rä   rÛ   r´   r;   )r=   rÊ   r>   Z_gabbledegook_)r=   rS   Z_invalid_analyzer_type_)r‰   rž   r‘   r   r�   Úhasattrré   rŽ   r4   r�   r	   r‹   rÜ   ró   r�   rh   ri   r¥   r   ÚnprÞ   r
   rµ   Úfixed_vocabulary_r¯   Úbuild_preprocessorr   rU   )Ú
train_dataÚ	test_dataZn_trainZv1Zcounts_trainZv2r–   Zcounts_testr„   Út1rœ   Z
tfidf_testÚt2ÚtfÚt3ÚtvZtfidf2Ztfidf_test2Zv3Ú	processorrW   r7   Úresultr    r    r!   Útest_vectorizer   sv    











r  c                  C   s  d\} }}}t | |||d�}| t¡ |jj| ks6t‚|jj|ksFt‚|jj|ksVt‚|jj|ksft‚d|_d|_d|_d|_|jj| ksŽt‚|jj|ksžt‚|jj|ks®t‚|jj|ks¾t‚| t¡ |jj|jksÚt‚|jj|jksìt‚|jj|jksþt‚|jj|jk�st‚d S )N)rÓ   FFF)rÖ   rä   rÕ   rã   rñ   T)	r
   r‹   rŒ   Ú_tfidfrÖ   r4   rä   rÕ   rã   )rÖ   rä   rÕ   rã   rÿ   r    r    r!   Útest_tfidf_vectorizer_settersg  s2       ÿ

r  c                  C   s€  t ƒ } |  t¡}|j}|jttƒ| jfks.t‚|j| jks>t‚t	 
|j¡dksRt‚t	 
|j¡dk sft‚t	 |j¡dkszt‚t	 |j¡dk sŽt‚t|jd ƒD ]}tt	j |d jd¡dƒ qœt ddd�} |  t¡}|jttƒ| jfksêt‚|j| jksút‚|j}||k�st‚|d| k �s t‚t	 
|j¡dk�s6t‚t	 |j¡dk �sLt‚t|jd ƒD ] }tt	j |d jd¡dƒ �qZd S )	Nræ   r   r\   r]   r´   r[   rñ   )r`   rÖ   )r   r�   rž   Únnzr�   r‘   Ú
n_featuresr4   Údtyperö   ÚminÚdataÚmaxÚranger   ZlinalgrÖ   )r–   r˜   Z	token_nnzÚiZ
ngrams_nnzr    r    r!   Útest_hashing_vectorizer„  s,    

r  c               
   C   sN  t dd�} t t¡� |  ¡  W 5 Q R X | jr2t‚|  t¡}|j	\}}t
| jƒ|ksXt‚|  ¡ }t|tjƒspt‚|jtks~t‚t
|ƒ|ksŽt‚tddddddd	d
dg	|ƒ t|ƒD ]\}}|| j |¡ks²t‚q²ddddddd	d
dg	}t |d�} |  ¡ }tddddddd	d
dg	|ƒ | j�s t‚t|ƒD ] \}}|| j |¡k�s(t‚�q(d S )Nrç   rè   r‚   rð   Úcelerirï   r�   rê   Ú	sparklingrë   rì   rƒ   )r   rh   ri   r¥   rÂ   r÷   r4   r�   rž   r�   r‘   rŽ   r�   rö   Zndarrayr  rQ   r   Ú	enumerateÚget)r±   r˜   Z	n_samplesr  Zfeature_namesÚidxÚnamer“   r    r    r!   Útest_feature_names«  sl    



÷ô÷
÷ôr  c                 C   sX   ddddh}ddddd	d
dh}| ddd�}|  t¡ t|jƒ|ksFt‚|j|ksTt‚d S )Nrð   r‚   rê   r�   r  rë   rî   rï   r  rì   rí   g333333ã?é   )rµ   Úmax_features)r‹   rž   r…   rŽ   r4   Ústop_words_)r:   Zexpected_vocabularyZexpected_stop_wordsrÄ   r    r    r!   Útest_vectorizer_max_featuresò  s    ù
r  c            	      C   sâ   t dd�} t dd�}t d d�}|  t¡jdd�}| t¡jdd�}| t¡jdd�}|  ¡ }| ¡ }| ¡ }d| ¡ ks|t‚d| ¡ ksŒt‚d| ¡ ksœt‚d|t |¡ ks²t‚d|t |¡ ksÈt‚d|t |¡ ksÞt‚d S )Nr\   ©r  re   r   rÛ   é   rí   )	r   r�   rŒ   rÞ   rÂ   r
  r4   rö   Zargmax)	Zcv_1Zcv_3Zcv_NoneZcounts_1Zcounts_3Zcounts_NoneZ
features_1Z
features_3Zfeatures_Noner    r    r!   Ú"test_count_vectorizer_max_features  s    


r  c                  C   s  dddg} t ddd�}| | ¡ d|j ¡ ks2t‚t|j ¡ ƒdksHt‚t|jƒd	ksZt‚d
|_| | ¡ d|j ¡ ks|t‚t|j ¡ ƒdks’t‚d|jks t‚t|jƒdks²t‚d|_| | ¡ d|j ¡ ksÔt‚t|j ¡ ƒdksêt‚d|jksøt‚t|jƒdk�st‚d S )NÚabcÚdeaÚeatrc   r´   ©r_   rµ   r6   rf   r   rç   r  r]   r\   )r   r‹   rŽ   r†   r4   r‘   r  rµ   ©rú   r—   r    r    r!   Útest_vectorizer_max_df   s$    



r!  c                  C   s  dddg} t ddd�}| | ¡ d|j ¡ ks2t‚t|j ¡ ƒdksHt‚t|jƒd	ksZt‚d
|_| | ¡ d|j ¡ ks|t‚t|j ¡ ƒd
ks’t‚d|jks t‚t|jƒdks²t‚d|_| | ¡ d|j ¡ ksÔt‚t|j ¡ ƒdksêt‚d|jksøt‚t|jƒdk�st‚d S )Nr  r  r  rc   r\   )r_   Úmin_dfr6   rf   r   r]   r×   r  gš™™™™™é?rm   )r   r‹   rŽ   r†   r4   r‘   r  r"  r   r    r    r!   Útest_vectorizer_min_df7  s$    



r#  c                  C   sÊ   ddg} t ddd�}| | ¡ ¡ }tdddd	d
g| ¡ ƒ tdddddgdddddgg|ƒ t dddd�}| | ¡ ¡ }tdddddgdddddgg|ƒ t dddtjd�}| | ¡}|jtjksÆt‚d S )NÚaaabcÚabbderc   r´   r  r6   rØ   r×   Údr$   re   r\   r   r]   T)r_   rµ   Úbinary)r_   rµ   r'  r  )	r   r�   rÜ   r   rÂ   rö   Úfloat32r  r4   )rú   r—   r˜   ZX_sparser    r    r!   Útest_count_binary_occurrencesN  s    ""
r)  c                  C   sØ   ddg} t ddd d�}| | ¡}t |dd… j¡dks<t‚t |dd	… j¡d	ksXt‚|jtjksht‚t ddd
d d�}| | ¡}t |j¡dks–t‚|jtjks¦t‚t ddd
d tjd�}| | ¡}|jtjksÔt‚d S )Nr$  r%  Frc   )Úalternate_signr_   rÖ   r   r\   re   r]   T)r_   r*  r'  rÖ   )r_   r*  r'  rÖ   r  )r   r�   rö   r
  r	  r4   r  Úfloat64)rú   r—   r˜   r    r    r!   Útest_hashed_binary_occurrencesb  s0    
   ÿ
    ÿ
r,  c                 C   s  t }| ƒ }| |¡}| |¡}t|tƒs,t‚| ¡ }t||ƒD ]6\}}t 	t 
||ƒ¡¡}t 	t 
|¡¡}t||ƒ q>t |¡s„t‚|jdks’t‚| ¡ }	| |	¡}
t||
ƒD ]\}}tt 	|¡t 	|¡ƒ q®| ¡ }| |¡}t||ƒD ]\}}tt 	|¡t 	|¡ƒ qêd S )NZcsr)rž   r�   r’   r�   rˆ   r4   rU   Úziprö   ÚsortÚuniquer   r   ÚissparseÚformatrÜ   Ztocsc)r:   r	  rÄ   Ztransformed_dataZinversed_dataZanalyzeÚdocZinversed_termsr”   Ztransformed_data2Zinversed_data2Zterms2Ztransformed_data3Zinversed_data3Zterms3r    r    r!   Ú!test_vectorizer_inverse_transform}  s(    



r3  c                  C   sº   t t } dgtt ƒ dgttƒ  }t| |ddd�\}}}}tdtƒ fdtƒ fgƒ}dd	gd
dœ}t||ddd�}| ||¡ 	|¡}	t
|	|ƒ |jdksœt‚|jjd }
|
jdks¶t‚d S )Nræ   r\   gš™™™™™É?r   ©Z	test_sizeÚrandom_stater—   Úsvc©r\   r\   r[   ©ZhingeZsquared_hinge)Úvect__ngram_rangeÚ	svc__lossre   )Ún_jobsr±   r´   )rŒ   ÚNOTJUNK_FOOD_DOCSr‘   r   r   r   r   r   r‹   Úpredictr   Úbest_score_r4   Úbest_estimator_rŸ   r`   ©r	  Útargetrù   rú   Ztarget_trainZtarget_testÚpipelineÚ
parametersZgrid_searchÚpredZbest_vectorizerr    r    r!   Ú-test_count_vectorizer_pipeline_grid_selection�  s$       ÿþ
rE  c                  C   sÒ   t t } dgtt ƒ dgttƒ  }t| |ddd�\}}}}tdtƒ fdtƒ fgƒ}dd	gd
ddœ}t||dd�}| ||¡ 	|¡}	t
|	|ƒ |jdksœt‚|jjd }
|
jdks¶t‚|
jdksÄt‚|
jrÎt‚d S )Nræ   r\   gš™™™™™¹?r   r4  r—   r6  r7  r[   )rñ   rÓ   r8  )r9  Z
vect__normr:  )r;  r´   rÓ   )rŒ   r<  r‘   r   r   r
   r   r   r‹   r=  r   r>  r4   r?  rŸ   r`   rÖ   r÷   r@  r    r    r!   Ú'test_vectorizer_pipeline_grid_selectionÁ  s*       ÿý
rF  c                  C   s`   t t } dgtt ƒ dgttƒ  }tdtƒ fdtƒ fgƒ}t|| |dd�}t|dddgƒ d S )Nræ   r\   r—   r6  re   )r±   r´   )rŒ   r<  r‘   r   r
   r   r   r   )r	  rA  rB  Z	cv_scoresr    r    r!   Ú)test_vectorizer_pipeline_cross_validationè  s
    rG  c                  C   sx   d} t ƒ }| | g¡}|jdks$t‚td dd�}| | g¡}|jdksJt‚|j|jksZt‚tt 	|j
¡t 	|j
¡ƒ d S )Nuî   ÐœÐ°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ð¾Ð±ÑƒÑ‡ÐµÐ½Ð¸Ðµ â€” Ð¾Ð±ÑˆÐ¸Ñ€Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ñ�ÐºÑƒÑ�Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚Ð°, Ð¸Ð·ÑƒÑ‡Ð°ÑŽÑ‰Ð¸Ð¹ Ð¼ÐµÑ‚Ð¾Ð´Ñ‹ Ð¿Ð¾Ñ�Ñ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ� Ð°Ð»Ð³Ð¾Ñ€Ð¸Ñ‚Ð¼Ð¾Ð², Ñ�Ð¿Ð¾Ñ�Ð¾Ð±Ð½Ñ‹Ñ… Ð¾Ð±ÑƒÑ‡Ð°Ñ‚ÑŒÑ�Ñ�.)r\   é   F)rÖ   r*  )r\   i   )r   r�   r�   r4   r   r�   r  r   rö   r.  r	  )r¿   r—   Z	X_countedZX_hashedr    r    r!   Útest_vectorizer_unicodeõ  s    ÿrI  c                  C   sF   ddg} t | d�}| t¡}| t¡}t| ¡ | ¡ ƒ |jsBt‚d S )Nr�   r  rƒ   )r
   r�   rž   r�   r   rÜ   r÷   r4   )r„   r—   ZX_1ZX_2r    r    r!   Ú+test_tfidf_vectorizer_with_fixed_vocabulary  s    


rJ  c                  C   sÖ   t ƒ t dd�t dd�t dd�tƒ ttd�ttd�ttd� t¡ttd	� t¡tƒ ttd�tƒ  t¡g} | D ]f}t 	|¡}t 
|¡}t|ƒ|jks”t‚| ¡ | ¡ ks¨t‚trºt|t ƒrºqjqjt| t¡| t¡ƒ qjd S )
Nrñ   rò   T)r'  r[   ©r`   rR   )r_   r<   )r   r   r   r*   r‹   rŒ   r&   r
   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__r4   Ú
get_paramsr   r�   r   r�   )Z	instancesÚorigr   Úcopyr    r    r!   Útest_pickling_vectorizer  s0    
ô

þrT  Úfactoryc                 C   sB   t ƒ }| |ƒ}d}t t |¡¡}||ƒ}||ƒ}||ks>t‚dS )z_Tokenizers cannot be pickled
    https://github.com/scikit-learn/scikit-learn/issues/12833
    r>   N)r   rL  rN  rM  r4   )rU  ÚvecÚfunctionrW   Zroundtripped_functionr7   r  r    r    r!   Útest_pickling_built_processors6  s    rX  c                  C   s�   t j d¡} t  dddddddd	d
g	¡}tddƒD ]X}t| j|ddd�ƒ}t|d�}t 	t 
|¡¡}| t¡ | t¡ t| ¡ | ¡ ƒ q2d S ©Nr   r‚   rð   r  rï   r�   rê   r  rë   rì   éd   rm   F)Úsizer%   rƒ   )rö   ÚrandomÚRandomStateÚarrayr  r…   Úchoicer   rL  rN  rM  r‹   rž   r   rÂ   )ÚrngÚvocab_wordsÚxZ	vocab_setr±   Úunpickled_cvr    r    r!   Ú-test_countvectorizer_vocab_sets_when_picklingK  s.    ÷ÿ


 ÿrd  c                  C   s®   t j d¡} t  dddddddd	d
g	¡}tddƒD ]v}tƒ }| j|ddd�}tddƒD ]}|||| < qVt|d�}t 	t 
|¡¡}| t¡ | t¡ t| ¡ | ¡ ƒ q2d S rY  )rö   r\  r]  r^  r  r‡   r_  r   rL  rN  rM  r‹   rž   r   rÂ   )r`  ra  rb  Z
vocab_dictr®   Úyr±   rc  r    r    r!   Ú.test_countvectorizer_vocab_dicts_when_picklingg  s4    ÷ÿ


 ÿrf  c                  C   s†   t ƒ  t¡ttd� t¡ttd� t¡f} | D ]R}| t¡ ¡ }d |_| t¡ ¡ }t	|dƒ | t¡ ¡ }t
||ƒ t
||ƒ q.d S )NrR   r<   r  )r
   r‹   rŒ   r   r   r&   r�   rÜ   r  Údelattrr   )Zfitted_vectorizersr—   Zvect_transformZstop_None_transformZstop_del_transformr    r    r!   Útest_stop_words_removal„  s    
ý

rh  c                  C   s`   t ƒ  t¡} tƒ  | ¡}t |¡}t |¡}t|ƒ|j	ks>t
‚t| | ¡ ¡ | | ¡ ¡ ƒ d S r   )r   r�   rŒ   r	   r‹   rL  rM  rN  rO  rP  r4   r   rÜ   )r˜   rR  r   rS  r    r    r!   Útest_pickling_transformerš  s    

ri  c                  C   sH   t ƒ  t¡} tƒ  | ¡}tƒ }|j|_t| | ¡ ¡ | | ¡ ¡ ƒ d S r   )	r   r�   rŒ   r	   r‹   ró   r   r�   rÜ   )r˜   rR  rS  r    r    r!   Útest_transformer_idf_setter£  s
    rj  c               	   C   s€   t dd�} |  t¡ t | jdd�}| j|_t| t¡ ¡ |  t¡ ¡ ƒ t | jdd�}d}tj	t
|d�� | j|_W 5 Q R X d S )NTrô   ©r„   rä   Fz+`idf_` cannot be set when `user_idf=False`.r¢   )r
   r‹   rŒ   rŽ   ró   r   r�   rÜ   rh   ri   r¥   )rR  rS  rÈ   r    r    r!   Útest_tfidf_vectorizer_setter«  s    

þrl  c               	   C   s`   t dd�} |  t¡ t | jdd�}t| jƒ}dg|d  }t t¡� t	|d|ƒ W 5 Q R X d S )NTrô   rk  r´   r\   ró   )
r
   r‹   rŒ   rŽ   r‘   ró   rh   ri   r¥   Úsetattr)r—   rS  Zexpected_idf_lenZinvalid_idfr    r    r!   Ú%test_tfidfvectorizer_invalid_idf_attr»  s    


rn  c               	   C   s<   dddddg} t | d�}t t¡� | g ¡ W 5 Q R X d S )Nr6   rØ   r×   rƒ   rÇ   r¨   r    r    r!   Útest_non_unique_vocabÅ  s    
ro  c               	   C   s4   d} t }dd„ }tj|| d�� |ƒ  W 5 Q R X d S )Nz?np.nan is an invalid document, expected byte or unicode string.c                  S   s   t ƒ } |  dtjdg¡ d S )Núhello worldúhello hello)r   r�   rö   Únan)Zhvr    r    r!   ÚfuncÓ  s    z0test_hashingvectorizer_nan_in_docs.<locals>.funcr¢   )r¥   rh   ri   )rÑ   Ú	exceptionrs  r    r    r!   Ú"test_hashingvectorizer_nan_in_docsÌ  s
    ru  c                  C   sl   t ddd d�} | jst‚|  ddg¡ ¡ }t| ¡ ddddgƒ |  ddg¡ ¡ }t| ¡ ddddgƒ d S )NTF)r'  rä   rÖ   rp  rq  r\   r   )r
   r'  r4   r�   rÜ   r   Zravelr�   )r–   r˜   r·   r    r    r!   Útest_tfidfvectorizer_binaryÛ  s    
rv  c                  C   s(   t dd�} |  t¡ t| j| jjƒ d S )NTrô   )r
   r‹   rŒ   r   ró   r  )r—   r    r    r!   Útest_tfidfvectorizer_export_idfæ  s    

rw  c                  C   s<   t dgd�} t| ƒ}|  t¡ | t¡ |j| jks8t‚d S )Nrí   rƒ   )r
   r   r‹   rž   rŽ   r4   )Z
vect_vocabZvect_vocab_cloner    r    r!   Útest_vectorizer_vocab_cloneì  s
    

rx  c              	   C   sˆ   d}| ƒ }t jt|d�� | d¡ W 5 Q R X t jt|d�� | d¡ W 5 Q R X | ddg¡ t jt|d�� | d¡ W 5 Q R X d S )NzBIterable over raw text documents expected, string object received.r¢   zhello world!ú	some textzsome other text)rh   ri   r¥   r�   r‹   r�   )r:   rÑ   rV  r    r    r!   Ú&test_vectorizer_string_object_as_inputô  s    rz  ÚX_dtypec                 C   s2   t jdd| dd�}tƒ  |¡}|j|jks.t‚d S ©Né
   i N  é*   )r  r5  )r   Úrandr	   r�   r  r4   )r{  r˜   ZX_transr    r    r!   Útest_tfidf_transformer_type  s    r€  c                  C   s^   t jddtjdd�} t  | ¡}t  | ¡}tƒ  |¡}tƒ  |¡}t||ƒ |j	|j	ksZt
‚d S r|  )r   r  rö   r+  Z
csc_matrixÚ
csr_matrixr	   r�   r   r1  r4   )r˜   ZX_cscZX_csrZX_trans_cscZX_trans_csrr    r    r!   Útest_tfidf_transformer_sparse  s    


r‚  z0vectorizer_dtype, output_dtype, warning_expectedTFc              	   C   s„   t  dddg¡}t| d�}d}|rHtjt|d�� | |¡}W 5 Q R X n*t ¡ � t 	dt¡ | |¡}W 5 Q R X |j
|ks€t‚d S )NÚnumpyÚscipyZsklearn©r  z'dtype' should be used.r¢   rË   )rö   r^  r
   rh   rÌ   rÍ   r�   rÎ   rÏ   rÐ   r  r4   )Zvectorizer_dtypeZoutput_dtypeZwarning_expectedr˜   rÄ   Zwarning_msg_matchZX_idfr    r    r!   Útest_tfidf_vectorizer_type  s    


r†  rV  )r]   r\   rK  c              	   C   s²   | j }t d|› d�¡}t| tƒr2tr2tjdd� tjt	|d�� |  
dg¡ W 5 Q R X tjt	|d�� |  dg¡ W 5 Q R X t| tƒr®tjt	|d�� |  dg¡ W 5 Q R X d S )NzInvalid value for ngram_range=z/ lower boundary larger than the upper boundary.ú*HashingVectorizer is not supported on PyPy)Úreasonr¢   zgood news everyone)r`   ÚreÚescaper�   r   r   rh   Úxfailri   r¥   r‹   r�   r�   )rV  Zinvalid_rangerÑ   r    r    r!   Ú$test_vectorizers_invalid_ngram_range0  s    
ÿ
rŒ  c                 C   s&   |   ¡ }|  ¡ }|  ¡ }|  |||¡S r   )r°   Úbuild_tokenizerrø   Ú_check_stop_words_consistency)Z	estimatorr¬   ÚtokenizeÚ
preprocessr    r    r!   rŽ  N  s    rŽ  c               
   C   sì   d} d|  }t ƒ tƒ tƒ fD ]R}|jddddgd� tjt|d�� | d	g¡ W 5 Q R X |`t	|ƒd
kst
‚qt ¡ � t dt¡ | d	g¡ W 5 Q R X t	|ƒd ks¬t
‚|jdddddgd� tjt|d�� | d	g¡ W 5 Q R X d S )Nz\['and', 'll', 've'\]z}Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens %s not in stop_words.úyou'veÚyouúyou'llÚANDr«   r¢   rp  FrË   Zblah)r   r
   r   r¯   rh   rÌ   rÍ   r�   Z_stop_words_idrŽ  r4   rÎ   rÏ   rÐ   )ZlstrrÑ   rV  r    r    r!   Ú'test_vectorizer_stop_words_inconsistentU  s$    þÿ
r•  c                  C   s`   t jdtjd�} tj}| j |¡| _| j |¡| _ddddœ}tƒ  | |¡}||jj	ks\t
‚dS )zò
    Check that CountVectorizer._sort_features preserves the dtype of its sparse
    feature matrix.

    This test is skipped on 32bit platforms, see:
        https://github.com/scikit-learn/scikit-learn/pull/11295
    for more details.
    )rm   rm   r…  r   r\   r]   )zscikit-learnrJ   zgreat!N)r   r�  rö   Úint64ÚindicesZastypeZindptrr   Z_sort_featuresr  r4   )r˜   ZINDICES_DTYPEr„   ZXsr    r    r!   Ú7test_countvectorizer_sort_features_64bit_sparse_indicesq  s    r˜  Ú	Estimatorc                 C   s®   ddig}| ƒ }t |ƒdks t‚| dd„ dgd�}t |ƒdksBt‚t |ƒd ksRt‚| |¡ G d	d
„ d
| ƒ}|dgd�}t |ƒdksˆt‚| dd„ dgd�}t |ƒdksªt‚d S )NrW   ry  Tc                 S   s   | d S ©NrW   r    ©rb  r    r    r!   Ú<lambda>”  ó    z?test_stop_word_validation_custom_preprocessor.<locals>.<lambda>Úand)rS   r¬   rË   c                   @   s   e Zd Zdd„ ZdS )zFtest_stop_word_validation_custom_preprocessor.<locals>.CustomEstimatorc                 S   s   dd„ S )Nc                 S   s   | d S rš  r    r›  r    r    r!   rœ  œ  r�  zktest_stop_word_validation_custom_preprocessor.<locals>.CustomEstimator.build_preprocessor.<locals>.<lambda>r    )Úselfr    r    r!   rø   ›  s    zYtest_stop_word_validation_custom_preprocessor.<locals>.CustomEstimator.build_preprocessorN)Ú__name__Ú
__module__Ú__qualname__rø   r    r    r    r!   ÚCustomEstimatorš  s   r£  r«   c                 S   s   t  d¡ | ¡S )Nz\w{1,})r‰  ÚcompileÚfindall©r2  r    r    r!   rœ  ¢  r�  )rT   r¬   )rŽ  r4   r�   )r™  r	  rV  r£  r    r    r!   Ú-test_stop_word_validation_custom_preprocessorŠ  s    

 ÿr§  zinput_type, err_type, err_msgÚfilenamer3   rL   z$'str' object has no attribute 'read'c              	   C   sR   t | tƒrtrt d¡ dg}tj||d�� | dd„ |d� |¡ W 5 Q R X d S )Nr‡  ú"this is text, not file or filenamer¢   c                 S   s   |   ¡ S r   r'   r›  r    r    r!   rœ  ¶  r�  z.test_callable_analyzer_error.<locals>.<lambda>©r_   rM   )Ú
issubclassr   r   rh   r‹  ri   r�   )r™  Ú
input_typeZerr_typerÈ   r	  r    r    r!   Útest_callable_analyzer_error§  s
    
r­  )Zmarksr_   c                 C   s
   t | dƒS )NÚr)Úopenr¦  r    r    r!   rœ  Â  r�  rœ  c                 C   s   |   ¡ S r   )Úreadr¦  r    r    r!   rœ  Â  r�  r¬  c              	   C   s6   dg}t  ttf¡� | ||d� |¡ W 5 Q R X d S )Nr©  rª  )rh   ri   ÚFileNotFoundErrorÚAttributeErrorr�   )r™  r_   r¬  r	  r    r    r!   Ú&test_callable_analyzer_change_behavior¹  s    r³  c              	   C   sf   dd„ }t |tƒr tr t d¡ |  d¡}| d¡ tjtdd�� ||dd	� 	|g¡ W 5 Q R X d S )
Nc                 S   s   t dƒ‚d S )NÚtesting)Ú	Exceptionr¦  r    r    r!   r_   Ð  s    z6test_callable_analyzer_reraise_error.<locals>.analyzerr‡  zfile.txtzsample content
r´  r¢   rL   rª  )
r«  r   r   rh   r‹  ÚjoinÚwriteri   rµ  r�   )Ztmpdirr™  r_   Úfr    r    r!   Ú$test_callable_analyzer_reraise_errorË  s    


r¹  zjstop_words, tokenizer, preprocessor, ngram_range, token_pattern,analyzer, unused_name, ovrd_name, ovrd_msgr‘  r“  r7  rc   z'stop_words'ú
'analyzer'ú	!= 'word'c                 C   s   |   ¡ S r   r'   r   r    r    r!   rœ  ñ  r�  z'tokenizer'c                 C   s   |   ¡ S r   r'   r   r    r    r!   rœ  ü  r�  ú\w+rY   ú'token_pattern'zis not Nonec                 C   s   |   ¡ S r   ©r   r   r    r    r!   rœ    r�  c                 C   s   |   ¡ S r   r¾  r   r    r    r!   rœ    r�  z'preprocessor'zis callabler[   c                 C   s   |   ¡ S r   r¾  r   r    r    r!   rœ    r�  z'ngram_range')	NNNr7  r¼  rc   r½  rº  r»  c
              	   C   sV   t }
| ƒ }|j||||||d� d|||	f }tjt|d�� | |
¡ W 5 Q R X d S )N)r¬   rT   rS   r`   r¾   r_   z-The parameter %s will not be used since %s %sr¢   )rŒ   r¯   rh   rÌ   rÍ   r‹   )r:   r¬   rT   rS   r`   r¾   r_   Zunused_nameZ	ovrd_nameZovrd_msgrù   r—   r¦   r    r    r!   Útest_unused_parameters_warnÝ  s"    Xúýr¿  zVectorizer, Xr\   r]   )r³   Úbarre   )r³   Zbazc                 C   s0   | ƒ }t |dƒrt‚| |¡ t |dƒr,t‚d S )NZn_features_in_)rõ   r4   r‹   )r:   r˜   rÄ   r    r    r!   Útest_n_features_inI  s    	
rÁ  c                  C   s:   t dd�} |  ddg¡j}|  ddg¡j}||ks6t‚d S )Nr\   r  ZhelloZworld)r   r‹   rŽ   r4   )rV  Zvocab1Zvocab2r    r    r!   Ú)test_tie_breaking_sample_order_invarianceX  s    
rÂ  c                  C   s.   t ddd�} |  dg¡j}|d dks*t‚d S )Ni@B )r]   re   )r  r`   z22pcs efuturer   )r   r�   r—  r4   )Zhashingr—  r    r    r!   Ú2test_nonnegative_hashing_vectorizer_result_indicesa  s    rÃ  c                 C   s   | ƒ }t |dƒrt‚dS )z0Check that vectorizers do not define set_output.Z
set_outputN)rõ   r4   )r™  r|   r    r    r!   Ú'test_vectorizers_do_not_have_set_outputi  s    rÄ  )…Úcollections.abcr   r‰  rh   rÎ   r„  r   Zsklearn.feature_extraction.textr   r   r   r   r   r	   r
   r   Zsklearn.model_selectionr   r   r   Zsklearn.pipeliner   Zsklearn.svmr   Zsklearn.baser   rƒ  rö   Znumpy.testingr   r   Zsklearn.utilsr   Zsklearn.utils._testingr   r   r   r   Úcollectionsr   Ú	functoolsr   rL  Úior   rŒ   r<  rž   r"   r&   r)   r*   r8   r9   ÚmarkZparametrizerX   ra   rl   r{   r}   r   rš   r¡   r§   r©   r²   r¶   r¸   rÆ   rÉ   rÒ   rÚ   rà   râ   rå   r  r  r  r  r  r  r!  r#  r)  r,  r3  rE  rF  rG  rI  rJ  rT  rU   rø   r�  rX  rd  rf  rh  ri  rj  rl  rn  ro  ru  rv  rw  rx  rz  r(  r+  r€  r‚  Zint32r–  r†  rŒ  rŽ  r•  r˜  r§  r±  r²  r­  Úparamr³  r¹  r¿  rÁ  rÂ  rÃ  rÄ  r    r    r    r!   Ú<module>   sà  	$
=
g
&G


$'

ýþ
	

 ÿ

üþ	
ýþ


 ÿ ÿþþýþ ÿ ÿ
 ÿ÷÷÷÷÷ÈýH!þþ
	
 
ÿ