U
    _»{j´ú  ã                   @   sŽ  d 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
Zddl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 ddlmZ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(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS dd„ ZTejU VdejW Wd¡e Xdd¡ Y¡ g¡dd„ ƒZZdd „ Z[d!d"„ Z\d#d$„ Z]ejU Vd%ej^d&fej_d'fej_d&fg¡ejU Vd(ej`ejag¡d)d*„ ƒƒZbejU Vd+ej^d,d-d.fej^dd-d/fej^d0d-d1fej^dd'd/fej_d,d-d2fej_dd-d3fej_d4d-d5fej_d,d6d7fej_d,d8d2fg	¡ejU Vd(ej`ejag¡d9d:„ ƒƒZcejU Vd;dd4d0g¡ejU Vd(ej`ejag¡d<d=„ ƒƒZdd>d?„ ZeejU Vd@e fd8ej_gg¡dAfe fd8ej_gg¡dAfe fd8ej^gg¡dBfejfd8ej_ggegdC�dDfg¡ejU VdEd-d&g¡dFdG„ ƒƒZhe9dHdI„ ƒZiejU VddJdKgdLdMggejfdJdKgdLdMggdNdC�ejfdJdKgdLdMggdOdC�dPdQgdRdSggejfdPdQgdRdSggdTdC�g¡dUdV„ ƒZjejU VdWdXdYdZd[d\d]g¡ejU Vd^ejkejlgejkfejlejlfd_ejlfg¡d`da„ ƒƒZmdbdc„ Znddde„ Zodfdg„ Zpdhdi„ Zqdjdk„ Zrdldm„ Zsdndo„ Ztejudpdqdrdsgdt�dudv„ ƒZvdwdx„ Zwdydz„ Zxd{d|„ Zyd}d~„ Zzdd€„ Z{d�d‚„ Z|dƒd„„ Z}d…d†„ Z~d‡dˆ„ ZejUjVd‰edƒe€e�gdŠd‹dŒgd��dŽd�„ ƒZ‚d�d‘„ Zƒd’d“„ Z„d”d•„ Z…d–d—„ Z†ejU Vd˜ejlejkfejldd_f¡ejU Vd™dš¡d›dœ„ ƒƒZ‡d�dž„ ZˆdŸd „ Z‰G d¡d¢„ d¢ƒZŠG d£d¤„ d¤ƒZ‹d¥d¦„ ZŒejU Vd§d-d&g¡d¨d©„ ƒZ�ejU Vd(ej`ejaejŽej�ej�ej‘ej’ej“g¡dªd«„ ƒZ”d¬d­„ Z•d®d¯„ Z–ejU Vd°dd±d²d³g¡d´dµ„ ƒZ—ejU Vd¶d8d·e˜dd¸d¹e™dºƒfdd·ejšdd¸d¹e™d»ƒfdd·ej›dd¸d¹e™d¼ƒfd8d·e˜eœfdd¸d¹e™d½ƒfd8d¾e�dd¸d¹ežd¿ƒfd³dÀe�dd¸d¹eždÁƒfddÂe�dd¸dÃeždÄƒfd¸dÅe�dd¸dÆeždÇƒfd¸dÈe�dd¸dÉeždÊƒfd¸dËe�dd¸dÆeždÌƒfd¸dÍe�dddÃeždÎƒfg¡dÏdÐ„ ƒZŸdÑe fd8dg¡dd,fe fd8dg¡e fd8dg¡dd,fdÒe fd³dg¡edÓfdÔe fd³dg¡ed,fejfd8dÕgejkdC�ejfd8dgejkdC�edÖfejfd8d×gejldC�ejfd8dgejldC�edØfdÙe fd³dg¡edÚfdÛœZ ejUjVdÜe€e  ¡¡ ƒe€e  ¢¡ ƒd��ejU VdÝd-d&g¡dÞdß„ ƒƒZ£dàeždáfdâeždãfdäeždåfejfdædçgejkdC�eždåfejfdèdégejldC�eždåfdêœZ¤ejUjVdëe€e¤ ¡¡ ƒe€e¤ ¢¡ ƒd��dìdí„ ƒZ¥dîdï„ Z¦ejU VdðejfejaejŽg¡dñdò„ ƒZ§ejU VdðejfejaejŽg¡dódô„ ƒZ¨ejU VdðejaejŽg¡dõdö„ ƒZ©d÷dø„ Zªdùdú„ Z«dûdü„ Z¬ejU Vdýdd8d±gg¡dþdÿ„ ƒZ­ejU V�d d-dpdqdrdsg¡�d�d„ ƒZ®ejU V�d�d�d�d�d�d�d	�d
�d�dg	¡�d�d„ ƒZ¯ejU V�d�d�dej°f�d�dej°fdŠ�dej°f�d�dej°f�d�dej±f�d�dej±f�d�dej±f�d�dej±f�d�dej±f�d�d ej±f�d!�dej±f�d"�d#ej²f�d$�d%ej²f�d&�d'ej²f�d(�d)ej²f�d*�d+ej²fg¡�d,�d-„ ƒZ³ejU V�d.d‹dŒ�d/�d0�d1�d2g¡�d3�d4„ ƒZ´ejUjVdd8dd±g�d5�d6�d7gd&d-d&g�d8�d9�d:g�d5d8i�d6di�d7d±igg�d�d;�d<�d=�d>gd��ejU V�d.d‹dŒ�d/�d?g¡�d@�dA„ ƒƒZµejUjVdd8�d6d&�dBg�d�d;�d<�d=gd���dC�dD„ ƒZ¶ejUjV�dEe€e·dƒƒe·dƒd�d5�d6g�d7�dFggg�dG�dH�dI�dJgd���dK�dL„ ƒZ¸�dM�dN„ Z¹�dO�dP„ ZºejUjV�dQ�d5d8g�dRf�dS�d5�d6gg�dTfg�dU�dVgd���dW�dX„ ƒZ»G �dY�dZ„ �dZeƒZ¼�d[�d\„ Z½�d]�d^„ Z¾�d_�d`„ Z¿ejU V�da�db�dc�ddg¡�de�df„ ƒZÀ�dg�dh„ ZÁ�di�dj„ ZÂejU V�dkdd8dd8dej_gdd8dd8dd8gg¡�dl�dm„ ƒZÃe:ejU V�dn�do�dpg¡�dq�dr„ ƒƒZÄejU V�ds�dt�du�dv�dwg¡ejU V�dxd-d&g¡�dy�dz„ ƒƒZÅdS ({  z$Tests for input validation functionsé    N)Úproduct)Ú
itemgetter)ÚNamedTemporaryFile)Úimportorskip)Úconfig_context)ÚBaseEstimator)Ú
make_blobs)ÚRandomForestRegressor)ÚNotFittedErrorÚPositiveSpectrumWarning)ÚARDRegression)ÚEstimatorWithFit)ÚKNeighborsClassifier)Ú_sparse_random_matrix)ÚSVR)Ú_safe_indexingÚas_float_arrayÚcheck_arrayÚcheck_symmetricÚ	check_X_yÚ
deprecated)ÚMockDataFrameÚ_MockEstimatorOnOffPrediction)	ÚSkipTestÚ
TempMemmapÚ_convert_containerÚassert_allcloseÚassert_allclose_dense_sparseÚassert_array_equalÚassert_no_warningsÚignore_warningsÚ'skip_if_array_api_compat_not_configured)Ú_NotAnArray)Úparse_version)ÚFLOAT_DTYPESÚ_allclose_dense_sparseÚ_check_feature_names_inÚ_check_fit_paramsÚ_check_psd_eigenvaluesÚ_check_response_methodÚ_check_sample_weightÚ_check_yÚ_deprecate_positional_argsÚ_get_feature_namesÚ
_is_fittedÚ_num_featuresÚ_num_samplesÚassert_all_finiteÚcheck_consistent_lengthÚcheck_is_fittedÚcheck_memoryÚcheck_non_negativeÚcheck_scalarÚhas_fit_parameterc                  C   s”  t jdt jd�} | t jdt jd� } t| dd�}|jt jks@t‚|  t j	¡} t| dd�}t| dd�| k	slt‚|jt j
ks|t‚tt jt jt jt jt jt jg}|D ]&}|  |¡} t| ƒ}|jt jksžt‚qž|  t¡} t| dd�}|jt j
ksìt‚t jdt jd�} t| dd�| k�st‚t  | ¡} t  t| dd�¡�s4t‚t t  d¡¡ ¡ tddd	d
� ¡ g}|D ]0}t|dd�}t j|d< t  |¡ ¡ �r^t‚�q^d S )N)é   é
   ©Údtyper9   F©ÚcopyT)r8   é   é   çš™™™™™¹?)Zdensity©r   r   )ÚnpÚonesÚint32Úaranger   r;   Úfloat32ÚAssertionErrorÚastypeÚint64Úfloat64ÚboolÚint8Úint16Úuint8Úuint16Úuint32ÚobjectZasfortranarrayZ	isfortranÚspÚ
csc_matrixÚtoarrayr   ÚnanÚisnanÚany)ÚXZX2Ztested_dtypesr;   ZmatricesÚMÚN© r[   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/utils/tests/test_validation.pyÚtest_as_float_arrayM   s6    


þ
r]   rX   ©r9   r>   r9   r>   c                 C   s.   t j| d< t j| d< t| dd�}t|| ƒ d S )N)r?   r   )é   é   ú	allow-nan©Úforce_all_finite)rB   rU   r   r   )rX   ZX_convertedr[   r[   r\   Útest_as_float_array_nanw   s    

rd   c                  C   sD   t  d¡ dd¡} tt| ƒt jƒr&t‚ttt | ¡ƒt jƒr@t‚d S )Né   r8   é   )	rB   rE   ÚreshapeÚ
isinstancer   ÚmatrixrG   rR   rS   ©rX   r[   r[   r\   Útest_np_matrix   s    rk   c               	   C   s„   dd„ } t dd��h}tj|dtjd�}d|d d …< ttj| fD ]6}||ƒ}d|d d …< t| ¡ | ¡ ƒ d|d d …< q>W 5 Q R X d S )	Nc                 S   s   t | dd�S )NFr<   )r   )Úxr[   r[   r\   Ú<lambda>Š   ó    ztest_memmap.<locals>.<lambda>zsklearn-test)Úprefix)r9   r9   )Úshaper;   r   r`   )r   rB   ZmemmaprF   r   Úasarrayr   Zravel)ZasfltÚtmprY   ÚfrX   r[   r[   r\   Útest_memmap‡   s    rt   c                  C   sœ   t  d¡} | | jfD ]V}dD ]L}t|d|d�}|jd s<t‚t|d|d�}|jd sXt‚|r||k	st‚qqt | ¡} | jd d d… | _| jjd r˜t‚d S )	N)r9   r?   )TFÚC)Úorderr=   ÚC_CONTIGUOUSÚFÚF_CONTIGUOUSéÿÿÿÿ)	rB   rC   ÚTr   ÚflagsrG   rR   Ú
csr_matrixÚdata)rX   ÚAr=   ÚBr[   r[   r\   Útest_ordering—   s    

r�   zvalue, force_all_finiteFra   Úretypec                 C   s@   |t  d¡ dd¡ t¡ƒ}| |d< t||dd�}t||ƒ d S )Nrf   r>   rA   T)rc   Úaccept_sparse)rB   rE   rg   rH   Úfloatr   r   )Úvaluerc   r‚   rX   Ú	X_checkedr[   r[   r\   Ú'test_check_array_force_all_finite_validª   s    r‡   z.value, input_name, force_all_finite, match_msgÚ TzInput contains infinityzInput X contains infinityÚsample_weightz%Input sample_weight contains infinityúInput contains NaNzInput X contains NaNÚyzInput y contains NaNz	allow-infz0force_all_finite should be a bool or "allow-nan"r`   c              	   C   sT   |t  d¡ dd¡ t j¡ƒ}| |d< tjt|d�� t|||dd� W 5 Q R X d S )Nrf   r>   rA   ©ÚmatchT)Ú
input_namerc   rƒ   )	rB   rE   rg   rH   rJ   ÚpytestÚraisesÚ
ValueErrorr   )r…   rŽ   rc   Z	match_msgr‚   rX   r[   r[   r\   Ú(test_check_array_force_all_finiteinvalidµ   s    ür’   rŽ   c              	   C   sþ   |t  d¡ dd¡ t j¡ƒ}t j|d< tƒ }d|jj› d�}t	j
td| › d�d��}t||| d	d
� W 5 Q R X | dkrŽ||jjd ks¢t‚n||jjd ks¢t‚| dkrút	j
td| › d�d�� }tƒ  |t  |jd ¡¡ W 5 Q R X ||jjd ksút‚d S )Nrf   r>   rA   Ú
aX   does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-valueszInput z contains NaNrŒ   T)Ú	estimatorrŽ   rƒ   rX   r   )rB   rE   rg   rH   rJ   rU   r   Ú	__class__Ú__name__r�   r�   r‘   r   r…   ÚargsrG   ÚfitrC   rp   )rŽ   r‚   r~   r”   Zextended_msgÚctxr[   r[   r\   Ú0test_check_array_links_to_imputer_doc_only_for_X×   s&    
ÿü$rš   c               	   C   sz   t jddt jggtd�j} t| d dd�}| |ks4t‚t| d dd�}| |ksNt‚tjt	dd�� t| d d	d� W 5 Q R X d S )
NÚaÚbr:   ra   ©r;   rc   FrŠ   rŒ   T)
rB   ÚarrayrU   rQ   r{   r   rG   r�   r�   r‘   )rX   r†   r[   r[   r\   Ú(test_check_array_force_all_finite_object  s    rŸ   z
X, err_msgúInput contains NaN.z5Input contains infinity or a value too large for.*intr:   z#cannot convert float NaN to integerrc   c              	   C   s,   t jt|d�� t| t|d� W 5 Q R X d S )NrŒ   r�   )r�   r�   r‘   r   Úint)rX   Úerr_msgrc   r[   r[   r\   Ú7test_check_array_force_all_finite_object_unsafe_casting  s    r£   c               	   C   s  ddgddgg} t  | ¡}t t¡� t|ƒ W 5 Q R X tdddgdd�}|jdksXt‚tjtdd	�� tdddgd
d� W 5 Q R X tjtdd	�� tdd
d� W 5 Q R X t	 
d¡ ddd¡}t t¡� t|ƒ W 5 Q R X t|d
d� t	 
d¡ dd¡ d¡}| d¡}| t¡}| t¡}||||g}t	jttt	jd ttg}	ddd g}
d
dg}t||	|
|ƒD �] \} }}}t| |||d�}|d k	�rš|j|k�s¬t‚n|j| jk�s¬t‚|dk�rØ|jd �sÆt‚|jd �rt‚n*|dk�r|jd �sòt‚|jd �rt‚|�r| |k	�s`t‚nH| j|jk�r`|jd | jd k�r`|jd | jd k�r`| |k�s`t‚�q`t  |¡}| ¡ }| ¡ }| t¡}| t¡}|||||g}ddgddgg}dd„ |	D ƒ}t||||ƒD ]À\} }}}t| |||d�}|d k	�r|j|k�st‚n|j| jk�st‚| j|k�r6| j|jk�sJt‚n|j|d k�sJt‚|�r`| |k	�sŠt‚n*| j|jk�rÌ| j|jk�rÌ| |k�sÌt‚�qÌtddgddggƒ}t|t	jƒ�s´t‚t t¡� t| ¡ ƒ W 5 Q R X t| ¡ d
d� t|ƒ}t|ƒ}t|t	jƒ�st‚d S )Nr`   r>   r8   rf   r   F©Ú	ensure_2dz'Expected 2D array, got 1D array insteadrŒ   Tz+Expected 2D array, got scalar array insteadr9   é   ©Úallow_ndru   rx   )r;   rv   r=   rw   ry   ÚcsrÚcooÚdokc                 S   s   g | ]}|t k	r|‘qS r[   )rQ   )Ú.0Údtr[   r[   r\   Ú
<listcomp>p  s      z$test_check_array.<locals>.<listcomp>©r;   rƒ   r=   )rR   r}   r�   r�   Ú	TypeErrorr   ÚndimrG   r‘   rB   rE   rg   r=   rH   r¡   r„   rD   rF   rK   rQ   r   r;   r|   rS   ZtocooZtodokÚformatrh   ZndarrayÚtolistr"   )rX   ÚX_csrZX_arrayZX_ndimZX_CZX_FZX_intZX_floatZXsÚdtypesZordersZcopysr;   rv   r=   r†   ZX_cscZX_cooZX_dokZaccept_sparsesZnon_object_dtypesrƒ   ZX_denseZ
X_no_arrayÚresultr[   r[   r\   Útest_check_array*  s–    








ÿþý


   ÿ
r·   Ú1Ú2Ú3Ú4ÚUÚSó   1ó   2ó   3ó   4ZV1c              	   C   s.   d}t jt|d�� t| dd� W 5 Q R X dS )zmTest that check_array errors when it receives an array of bytes/string
    while a numeric dtype is required.z>dtype='numeric' is not compatible with arrays of bytes/stringsrŒ   Únumericr:   N©r�   r�   r‘   r   )rX   Zexpected_msgr[   r[   r\   Útest_check_array_numeric_error•  s    rÄ   Úpd_dtypeZInt8ZInt16ZUInt8ZUInt16ÚFloat32ÚFloat64zdtype, expected_dtyperÂ   c              	   C   sú   t  d¡}| dkr t jddd�}t dddtjtjgtjtjdd	d
gdddd	dgg¡j}|j|| dddgd�}|d  d¡|d< t|d|d�}t	||ƒ |j
|ks¦t‚t|d|d�}t	||ƒ |j
|ksÌt‚d}t jt|d�� t|dd� W 5 Q R X d S )NÚpandas>   rÆ   rÇ   z1.2©Z
minversionr`   r>   r8   r¦   rf   r_   r?   r›   rœ   Úc)r;   Úcolumnsr„   ra   )rc   r;   FrŠ   rŒ   Trb   )r�   r   rB   rž   rU   r{   Ú	DataFramerH   r   r   r;   rG   r�   r‘   )rÅ   r;   Zexpected_dtypeÚpdZX_nprX   r†   Úmsgr[   r[   r\   Ú"test_check_array_pandas_na_support§  s"    
.ÿ

rÏ   c               	   C   s´   t  d¡} | jdd| jgdd�}d}t jt|d�� t|dd	d
� W 5 Q R X t|d	d	d
�}t|ddtj	gƒ |j
tjks|t‚t|d	d	tjd�}t|ddtj	gƒ |j
tjks°t‚dS )z4Check check_array is correct with pd.NA in a series.rÈ   r`   r>   ÚInt64r:   rŠ   rŒ   TF)rc   r¥   )rc   r¥   r;   N)r�   r   ÚSeriesZNAr�   r‘   r   r   rB   rU   r;   rJ   rG   rF   )rÍ   ÚX_int64rÎ   ZX_outr[   r[   r\   Ú*test_check_array_panadas_na_support_seriesÏ  s     
   ÿrÓ   c                  C   sÂ  t  d¡} tjdddgdddgdd	d
ggtjd�}|  |¡}t|ƒjtjksPt‚t|t	d�jtjksht‚| 
dtji¡}t|jtjtjtjfƒ t|ƒjtjks¤t‚t|t	d�jtjks¼t‚| 
dtji¡}t|ƒjtjksàt‚t|t	d�jtjksøt‚| 
dtji¡}t|ƒjtjk�st‚t|t	d�jtjk�s8t‚| 
tj¡}t|ƒjtjk�sZt‚t|t	d�jtjk�stt‚|  d|  dddg¡i¡}t|ƒjtjk�s¤t‚t|t	d�jtjk�s¾t‚d S )NrÈ   r`   r>   r8   rf   r?   r_   é   r¦   é	   r:   r   Zcat_col)r�   r   rB   rž   rF   rÌ   r   r;   rG   r$   rH   Úfloat16r   rµ   rM   rJ   ZCategoricalrI   )rÍ   rX   ÚX_dfZcat_dfr[   r[   r\   Ú%test_check_array_pandas_dtype_castingä  s*    
(
rØ   c                  C   sj   t  ddgddgddgddgg¡} t| ƒ}t|ƒ}|j| jksBt‚t|t jd�}|jt  t j¡ksft‚d S )Ngš™™™™™É?gffffffæ?g333333ã?g      à?gš™™™™™Ù?r@   r:   )rB   rž   r   r   r;   rG   rF   )ÚarrZmock_dfZchecked_arrr[   r[   r\   Ú"test_check_array_on_mock_dataframe	  s    "rÚ   c                  C   sL   dddgdddgddd	gg} t | ƒjjd
ks0t‚t | dd�jjd
ksHt‚d S )Nr`   r>   r8   rf   r?   r_   rÔ   r¦   rÕ   ÚiFr¤   )r   r;   ÚkindrG   rj   r[   r[   r\   Ú test_check_array_dtype_stability  s    rÝ   c            
      C   sj  dddgdddgddd	gg} t j| t jd
�}t j| t jd
�}t |¡}t |¡}tj|t jd
�}||g}|||g}|D ]&}tt	|t j
dd�}	|	jt j
ksvt‚qv|D ]t}tt	|t j
t jgdd�}	|	jt jksÎt‚|	|ksÚt‚tt	|t j
t jgddgdd�}	|	jt jk�s
t‚|	|k	s¢t‚q¢tt	|t j
t jgddgdd�}	|	jt jk�sHt‚|	|k	�sVt‚|	jdk�sft‚d S )Nr`   r>   r8   rf   r?   r_   rÔ   r¦   rÕ   r:   T)r;   rƒ   r©   r«   r¯   F)rB   rq   rF   rI   rR   r}   rS   rD   r   r   rJ   r;   rG   r²   )
Z
X_int_listZ	X_float32rÒ   ZX_csr_float32ZX_csc_float32ZX_csc_int32Zinteger_dataZfloat32_datarX   r†   r[   r[   r\   Útest_check_array_dtype_warning  sX    


   ÿ  
 ÿ
û
ûrÞ   c               	   C   sð   ddgddgg} t  | ¡}tƒ }d}tjt|d�� t|dd� W 5 Q R X d	}tjt|d�� t||d� W 5 Q R X d
}tjt|d�� t|g d� W 5 Q R X tjt|d�� t|dd� W 5 Q R X tjtdd�� t||gd� W 5 Q R X d S )Nr`   r>   r8   rf   zlA sparse matrix was passed, but dense data is required. Use X.toarray\(\) to convert to a dense numpy array.rŒ   F©rƒ   zjParameter 'accept_sparse' should be a string, boolean or list of strings. You provided 'accept_sparse=.*'.z]When providing 'accept_sparse' as a tuple or list, it must contain at least one string value.r[   r   )rR   r}   r   r�   r�   r°   r   r‘   )rX   r´   Úinvalid_typerÎ   r[   r[   r\   Ú-test_check_array_accept_sparse_type_exceptionE  s&    
ÿÿÿrá   c                  C   sP   ddgddgg} t  | ¡}t|dd� t|dd� t|dgd� t|dd� d S )	Nr`   r>   r8   rf   Trß   r©   )r©   )rR   r}   r   )rX   r´   r[   r[   r\   Ú+test_check_array_accept_sparse_no_exceptiond  s    
râ   r©   Úcscrª   Úbsr)Úparamsc                 c   sH   t jdd| jd�}dD ]&}t||ƒrt||t||ƒ d¡ƒ q|V  d S )Né   r9   )r²   )ÚindicesZindptrÚrowÚcolrI   )rR   ÚrandÚparamÚhasattrÚsetattrÚgetattrrH   )ÚrequestrX   Úattrr[   r[   r\   ÚX_64bitn  s
    
rñ   c                 C   s   t | ddd� d S )NT)Úaccept_large_sparserƒ   )r   )rñ   r[   r[   r\   Ú1test_check_array_accept_large_sparse_no_exceptionw  s    ró   c              	   C   s0   d}t jt|d�� t| ddd� W 5 Q R X d S )NzbOnly sparse matrices with 32-bit integer indices are accepted. Got int64 indices. Please do reportrŒ   TF)rƒ   rò   rÃ   )rñ   rÎ   r[   r[   r\   Ú4test_check_array_accept_large_sparse_raise_exception|  s    ÿrô   c               	   C   sÒ  d} t jt| d�� tg gƒ W 5 Q R X d} t jt| d�� tg dd� W 5 Q R X d} t jt| d�� tddd� W 5 Q R X t d¡}t d	¡}d
} t jt| d�� t||dd� W 5 Q R X t jt| d�� t||ddd� W 5 Q R X t d¡}t d¡}d} t jt| d�� t||dd� W 5 Q R X t jt| d�� t||ddd� W 5 Q R X t d¡ 	dd¡}t d¡}d} t jt| d�� t||ƒ W 5 Q R X t d¡}t d¡}t||dd�\}}t
||ƒ t
||ƒ d S )NzC0 feature\(s\) \(shape=\(1, 0\)\) while a minimum of 1 is required.rŒ   z@0 sample\(s\) \(shape=\(0,\)\) while a minimum of 1 is required.Fr¤   zDSingleton array array\(42\) cannot be considered a valid collection.é*   )r`   r9   r`   zC1 sample\(s\) \(shape=\(1, 10\)\) while a minimum of 2 is required.r>   )Úensure_min_samples)rö   r¥   r^   zD2 feature\(s\) \(shape=\(10, 2\)\) while a minimum of 3 is required.r8   )Úensure_min_featuresT)r÷   r¨   r   r9   zD0 feature\(s\) \(shape=\(10, 0\)\) while a minimum of 1 is required.)r9   r   é   rø   r§   )r�   r�   r‘   r   r°   rB   rC   r   Úemptyrg   r   )rÎ   rX   r‹   r†   Z	y_checkedr[   r[   r\   Ú2test_check_array_min_samples_and_features_messages†  sB    







rú   c               	   C   sÐ  t  dddgdddgg¡} tjtdd�� t| ƒ W 5 Q R X dddgdddgg} tjtdd�� t| ƒ W 5 Q R X d	} tjtdd�� t| ƒ W 5 Q R X t  dddg¡t  dddg¡g} tjtdd�� t| ƒ W 5 Q R X t  dddg¡t  dddg¡f} tjtdd�� t| ƒ W 5 Q R X tt  dddgdddgg¡ƒ} tjtdd�� t| ƒ W 5 Q R X t d
dgd
d
gg¡} tjtdd�� t| ƒ W 5 Q R X t  ddddddg¡}tjtdd�� t	|ƒ W 5 Q R X d S )Nù      ð?       @ù      @      @ù      @      @ù       @      @ù      @      @ù      @      @zComplex data not supportedrŒ   ))rû   rü   rý   )rþ   rÿ   r   r   )
rB   rž   r�   r�   r‘   r   r   rR   Ú
coo_matrixr+   )rX   r‹   r[   r[   r\   Ú#test_check_array_complex_data_errorÀ  s0      r  c                  C   s^   t tdƒrt‚t tdƒst‚t tdƒs*t‚t tƒ dƒs:t‚G dd„ dƒ} t | dƒsZtdƒ‚d S )Nr‰   c                   @   s   e Zd Zedƒddd„ƒZdS )z@test_has_fit_parameter.<locals>.TestClassWithDeprecatedFitMethodz7Deprecated for the purpose of testing has_fit_parameterNc                 S   s   d S ©Nr[   )ÚselfrX   r‹   r‰   r[   r[   r\   r˜   ñ  s    zDtest_has_fit_parameter.<locals>.TestClassWithDeprecatedFitMethod.fit)N)r–   Ú
__module__Ú__qualname__r   r˜   r[   r[   r[   r\   Ú TestClassWithDeprecatedFitMethodð  s   r  z=has_fit_parameter fails for class with deprecated fit method.)r7   r   rG   r	   r   )r  r[   r[   r\   Útest_has_fit_parameterê  s     ÿþr  c               
   C   s$  t  ddgddgg¡} t  d¡}t  ddgddgg¡}|t |¡t |¡t |¡t |¡t |¡t 	|¡dœ}t
 t¡� t|ƒ W 5 Q R X | ¡ D ]Š\}}t
 t¡� t|ƒ W 5 Q R X t
 t¡� t|dd� W 5 Q R X t|dd�}t |¡�r|j|k�st‚t| ¡ | ƒ q”t|| ƒ q”d S )	Nr   r`   r>   )Zdenser«   r©   rã   rª   Zlilrä   T)Zraise_exceptionF)Zraise_warning)rB   rž   rC   rR   Ú
dok_matrixr}   rS   r  Ú
lil_matrixÚ
bsr_matrixr�   r�   r‘   r   ÚitemsÚwarnsÚUserWarningÚissparser²   rG   r   rT   )Zarr_symZarr_badZarr_asymZtest_arraysZ
arr_formatrÙ   Úoutputr[   r[   r\   Útest_check_symmetricú  s.    
ùr  c               	   C   sB   G dd„ dt ƒ} t t¡� t| ƒ ƒ W 5 Q R X t| ƒ  ¡ ƒ d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z6test_check_is_fitted_with_is_fitted.<locals>.Estimatorc                 [   s
   d| _ | S )NT)r.   )r  Úkwargsr[   r[   r\   r˜     s    z:test_check_is_fitted_with_is_fitted.<locals>.Estimator.fitc                 S   s   t | dƒo| jS )Nr.   )rì   r.   ©r  r[   r[   r\   Ú__sklearn_is_fitted__#  s    zLtest_check_is_fitted_with_is_fitted.<locals>.Estimator.__sklearn_is_fitted__N)r–   r  r  r˜   r  r[   r[   r[   r\   Ú	Estimator  s   r  )r   r�   r�   r
   r3   r˜   )r  r[   r[   r\   Ú#test_check_is_fitted_with_is_fitted  s    r  c               	   C   sF  t  t¡� ttƒ W 5 Q R X t  t¡� tdƒ W 5 Q R X tƒ } tƒ }z@t  t¡� t| ƒ W 5 Q R X t  t¡� t|ƒ W 5 Q R X W n  tk
r¨   ds¤tdƒ‚Y nX d}d}t jt|d�� t| |d� W 5 Q R X d}d	}t jt	|d�� t||d� W 5 Q R X | j
tƒ Ž  |j
tƒ Ž  t| ƒd k�s0t‚t|ƒd k�sBt‚d S )
Nr   Fz&check_is_fitted failed with ValueErrorz!Random message %(name)s, %(name)sz+Random message ARDRegression, ARDRegressionrŒ   )rÎ   z"Another message %(name)s, %(name)szAnother message SVR, SVR)r�   r�   r°   r3   r   r   r
   r‘   rG   ÚAttributeErrorr˜   r   )ÚardZsvrrÎ   r�   r[   r[   r\   Útest_check_is_fitted+  s2    r  c               	   C   s  G dd„ dƒ} d}| ƒ }t |ddgd�r,t‚tjt|d�� t|ddgd� W 5 Q R X t |ddgtd�rlt‚tjt|d�� t|ddgtd� W 5 Q R X t |ddgtd�r®t‚tjt|d�� t|ddgtd� W 5 Q R X d	|_t |ddgd�rôt‚tjt|d�� t|ddgd� W 5 Q R X t |ddgtd��r6t‚tjt|d�� t|ddgtd� W 5 Q R X t |ddgtd��szt‚t|ddgtd� d
|_	t |ddgd��s¨t‚t|ddgd� t |ddgtd��sÐt‚t|ddgtd� t |ddgtd��sút‚t|ddgtd� d S )Nc                   @   s   e Zd Zdd„ ZdS )z4test_check_is_fitted_attributes.<locals>.MyEstimatorc                 S   s   | S r  r[   ©r  rX   r‹   r[   r[   r\   r˜   Q  s    z8test_check_is_fitted_attributes.<locals>.MyEstimator.fitN)r–   r  r  r˜   r[   r[   r[   r\   ÚMyEstimatorP  s   r  z
not fittedÚa_Úb_)Ú
attributesrŒ   )r  Z
all_or_anyr›   rœ   )
r.   rG   r�   r�   r
   r3   ÚallrW   r  r  )r  rÎ   Úestr[   r[   r\   Útest_check_is_fitted_attributesO  s8    r!  ÚwrapZsingleÚlistÚtuple)Zidsc              	   C   sz   t ƒ }tjtdd�� t|| dgƒƒ W 5 Q R X |jtƒ Ž  t|| dgƒƒ tjtdd�� t|| dgƒƒ W 5 Q R X d S )Nzis not fitted yetrŒ   Zcoef_Z	coef_bad_)r   r�   r�   r
   r3   r˜   r   )r"  r  r[   r[   r\   Ú$test_check_is_fitted_with_attributest  s    r%  c                	   C   s.  t dgdgdgdgdgƒ t ddgddgggddgddgƒ t dgdt dg¡t d	¡ƒ tjtd
d�� t ddgdgƒ W 5 Q R X tjtdd�� t ddgdƒ W 5 Q R X tjtdd�� t ddgt	ƒ ƒ W 5 Q R X t t¡� t ddgt d¡ƒ W 5 Q R X tjtdd�� t ddgt
ƒ ƒ W 5 Q R X d S )Nr`   r>   r8   rf   r?   r›   rœ   )r>   ©r`   r>   zinconsistent numbers of samplesrŒ   zgot <\w+ 'int'>zgot <\w+ 'object'>úExpected sequence or array-like)r2   rB   rž   rR   r}   r�   r�   r‘   r°   rQ   r	   r[   r[   r[   r\   Útest_check_consistent_length†  s    "r(  c                  C   sl   zJdd l } t dddgdddgdd	d
gg¡}| j|dddgd�}t|ƒ W n tk
rf   tdƒ‚Y nX d S )Nr   r`   r>   r8   rf   r?   r_   rÔ   r¦   rÕ   r›   rœ   r˜   ©rË   zPandas not found)rÈ   rB   rž   rÌ   r2   ÚImportErrorr   )rÍ   rX   r×   r[   r[   r\   Ú"test_check_dataframe_fit_attributeš  s    "r+  c               	   C   sp   t  dt jg¡} t t¡� t| ƒ W 5 Q R X tjdd� t| ƒ tjdd� t t¡� t| ƒ W 5 Q R X d S )Nr   T)Zassume_finiteF)	rB   rž   Úinfr�   r�   r‘   r1   ÚsklearnZ
set_configrj   r[   r[   r\   Útest_suppress_validation§  s    r.  c                  C   sx   t dƒ} t|  dddg¡dd�}t|t dddg¡ƒ |  ddd	g¡ d
¡}t|d dd�}t|tjddd	gtd�ƒ d S )NrÈ   r`   r>   r8   Fr¤   r›   rœ   rÊ   Úcategory)r;   r¥   r:   )r   r   rÑ   r   rB   rž   rH   rQ   )rÍ   ÚresÚsr[   r[   r\   Útest_check_array_series²  s    r2  r;   Ú
bool_dtype)rK   Úbooleanc                 C   s¦   |dkrt ddd�}nt dƒ}|jdddgdd	d
g|jdddg|d�dœdddgd�}t|| d�}|jtjksrt‚tjdddgdd	dgdd
dggt	d�}t
||ƒ d S )Nr4  rÈ   ú1.0rÉ   r`   r>   r8   r   r@   gÍÌÌÌÌÌ @TFr:   )r¡   r„   rK   r¡   r„   rK   r)  ç      ð?ç        ç       @ç      @)r   rÌ   rÑ   r   r;   rB   rJ   rG   rž   r„   r   )r;   r3  rÍ   Údfrž   Zexpected_arrayr[   r[   r\   Ú'test_check_dataframe_mixed_float_dtypes¾  s"    ýú	 ÿr;  c                  C   s®   t dƒ} |  ddddgi¡}t|dd�}|jtjks8t‚t|dgdgdggƒ | jdddgddd	gd
œddgd�}t|dd�}|jtjksŽt‚t|ddgddgdd	ggƒ dS )z7Check that dataframe with bool return a boolean arrays.rÈ   rK   TFNr:   r`   r>   r8   )rK   r¡   r¡   r)  rÂ   r   )	r   rÌ   r   r;   rB   Zbool_rG   r   rI   ©rÍ   r:  rž   r[   r[   r\   Ú#test_check_dataframe_with_only_boolà  s    þr=  c                  C   s`   t ddd�} |  d| jdddgdd�i¡}t|d	d�}|jtjksFt‚t|dgdgdggƒ d	S )
zFCheck that dataframe with boolean return a float array with dtype=NonerÈ   r5  rÉ   rK   TFr4  r:   N)	r   rÌ   rÑ   r   r;   rB   rJ   rG   r   r<  r[   r[   r\   Ú&test_check_dataframe_with_only_booleanó  s
    r>  c                   @   s   e Zd Zdd„ ZdS )ÚDummyMemoryc                 C   s   |S r  r[   )r  Úfuncr[   r[   r\   Úcacheþ  s    zDummyMemory.cacheN)r–   r  r  rA  r[   r[   r[   r\   r?  ý  s   r?  c                   @   s   e Zd ZdS )ÚWrongDummyMemoryN)r–   r  r  r[   r[   r[   r\   rB    s   rB  c               	   C   s¢   t dƒ} | jdkst‚t d ƒ} | jd ks,t‚tƒ }t |ƒ} | |ksFt‚d}tjt|d�� t dƒ W 5 Q R X tƒ }d |¡}tjt|d�� t |ƒ W 5 Q R X d S )NZcache_directoryzf'memory' should be None, a string or have the same interface as joblib.Memory. Got memory='1' instead.rŒ   r`   zg'memory' should be None, a string or have the same interface as joblib.Memory. Got memory='{}' instead.)	r4   ÚlocationrG   r?  r�   r�   r‘   rB  r²   )ZmemoryÚdummyrÎ   r[   r[   r\   Útest_check_memory  s$    ÿÿÿrE  r=   c              	   C   sZ   t  d¡}t|dd��:}t|| d�}t  ||¡|  ks:t‚|jd | ksLt‚W 5 Q R X d S )N)rf   rf   Úr)Z	mmap_moder<   Z	WRITEABLE)rB   rC   r   r   Zmay_share_memoryrG   r|   )r=   rX   ZX_memmapr†   r[   r[   r\   Útest_check_array_memmap   s
    
rG  c              	   C   sš   t  ddddgddddgddddgddddgg¡}| |ƒ}t|dƒ | ddgddggƒ}t|dƒ d|d< | |ƒ}tjtdd�� t|dƒ W 5 Q R X d S )Nr`   r   rˆ   rz   rA   z	Negative rŒ   )rB   rž   r5   r�   r�   r‘   )r‚   r   rX   r[   r[   r\   Útest_check_non_negative)  s    2

rH  c               	   C   sh   t  d¡} d }d}tjt|d�� t| |ƒ W 5 Q R X d}tjt|d�� t| |tƒ d� W 5 Q R X d S )N©r>   r>   z;estimator requires y to be passed, but the target y is NonerŒ   zGRandomForestRegressor requires y to be passed, but the target y is None)r”   )rB   rC   r�   r�   r‘   r   r	   )rX   r‹   rÎ   r[   r[   r\   Ú test_check_X_y_informative_errorC  s    
rJ  c               	   C   s^   G dd„ dƒ} | ƒ }t |ƒt|ƒks(t‚G dd„ dƒ}tjtdd�� t |ƒ ƒ W 5 Q R X d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )zJtest_retrieve_samples_from_non_standard_shape.<locals>.TestNonNumericShapec                 S   s
   d| _ d S ©N)znot numeric©rp   r  r[   r[   r\   Ú__init__Q  s    zStest_retrieve_samples_from_non_standard_shape.<locals>.TestNonNumericShape.__init__c                 S   s   t dddgƒS )Nr`   r>   r8   )Úlenr  r[   r[   r\   Ú__len__T  s    zRtest_retrieve_samples_from_non_standard_shape.<locals>.TestNonNumericShape.__len__N)r–   r  r  rM  rO  r[   r[   r[   r\   ÚTestNonNumericShapeP  s   rP  c                   @   s   e Zd Zdd„ ZdS )zJtest_retrieve_samples_from_non_standard_shape.<locals>.TestNoLenWeirdShapec                 S   s
   d| _ d S rK  rL  r  r[   r[   r\   rM  \  s    zStest_retrieve_samples_from_non_standard_shape.<locals>.TestNoLenWeirdShape.__init__N)r–   r  r  rM  r[   r[   r[   r\   ÚTestNoLenWeirdShape[  s   rQ  r'  rŒ   )r0   rN  rG   r�   r�   r°   )rP  rX   rQ  r[   r[   r\   Ú-test_retrieve_samples_from_non_standard_shapeO  s    rR  rl   r8   g      @r?   c              	   C   sD   t  ¡ �& t  d¡ t| dtjdddd�}W 5 Q R X || ks@t‚dS )zPTest that check_scalar returns no error/warning if valid inputs are
    providedÚerrorZ	test_namer>   r?   Zboth©Útarget_typeÚmin_valÚmax_valÚinclude_boundariesN)ÚwarningsÚcatch_warningsÚsimplefilterr6   ÚnumbersÚRealrG   )rl   Zscalarr[   r[   r\   Útest_check_scalar_validc  s    

úr^  zJx, target_name, target_type, min_val, max_val, include_boundaries, err_msgZ
test_name1rf   Zneitherz1test_name1 must be an instance of float, not int.z6test_name1 must be an instance of float, not NoneType.z4test_name1 must be an instance of int, not NoneType.z9test_name1 must be an instance of {float, bool}, not int.Z
test_name2ztest_name2 == 1, must be > 2.Z
test_name3ztest_name3 == 5, must be < 4.Z
test_name4Úrightztest_name4 == 2, must be > 2.Z
test_name5Úleftztest_name5 == 4, must be < 4.Z
test_name6zbad parameter valuezyUnknown value for `include_boundaries`: 'bad parameter value'. Possible values are: ('left', 'right', 'both', 'neither').Z
test_name7zT`include_boundaries`='left' without specifying explicitly `min_val` is inconsistent.Z
test_name8zU`include_boundaries`='right' without specifying explicitly `max_val` is inconsistent.c              	   C   sZ   t  t¡�}t| |||||d� W 5 Q R X t|jƒt|ƒks@t‚t|jƒt|ƒksVt‚dS )zLTest that check_scalar returns the right error if a wrong input is
    givenrT  N)r�   r�   Ú	Exceptionr6   Ústrr…   rG   Útype)rl   Ztarget_namerU  rV  rW  rX  r¢   Zraised_errorr[   r[   r\   Útest_check_scalar_invalidt  s    vúrd  r&  )r?   y        -Cëâ6
?zJThere are imaginary parts in eigenvalues \(1e\-05 of the maximum real part)r?   g-Cëâ6
¿g�íµ ÷Æ°¾z?There are negative eigenvalues \(1e\-06 of the maximum positiveg»½×Ùß|Û½z?There are negative eigenvalues \(1e\-10 of the maximum positive)r?   gê-�™—‘=z=the largest eigenvalue is more than 1e\+12 times the smallest)ZnominalZnominal_np_arrayZinsignificant_imagzinsignificant negzinsignificant neg float32zinsignificant neg float64zinsignificant posz(lambdas, expected_lambdas, w_type, w_msgÚenable_warningsc              	   C   sr   |sd }|d kr>t  ¡ � t  dt¡ t| |d�}W 5 Q R X n&tj||d�� t| |d�}W 5 Q R X t||ƒ d S )NrS  )re  rŒ   )rY  rZ  r[  r   r(   r�   r  r   )ÚlambdasZexpected_lambdasZw_typeZw_msgre  Zlambdas_fixedr[   r[   r\   Ú test_check_psd_eigenvalues_valid  s    
 ÿ ÿrg  )r?   y              @z/There are significant imaginary parts in eigenv)éûÿÿÿrz   z,All eigenvalues are negative \(maximum is -1)r?   rz   z*There are significant negative eigenvaluesga2U0*©3?g�íµ ÷ÆÀ¾gñhãˆµøä>g»½×Ùß|ë½)Zsignificant_imagzall negativezsignificant negzsignificant neg float32zsignificant neg float64zlambdas, err_type, err_msgc              	   C   s&   t j||d�� t| ƒ W 5 Q R X d S )NrŒ   )r�   r�   r(   )rf  Zerr_typer¢   r[   r[   r\   Ú"test_check_psd_eigenvalues_invalidQ  s    	ri  c               	   C   s¨  t  d¡d d d… } | jd r"t‚t| t  d¡d�} | jd sBt‚td t  d¡d�} t| t  d¡ƒ tdt  d¡d�} t| dt  d¡ ƒ tjtd	d
�� tt  d¡t  d¡d� W 5 Q R X d}tjt|d
�� tt  d¡t  d¡d� W 5 Q R X t  d¡}t jdt j	d�} t| |ƒ} | j
t j	k�s(t‚t jdtd�}td ||j
d�} | j
t jk�sXt‚t  d¡}t  t|ƒ¡} d| d< d}tjt|d
�� t| |dd� W 5 Q R X d S )Nr9   r>   rw   )r?   r`   rj   )r?   r>   r?   r8  z)Sample weights must be 1D array or scalarrŒ   )r>   rf   rI  z/sample_weight.shape == \(4,\), expected \(2,\)!rf   r:   iöÿÿÿrz   z1Negative values in data passed to `sample_weight`T)Zonly_non_negative)rB   rC   r|   rG   r*   r   r�   r�   r‘   rF   r;   r¡   rJ   r0   )r‰   rÎ   rX   r¢   r[   r[   r\   Útest_check_sample_weight^  s4    ""


rj  rT   c                 C   s6   t  d¡ dd¡}| |ƒ| |ƒ }}t||ƒs2t‚d S )NrÕ   r8   ©rB   rE   rg   r%   rG   ©rT   Úbaserl   r‹   r[   r[   r\   Ú!test_allclose_dense_sparse_equalsŠ  s    rn  c                 C   s:   t  d¡ dd¡}| |ƒ| |d ƒ }}t||ƒr6t‚d S )NrÕ   r8   r`   rk  rl  r[   r[   r\   Ú%test_allclose_dense_sparse_not_equals‘  s    ro  c              	   C   sJ   t  d¡ dd¡}| |d ƒ}d}tjt|d�� t||ƒ W 5 Q R X d S )NrÕ   r8   r`   zFCan only compare two sparse matrices, not a sparse matrix and an arrayrŒ   )rB   rE   rg   r�   r�   r‘   r%   )rT   rl   r‹   rÎ   r[   r[   r\   Ú test_allclose_dense_sparse_raise˜  s
    rp  c               	   C   sÚ   t dddœdd„ƒ} tjtdd�� | dddƒ W 5 Q R X tjtd	d�� | dddd
ƒ W 5 Q R X t dddddœdd„ƒ}tjtdd�� |ddƒ W 5 Q R X t dddœdd„ƒ}tjtdd�� |ddƒ W 5 Q R X d S )Nr`   ©rÊ   Údc                S   s   d S r  r[   ©r›   rœ   rÊ   rr  r[   r[   r\   Úf1£  s    z=test_deprecate_positional_args_warns_for_function.<locals>.f1úPass c=3 as keyword argsrŒ   r>   r8   úPass c=3, d=4 as keyword argsrf   )rœ   rÊ   rr  c                S   s   d S r  r[   rs  r[   r[   r\   Úf2­  s    z=test_deprecate_positional_args_warns_for_function.<locals>.f2zPass b=2 as keyword argsc                S   s   d S r  r[   rs  r[   r[   r\   Úf3µ  s    z=test_deprecate_positional_args_warns_for_function.<locals>.f3)r`   ©r,   r�   r  ÚFutureWarning)rt  rw  rx  r[   r[   r\   Ú1test_deprecate_positional_args_warns_for_function¢  s    r{  c               	   C   s:   t dd�dd„ ƒ} tjtdd�� | ddƒ W 5 Q R X d S )	Nú1.1)Úversionc                S   s   d S r  r[   )r›   rœ   r[   r[   r\   rt  ¾  s    zEtest_deprecate_positional_args_warns_for_function_version.<locals>.f1z,From version 1.1 passing these as positionalrŒ   r`   r>   ry  )rt  r[   r[   r\   Ú9test_deprecate_positional_args_warns_for_function_version½  s    
 ÿr~  c               	   C   s¼   G dd„ dƒ} t jtdd�� | dddƒ W 5 Q R X t jtdd�� | dddd	ƒ W 5 Q R X G d
d„ dƒ}t jtdd�� |dddƒ W 5 Q R X t jtdd�� |dddd	ƒ W 5 Q R X d S )Nc                   @   s    e Zd Zedddœdd„ƒZdS )z:test_deprecate_positional_args_warns_for_class.<locals>.A1r`   rq  c                S   s   d S r  r[   ©r  r›   rœ   rÊ   rr  r[   r[   r\   rM  Ê  s    zCtest_deprecate_positional_args_warns_for_class.<locals>.A1.__init__N©r–   r  r  r,   rM  r[   r[   r[   r\   ÚA1É  s   r�  ru  rŒ   r`   r>   r8   rv  rf   c                   @   s"   e Zd Zeddddœdd„ƒZdS )z:test_deprecate_positional_args_warns_for_class.<locals>.A2r`   rq  c                S   s   d S r  r[   r  r[   r[   r\   rM  Õ  s    zCtest_deprecate_positional_args_warns_for_class.<locals>.A2.__init__N)r`   r`   r€  r[   r[   r[   r\   ÚA2Ô  s   r‚  )r�   r  rz  )r�  r‚  r[   r[   r\   Ú.test_deprecate_positional_args_warns_for_classÈ  s    rƒ  rç   c              	   C   sì   t j dd¡}ddddgt  ddddg¡t ddddg¡jt ddddg¡ddd dœ}t||| ƒ}| d k	rn| ntt	|j
d ƒƒ}dD ]}|| || ks„t‚q„|d	 t|d	 |ƒks¸t‚t|d
 t|d
 |ƒƒ t|d t|d |ƒƒ d S )Nrf   r>   r`   r8   Zxxx)r#  rž   ú
sparse-colú
sparse-rowú
scalar-intú
scalar-strÚNoner   )r…  r†  r‡  rˆ  r#  rž   r„  )rB   ÚrandomZrandnrž   rR   rS   r{   r'   r#  Úrangerp   rG   r   r   r   )rç   rX   Z
fit_paramsr¶   Zindices_Úkeyr[   r[   r\   Útest_check_fit_paramsà  s&    
ù	 ÿrŒ  Ú	sp_formatc                 C   sd   t  d¡}tddƒ}|jj |¡}t|| d�}| dkr:d} t |¡sHt	‚|j
| ksVt	‚t||ƒ d S )NrÈ   r9   r8   rß   Trª   )r�   r   r   rÌ   ÚsparseZfrom_spmatrixr   rR   r  rG   r²   r   )r�  rÍ   Zsp_matZsdfr¶   r[   r[   r\   Ú"test_check_sparse_pandas_sp_formatù  s    

r�  zntype1, ntype2)Ú
longdoublerÖ   )rÖ   rF   )rF   Údouble)rM   rD   )rD   Úlong)ÚbyterO   )ÚushortrP   )rP   Úuint64)rN   rL   c              	   C   s˜   t  d¡}| |jjdddg| dd�|jjdddg|dd�dœ¡}t|jƒtdƒk r„d}t jt|d�� t	|d	d
gd� W 5 Q R X nt	|d	d
gd� dS )zÜcheck that we raise an error with dataframe having
    sparse extension arrays with unsupported mixed dtype
    and pandas version below 1.1. pandas versions 1.1 and
    above fixed this issue so no error will be raised.rÈ   r   r`   ©r;   Z
fill_value©Zcol1Zcol2r|  z3Pandas DataFrame with mixed sparse extension arraysrŒ   r©   rã   rß   N)
r�   r   rÌ   ÚarraysÚSparseArrayr#   Ú__version__r�   r‘   r   )Úntype1Úntype2rÍ   r:  r¢   r[   r[   r\   Ú test_check_pandas_sparse_invalid  s    
þÿr�  z ntype1, ntype2, expected_subtyper‘  r�  rÖ   ZhalfrF   rJ   rL   r“  ÚshortrM   ZintcrD   Zintpr’  r¡   rI   ZlonglongÚint_ZubyterN   rO   r”  ZuintcrP   Zuintr•  ZuintpZ	ulonglongc                 C   sh   t  d¡}| |jjdddg| dd�|jjdddg|dd�dœ¡}t|ddgd�}t |j|¡sdt	‚d S )	NrÈ   r   r`   r–  r—  r©   rã   rß   )
r�   r   rÌ   r˜  r™  r   rB   Ú
issubdtyper;   rG   )r›  rœ  Zexpected_subtyperÍ   r:  rÙ   r[   r[   r\   Útest_check_pandas_sparse_valid1  s    
þÿr¡  Úconstructor_namerž   Z	dataframeZ
sparse_csrZ
sparse_cscc                 C   s2   dddgdddgg}t || ƒ}t|ƒdks.t‚dS )z$Check _num_features for array-likes.r`   r>   r8   rf   r?   r_   N)r   r/   rG   )r¢  rX   r[   r[   r\   Útest_num_featuresT  s    
r£  r›   rœ   rÊ   r6  g333333@g      @rb  rK   r„   ÚdictÚseriesc              	   C   s¢   t | |ƒ} |dkrd}n|dkr&d}n|}d|› �}t| dƒrH|d7 }n.t| d tƒr`|d	7 }nt| d tƒrv|d
7 }tjtt 	|¡d�� t
| ƒ W 5 Q R X d S )Nrž   znumpy.ndarrayr¥  zpandas.core.series.Seriesú5Unable to find the number of features from X of type rp   z with shape (3,)r   z" where the samples are of type strz# where the samples are of type dictrŒ   )r   rì   rh   rb  r¤  r�   r�   r°   ÚreÚescaper/   )rX   r¢  Zexpected_type_nameÚmessager[   r[   r\   Ú&test_num_features_errors_1d_containers_  s     
ÿ


rª  r9  c              	   C   s6   dt | ƒj› �}tjt|d�� t| ƒ W 5 Q R X d S )Nr¦  rŒ   )rc  r  r�   r�   r°   r/   )rX   rÎ   r[   r[   r\   Ú test_num_features_errors_scalars€  s    r«  Únamesrr  zlist-intrŠ  ÚdefaultZ
MultiIndexc              	   C   sb   t  d¡}|jddgddgddgg| d�}t ¡ � t dt¡ t|ƒ} W 5 Q R X | d	ks^t‚d	S )
z‘Get feature names with pandas dataframes without warning.

    Column names with consistent dtypes will not warn, such as int or MultiIndex.
    rÈ   r`   r>   rf   r?   r_   r)  rS  N)	r�   r   rÌ   rY  rZ  r[  rz  r-   rG   )r¬  rÍ   rX   r[   r[   r\   Ú2test_get_feature_names_pandas_with_ints_no_warning‡  s    

 
r®  c                  C   sP   t  d¡} dd„ tdƒD ƒ}| jdddgddd	gg|d
�}t|ƒ}t||ƒ dS )z)Get feature names with pandas dataframes.rÈ   c                 S   s   g | ]}d |› �‘qS )Zcol_r[   )r¬   rÛ   r[   r[   r\   r®   �  s     z1test_get_feature_names_pandas.<locals>.<listcomp>r8   r`   r>   rf   r?   r_   r)  N)r�   r   rŠ  rÌ   r-   r   )rÍ   rË   rX   Zfeature_namesr[   r[   r\   Útest_get_feature_names_pandasš  s
    
r¯  c                  C   s2   t  dddgdddgg¡} t| ƒ}|dks.t‚dS )z/Get feature names return None for numpy arrays.r`   r>   r8   rf   r?   r_   N)rB   rž   r-   rG   )rX   r¬  r[   r[   r\   Útest_get_feature_names_numpy¤  s    r°  znames, dtypesz['int', 'str']Úpizzaz['list', 'str']zint-strzlist-strc              	   C   sb   t  d¡}|jddgddgddgg| d�}t d|› d	�¡}t jt|d
�� t|ƒ} W 5 Q R X dS )zAGet feature names errors when the feature names have mixed dtypesrÈ   r`   r>   rf   r?   r_   r)  z]Feature names are only supported if all input features have string names, but your input has a.   as feature name / column name types. If you want feature names to be stored and validated, you must convert them all to strings, by using X.columns = X.columns.astype(str) for example. Otherwise you can remove feature / column names from your input data, or convert them all to a non-string data type.rŒ   N)r�   r   rÌ   r§  r¨  r�   r°   r-   )r¬  rµ   rÍ   rX   rÎ   r[   r[   r\   Ú%test_get_feature_names_invalid_dtypes«  s    

 
ÿr²  c                   @   s(   e Zd Zddd„Zdd„ Zd	dd„ZdS )
ÚPassthroughTransformerNc                 C   s   | j |dd� | S )NT)Úreset)Z_validate_datar  r[   r[   r\   r˜   Å  s    zPassthroughTransformer.fitc                 C   s   |S r  r[   )r  rX   r[   r[   r\   Ú	transformÉ  s    z PassthroughTransformer.transformc                 C   s
   t | |ƒS r  )r&   )r  Zinput_featuresr[   r[   r\   Úget_feature_names_outÌ  s    z,PassthroughTransformer.get_feature_names_out)N)N)r–   r  r  r˜   rµ  r¶  r[   r[   r[   r\   r³  Ä  s   
r³  c               	   C   sŒ   t  dddgg¡} tƒ  | ¡}| ¡ }t|dddgƒ ddg}tjtdd	�� | |¡ W 5 Q R X |`	tjtd
d	�� | ¡  W 5 Q R X dS )z4Check behavior of check_feature_names_in for arrays.r7  r6  r8  Zx0Úx1Úx2Úx10z*input_features should have length equal torŒ   z Unable to generate feature namesN)
rB   rž   r³  r˜   r¶  r   r�   r�   r‘   Zn_features_in_)rX   r   r¬  Zincorrect_len_namesr[   r[   r\   Útest_check_feature_names_inÐ  s    rº  c               	   C   s|   t  d¡} dddg}| jdddgg|d�}tƒ  |¡}| ¡ }t|dddgƒ t jtd	d
�� | dddg¡ W 5 Q R X dS )z?Check behavior of check_feature_names_in for pandas dataframes.rÈ   r›   rœ   rÊ   r7  r6  r8  r)  zinput_features is not equal torŒ   r·  r¸  Zx3N)	r�   r   rÌ   r³  r˜   r¶  r   r�   r‘   )rÍ   r¬  r:  r   r[   r[   r\   Ú"test_check_feature_names_in_pandasâ  s    

r»  c               	   C   s.   d} t jt| d�� ttƒ dƒ W 5 Q R X dS )z@Check the error message when passing an unknown response method.zKRandomForestRegressor has none of the following attributes: unknown_method.rŒ   Zunknown_methodN)r�   r�   r  r)   r	   )r¢   r[   r[   r\   Ú)test_check_response_method_unknown_methodð  s    ÿr¼  Úresponse_methodÚdecision_functionÚpredict_probaÚpredictc              	   C   s6   d| › d�}t jt|d�� ttƒ | ƒ W 5 Q R X dS )zUCheck the error message when a response method is not supported by the
    estimator.z7EstimatorWithFit has none of the following attributes: Ú.rŒ   N)r�   r�   r  r)   r   )r½  r¢   r[   r[   r\   Ú8test_check_response_method_not_supported_response_methodù  s    
ÿrÂ  c               	   C   s®   dg} t | ƒ}d}ddg}dd |¡› d�}tjt|d�� t||ƒ|ƒ W 5 Q R X ddg}t||ƒ|ƒ}|dksvt‚ddg} t | ƒ}dddg}t||ƒ|ƒ}|dksªt‚d	S )
z0Check that we can pass a list of ordered method.r¿  Zmocking_datar¾  rÀ  zD_MockEstimatorOnOffPrediction has none of the following attributes: z, rÁ  rŒ   N)r   Újoinr�   r�   r  r)   rG   )Zmethod_implementedZmy_estimatorrX   r½  r¢   Zmethod_name_predictingr[   r[   r\   Ú#test_check_response_method_list_str  s     ÿ
rÄ  c                  C   sJ   t dƒ} t|  ddg¡dd�}t ddg¡}|j|jks<t‚t||ƒ dS )zRegression test for gh-25145rÈ   TFr¤   N)r   r   rÑ   rB   rž   r;   rG   r   )rÍ   r0  Úexpectedr[   r[   r\   Ú#test_boolean_series_remains_boolean#  s
    rÆ  Úinput_valuesc                 C   sL   t dƒ}|j| dd�}t|ddddd�}t |jjtj¡s>t‚t	|| ƒ dS )zpCheck pandas array with extensions dtypes returns a numeric ndarray.

    Non-regression test for gh-25637.
    rÈ   ZInt32r:   NF)r;   r¥   r¨   rc   )
r   rž   r   rB   r   r;   rÜ   ÚfloatingrG   r   )rÇ  rÍ   Zinput_seriesr¶   r[   r[   r\   Ú!test_pandas_array_returns_ndarray-  s    ûrÉ  Úarray_namespaceznumpy.array_apizcupy.array_apic              
   C   sÆ   t  | ¡}|j|jddgd|jdgg|jd�}tdd��( t jtdd�� t|ƒ W 5 Q R X W 5 Q R X |j|j	ddgd|j	dgg|jd�}tdd��( t jtd	d�� t|ƒ W 5 Q R X W 5 Q R X d
S )z9Checks that Array API arrays checks non-finite correctly.r`   r   r8   r:   T)Zarray_api_dispatchr    rŒ   zinfinity or a value too largeN)
r�   r   rq   rU   rF   r   r�   r‘   r   r,  )rÊ  ZxpZX_nanZX_infr[   r[   r\   Ú)test_check_array_array_api_has_non_finite@  s    
$$rË  zextension_dtype, regular_dtype)r4  rK   )rÐ   rI   )rÇ   rJ   )r/  rQ   Úinclude_objectc                 C   s˜   t  d¡}| |jddddg|d�|jddddgd	d�d
œ¡}|r\|jddddgdd�|d< |j|d  | ¡d�}t|dd�}t|dd�}t||ƒ dS )zKCheck pandas extension arrays give the same result as non-extension arrays.rÈ   r`   r   r:   rÕ   r¦   rÔ   r_   rI   )r›   rÊ   r›   rœ   rÊ   rr  rQ   )r›   N)r�   r   rÌ   rÑ   ZassignrH   r   r   )Zextension_dtypeZregular_dtyperÌ  rÍ   Z	X_regularZX_extensionZX_regular_checkedZX_extension_checkedr[   r[   r\   Ú$test_check_array_multiple_extensionsQ  s    
þÿrÍ  )ÆÚ__doc__r\  r§  rY  Ú	itertoolsr   Úoperatorr   Útempfiler   ÚnumpyrB   r�   Zscipy.sparserŽ  rR   r   r-  Zsklearn._configr   Zsklearn.baser   Zsklearn.datasetsr   Zsklearn.ensembler	   Zsklearn.exceptionsr
   r   Zsklearn.linear_modelr   Z(sklearn.metrics.tests.test_score_objectsr   Zsklearn.neighborsr   Zsklearn.random_projectionr   Zsklearn.svmr   Zsklearn.utilsr   r   r   r   r   r   Zsklearn.utils._mockingr   r   Zsklearn.utils._testingr   r   r   r   r   r   r   r    r!   Zsklearn.utils.estimator_checksr"   Zsklearn.utils.fixesr#   Zsklearn.utils.validationr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r]   ÚmarkZparametrizer‰  rê   Ztocsrrd   rk   rt   r�   r,  rU   rq   r}   r‡   r’   rš   rŸ   rž   rQ   r£   r·   rÄ   rF   rJ   rÏ   rÓ   rØ   rÚ   rÝ   rÞ   rá   râ   Zfixturerñ   ró   rô   rú   r  r  r  r  r  r!  r#  r$  r%  r(  r+  r.  r2  r;  r=  r>  r?  rB  rE  rG  rS   r  r
  r  r	  Z
dia_matrixrH  rJ  rR  r^  r„   r°   r]  ÚIntegralrK   r¡   r‘   rd  Z_psd_cases_validÚvaluesÚkeysrg  Z_psd_cases_invalidri  rj  rn  ro  rp  r{  r~  rƒ  rŒ  r�  r�  rÈ  ÚintegerZunsignedintegerr¡  r£  rª  r«  rŠ  r®  r¯  r°  r²  r³  rº  r»  r¼  rÂ  rÄ  rÆ  rÉ  rË  rÍ  r[   r[   r[   r\   Ú<module>   sV   ,X*$
 ÿüòþ(þþþóþ	
jûþ

 ÿ
ýþ%	,


:*#$%  ÿ
 ÿ

øþ

ù
ù
ù
ù
ù
ù
ù
ù
ÿùÿùÿùŸþq
üüüüê

ýýýýýýë

ý
,


	
÷þðþþû÷,*ý
þ
ú	 ÿ

,üþ	