U
    _»{jûW  ã                   @   s2  d dl Z d dlZd dl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mZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ dd	„ Z d
d„ Z!dd„ Z"dd„ Z#dd„ Z$G dd„ dej%ƒZ&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dd„ Z,G d d!„ d!ƒZ-G d"d#„ d#ƒZ.G d$d%„ d%ƒZ/d&d'„ Z0G d(d)„ d)ƒZ1dJd+d,„Z2d-d.„ Z3ej4 5d/d0d1g¡d2d3„ ƒZ6ej4 5d4d5e7fd6e8fd7ej9fd8ej:fd9ej:fd:ej;fd;d<d=„ fd>d?d=„ fd@dAd=„ fdBe<fg
¡ej4 5dCej=ej>fej?ej>fej@ejAfejBejAfg¡dDdE„ ƒƒZCdFdG„ ZDdHdI„ ZEdS )Ké    N)Úsparse)ÚLinearDiscriminantAnalysis)ÚDecisionTreeClassifier)Ú
TempMemmapÚ_convert_containerÚ_delete_folderÚassert_allcloseÚassert_allclose_dense_sparseÚassert_no_warningsÚassert_raise_messageÚassert_raisesÚassert_raises_regexÚcheck_docstring_parametersÚcreate_memmap_backed_dataÚignore_warningsÚraisesÚset_random_state)Ú
deprecated)Úavailable_ifc                  C   s2   t ƒ } tƒ }t| dƒ t|dƒ |jdks.t‚d S )Né   )r   r   r   Zrandom_stateÚAssertionError)ZldaÚtree© r   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/utils/tests/test_testing.pyÚtest_set_random_state    s
    

r   c               
   C   sÔ   t  d¡ dd¡} d}t | ¡}| |fD ]6}tjt|d�� t||d ƒ W 5 Q R X t||ƒ q(tjt	dd�� t| |ƒ W 5 Q R X tj
t  d¡dd	� ¡ }t t  d
¡¡}tjtdd�� t||ƒ W 5 Q R X d S )Né	   r   zNot equal to tolerance ©Úmatché   zCan only compare two sparseé   r   )Úoffsets)é   r   zArrays are not equal)ÚnpZarangeZreshaper   Ú
csc_matrixÚpytestr   r   r	   Ú
ValueErrorZdiagsÚonesZtocsrÚ
csr_matrix)ÚxÚmsgÚyÚXÚAÚBr   r   r   Ú!test_assert_allclose_dense_sparse)   s    
r.   c                
   C   s2   t tdƒ� ttdd�� W 5 Q R X W 5 Q R X d S )NzHello world)r)   )r   r   r   r%   r   r   r   r   Útest_assert_raises_msg<   s    r/   c                  C   sj   dd„ } dd„ }t td| dƒ ttt td| dƒ ttt td| dƒ ttt td|ƒ ttt ttfd|ƒ d S )Nc                 S   s   t | ƒ‚d S ©N)r%   )Úmessager   r   r   Ú_raise_ValueErrorC   s    z4test_assert_raise_message.<locals>._raise_ValueErrorc                   S   s   d S r0   r   r   r   r   r   Ú	_no_raiseF   s    z,test_assert_raise_message.<locals>._no_raiseÚtestzsomething else)r   r%   r   r   Ú	TypeErrorÚAttributeError)r2   r3   r   r   r   Útest_assert_raise_messageB   s6    ú	ú	ûr7   c               	      s²  dd„ ‰dd„ ‰ t tˆƒƒ t tˆtd�ƒ t t¡� tˆtd�ƒ  W 5 Q R X t t¡� tˆ td�ƒ  W 5 Q R X t t¡� tˆ td�ƒ  W 5 Q R X t tˆttfd�ƒ t‡ ‡fdd„ƒ} tttfd�‡ fdd	„ƒ}ttd�‡fd
d„ƒ}ttd�‡fdd„ƒ}ttd�‡ fdd„ƒ}ttd�‡ fdd„ƒ}t | ƒ t |ƒ t |ƒ t t¡� |ƒ  W 5 Q R X t t¡� |ƒ  W 5 Q R X t t¡� |ƒ  W 5 Q R X ‡fdd„}‡ fdd„}‡fdd„}‡fdd„}	‡ fdd„}
‡ fdd„}t |ƒ t |ƒ t |ƒ t t¡� |	ƒ  W 5 Q R X t t¡� |
ƒ  W 5 Q R X t t¡� |ƒ  W 5 Q R X t}d}tjt|d�� t|ƒˆƒ}|ƒ  W 5 Q R X tjt|d�� t|ƒd d!„ ƒ}W 5 Q R X d S )"Nc                   S   s   t  dt¡ d S ©Nzdeprecation warning©ÚwarningsÚwarnÚDeprecationWarningr   r   r   r   Ú_warning_functionl   s    z.test_ignore_warning.<locals>._warning_functionc                   S   s   t  dt¡ t  d¡ d S r8   r9   r   r   r   r   Ú_multiple_warning_functiono   s    z7test_ignore_warning.<locals>._multiple_warning_function©Úcategoryc                      s   ˆƒ  ˆ ƒ  d S r0   r   r   ©r>   r=   r   r   Údecorator_no_warning�   s    z1test_ignore_warning.<locals>.decorator_no_warningc                      s
   ˆ ƒ  d S r0   r   r   ©r>   r   r   Údecorator_no_warning_multiple†   s    z:test_ignore_warning.<locals>.decorator_no_warning_multiplec                      s
   ˆ ƒ  d S r0   r   r   ©r=   r   r   Ú decorator_no_deprecation_warningŠ   s    z=test_ignore_warning.<locals>.decorator_no_deprecation_warningc                      s
   ˆ ƒ  d S r0   r   r   rE   r   r   Údecorator_no_user_warningŽ   s    z6test_ignore_warning.<locals>.decorator_no_user_warningc                      s
   ˆ ƒ  d S r0   r   r   rC   r   r   Ú)decorator_no_deprecation_multiple_warning’   s    zFtest_ignore_warning.<locals>.decorator_no_deprecation_multiple_warningc                      s
   ˆ ƒ  d S r0   r   r   rC   r   r   Ú"decorator_no_user_multiple_warning–   s    z?test_ignore_warning.<locals>.decorator_no_user_multiple_warningc                	      s   t ƒ � ˆ ƒ  W 5 Q R X d S r0   )r   r   rE   r   r   Úcontext_manager_no_warning¥   s    z7test_ignore_warning.<locals>.context_manager_no_warningc                	      s$   t ttfd�� ˆ ƒ  W 5 Q R X d S ©Nr?   )r   r<   ÚUserWarningr   rC   r   r   Ú#context_manager_no_warning_multiple©   s    z@test_ignore_warning.<locals>.context_manager_no_warning_multiplec                	      s    t td�� ˆ ƒ  W 5 Q R X d S rK   ©r   r<   r   rE   r   r   Ú&context_manager_no_deprecation_warning­   s    zCtest_ignore_warning.<locals>.context_manager_no_deprecation_warningc                	      s    t td�� ˆ ƒ  W 5 Q R X d S rK   ©r   rL   r   rE   r   r   Úcontext_manager_no_user_warning±   s    z<test_ignore_warning.<locals>.context_manager_no_user_warningc                	      s    t td�� ˆ ƒ  W 5 Q R X d S rK   rN   r   rC   r   r   Ú/context_manager_no_deprecation_multiple_warningµ   s    zLtest_ignore_warning.<locals>.context_manager_no_deprecation_multiple_warningc                	      s    t td�� ˆ ƒ  W 5 Q R X d S rK   rP   r   rC   r   r   Ú(context_manager_no_user_multiple_warning¹   s    zEtest_ignore_warning.<locals>.context_manager_no_user_multiple_warningzA'obj' should be a callable.+you should use 'category=UserWarning'r   c                   S   s   d S r0   r   r   r   r   r   r4   Ñ   s    z!test_ignore_warning.<locals>.test)	r
   r   r<   r$   ZwarnsrL   ÚFutureWarningr   r%   )rB   rD   rF   rG   rH   rI   rJ   rM   rO   rQ   rR   rS   Zwarning_classr   Zsilence_warnings_funcr4   r   rA   r   Útest_ignore_warningi   sr    ÿrU   c                   @   s   e Zd Zdd„ ZdS )Ú	TestWarnsc              	   C   s@   dd„ }t  t¡� t|ƒ W 5 Q R X tdd„ dƒdks<t‚d S )Nc                   S   s   t  d¡ dS )NZyor   )r:   r;   r   r   r   r   ÚfØ   s    
zTestWarns.test_warn.<locals>.fc                 S   s   | S r0   r   )r(   r   r   r   Ú<lambda>Þ   ó    z%TestWarns.test_warn.<locals>.<lambda>r!   )r$   r   r   r
   )ÚselfrW   r   r   r   Ú	test_warn×   s    zTestWarns.test_warnN)Ú__name__Ú
__module__Ú__qualname__r[   r   r   r   r   rV   Ö   s   rV   c                 C   s   | | }|S ©zªFunction f

    Parameters
    ----------
    a : int
        Parameter a
    b : float
        Parameter b

    Returns
    -------
    c : list
        Parameter c
    r   ©ÚaÚbÚcr   r   r   Úf_okä   s    rd   c                 C   s   | | }|S )zªFunction f

    Parameters
    ----------
    a : int
        Parameter a
    b : float
        Parameter b

    Results
    -------
    c : list
        Parameter c
    r   r`   r   r   r   Úf_bad_sections÷   s    re   c                 C   s   ||  }|S r_   r   )rb   ra   rc   r   r   r   Úf_bad_order
  s    rf   c                 C   s   | | }|S )zÈFunction f

    Parameters
    ----------
    a : int
        Parameter a
    b : int
        Parameter b
    c : int
        Parameter c

    Returns
    -------
    d : list
        Parameter c
    r   )ra   rb   Údr   r   r   Úf_too_many_param_docstring  s    rh   c                 C   s   | | }|S )zˆFunction f

    Parameters
    ----------
    a : int
        Parameter a

    Returns
    -------
    c : list
        Parameter c
    r   r`   r   r   r   Ú	f_missing2  s    ri   c                 C   s   | | | | S )zòFunction f

    Parameters
    ----------
    a: int
        Parameter a
    b:
        Parameter b
    c :
        This is parsed correctly in numpydoc 1.2
    d:int
        Parameter d
    e
        No typespec is allowed without colon
    r   )ra   rb   rc   rg   Úer   r   r   Úf_check_param_definitionC  s    rk   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚKlassc                 C   s   d S r0   r   ©rZ   r+   r*   r   r   r   ri   W  s    zKlass.f_missingc                 C   s   dS )zÔFunction f

        Parameter
        ---------
        a : int
            Parameter a
        b : float
            Parameter b

        Results
        -------
        c : list
            Parameter c
        Nr   rm   r   r   r   re   Z  s    zKlass.f_bad_sectionsN)r\   r]   r^   ri   re   r   r   r   r   rl   V  s   rl   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚMockEstc                 C   s   dS )ZMockEstimatorNr   ©rZ   r   r   r   Ú__init__m  s    zMockEst.__init__c                 C   s   |S r0   r   rm   r   r   r   Úfitp  s    zMockEst.fitc                 C   s   |S r0   r   ©rZ   r+   r   r   r   Úpredicts  s    zMockEst.predictc                 C   s   |S r0   r   rr   r   r   r   Úpredict_probav  s    zMockEst.predict_probac                 C   s   dS )Nç      ð?r   rr   r   r   r   Úscorey  s    zMockEst.scoreN)r\   r]   r^   rp   rq   rs   rt   rv   r   r   r   r   rn   l  s
   rn   c                   @   sh   e Zd Zdd„ Zedd„ ƒdd„ ƒZedd„ ƒedƒd	d
„ ƒƒZedd„ ƒdd„ ƒZedƒdd„ ƒZ	dS )ÚMockMetaEstimatorc                 C   s
   || _ dS )z©MetaEstimator to check if doctest on delegated methods work.

        Parameters
        ---------
        delegate : estimator
            Delegated estimator.
        N©Údelegate)rZ   ry   r   r   r   rp   ~  s    zMockMetaEstimator.__init__c                 C   s   t | jdƒS )Nrs   ©Úhasattrry   ro   r   r   r   rX   ˆ  rY   zMockMetaEstimator.<lambda>c                 C   s   | j  |¡S )z‹This is available only if delegate has predict.

        Parameters
        ----------
        y : ndarray
            Parameter y
        )ry   rs   rr   r   r   r   rs   ˆ  s    	zMockMetaEstimator.predictc                 C   s   t | jdƒS )Nrv   rz   ro   r   r   r   rX   “  rY   z%Testing a deprecated delegated methodc                 C   s   dS )zˆThis is available only if delegate has score.

        Parameters
        ---------
        y : ndarray
            Parameter y
        Nr   rr   r   r   r   rv   “  s    zMockMetaEstimator.scorec                 C   s   t | jdƒS )Nrt   rz   ro   r   r   r   rX   ž  rY   c                 C   s   |S )z�This is available only if delegate has predict_proba.

        Parameters
        ---------
        X : ndarray
            Parameter X
        r   rr   r   r   r   rt   ž  s    	zMockMetaEstimator.predict_probaz-Testing deprecated function with wrong paramsc                 C   s   dS )z,Incorrect docstring but should not be testedNr   rm   r   r   r   rq   ©  s    zMockMetaEstimator.fitN)
r\   r]   r^   rp   r   rs   r   rv   rt   rq   r   r   r   r   rw   }  s   




	


rw   c                  C   s¼  t jdddd� ttƒ} | g ks$t‚ttdgd�} | g ks>t‚ttdgd�} | g ksXt‚t jtdd�� ttƒ W 5 Q R X t jtd	d�� tt	jƒ W 5 Q R X tt
ƒ} ttƒ d
�}|jj}| dddgksÌt‚dddddgddddddgdddddgdddddgdd |› d!� d"dd#d$d%d$gdd |› d&� d' d(d)d*gdd |› d+� d(d)d*gdd |› d,� ddddgg}t|tttt	j|j|j|j|jgƒD ],\}}t|ƒ} || k�sŠtd-|| f ƒ‚�qŠd S ).NZnumpydocz+numpydoc is required to test the docstringsz1.2.0)ÚreasonZ
minversionrb   )ÚignorezUnknown section Resultsr   zUnknown section Parameterrx   zxsklearn.utils.tests.test_testing.f_check_param_definition There was no space between the param name and colon ('a: int')ztsklearn.utils.tests.test_testing.f_check_param_definition There was no space between the param name and colon ('b:')zwsklearn.utils.tests.test_testing.f_check_param_definition There was no space between the param name and colon ('d:int')z9In function: sklearn.utils.tests.test_testing.f_bad_orderznThere's a parameter name mismatch in function docstring w.r.t. function signature, at index 0 diff: 'b' != 'a'z
Full diff:z- ['b', 'a']z+ ['a', 'b']zHIn function: sklearn.utils.tests.test_testing.f_too_many_param_docstringz_Parameters in function docstring have more items w.r.t. function signature, first extra item: cz- ['a', 'b']z+ ['a', 'b', 'c']z?          +++++z7In function: sklearn.utils.tests.test_testing.f_missingzaParameters in function docstring have less items w.r.t. function signature, first missing item: bz+ ['a']z=In function: sklearn.utils.tests.test_testing.Klass.f_missingzaParameters in function docstring have less items w.r.t. function signature, first missing item: Xz- ['X', 'y']z+ []zIn function: z!sklearn.utils.tests.test_testing.z.predictznThere's a parameter name mismatch in function docstring w.r.t. function signature, at index 0 diff: 'X' != 'y'z- ['X']z?   ^z+ ['y']Ú.rt   z&potentially wrong underline length... zParameters z--------- in z.scorez.fitz
"%s"
 not in 
"%s")r$   Úimportorskipr   rd   r   ri   r   ÚRuntimeErrorre   rl   rk   rw   rn   Ú	__class__r\   Úziprf   rh   rs   rt   rv   rq   )Z	incorrectZ	mock_metaZmock_meta_nameÚmessagesr)   rW   r   r   r   Útest_check_docstring_parameters®  s¾    ýö
øöøø
ÿõ
ÿþú	
ÿûø¹Søþr„   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚRegistrationCounterc                 C   s
   d| _ d S )Nr   )Únb_callsro   r   r   r   rp   7  s    zRegistrationCounter.__init__c                 C   s    |  j d7  _ |jtkst‚d S )Nr!   )r†   Úfuncr   r   )rZ   Zto_register_funcr   r   r   Ú__call__:  s    zRegistrationCounter.__call__N)r\   r]   r^   rp   rˆ   r   r   r   r   r…   6  s   r…   Úrc                 C   s:   t |tjƒst‚|dk}|jj|ks(t‚tj | |¡ d S )Nr‰   )Ú
isinstancer"   Zmemmapr   ÚflagsÚ	writeableZtestingZassert_array_equal)Úinput_arrayZ	mmap_dataÚ	mmap_moderŒ   r   r   r   Úcheck_memmap?  s    r�   c              	   C   sÖ   t ƒ }|  td|¡ t d¡}t|ƒ�}t||ƒ tj 	|j
¡}W 5 Q R X tjdkrdtj |¡rdt‚|jdksrt‚d}t||d��"}t|||d� tj 	|j
¡}W 5 Q R X tjdkrÄtj |¡rÄt‚|jdksÒt‚d S )NÚregisterr   Úntr!   úr+)rŽ   r   )r…   ÚsetattrÚatexitr"   r&   r   r�   ÚosÚpathÚdirnameÚfilenameÚnameÚexistsr   r†   )ÚmonkeypatchÚregistration_counterr�   ÚdataZtemp_folderrŽ   r   r   r   Útest_tempmemmapF  s     




rž   ÚalignedFTc           	   	   C   s&  t ƒ }|  td|¡ t d¡}t||d�}t||ƒ |jdksBt‚t|d|d�\}}t||ƒ |t	j
 |j¡kstt‚|jdks‚t‚d}t|||d	�}t|||ƒ |jdks®t‚||d |d g}t||d�}t||ƒD ]\}}t||ƒ qÖ|jd
ksøt‚tjtdd�� t|dgdd� W 5 Q R X d S )Nr�   r   )rŸ   r!   T)Zreturn_folderrŸ   r   r’   )rŽ   rŸ   é   z`When creating aligned memmap-backed arrays, input must be a single array or a sequence of arraysr   znot-an-array)r…   r“   r”   r"   r&   r   r�   r†   r   r•   r–   r—   r˜   r‚   r$   r   r%   )	r›   rŸ   rœ   r�   r�   ÚfolderrŽ   Z
input_listZmmap_data_listr   r   r   Útest_create_memmap_backed_data[  s8    

  ÿ

ýr¢   z constructor_name, container_typeÚlistÚtupleÚarrayr   Z
sparse_csrZ
sparse_cscÚ	dataframec                   C   s   t  d¡jS ©NZpandas)r$   r   Z	DataFramer   r   r   r   rX   Š  rY   rX   Úseriesc                   C   s   t  d¡jS r§   )r$   r   ZSeriesr   r   r   r   rX   ‹  rY   Úindexc                   C   s   t  d¡jS r§   )r$   r   ÚIndexr   r   r   r   rX   Œ  rY   Úslicezdtype, superdtypec                 C   sŽ   | dkr|ƒ }ddg}t || |d�}t||ƒs2t‚| dkrTt t|d ƒ|¡sŠt‚n6t|dƒrn|j|ksŠt‚nt|dƒrŠ|jd |ksŠt‚dS )	z\Check that we convert the container to the right type of array with the
    right data type.)r¦   r¨   r©   r   r!   ©Údtype)r£   r¤   r©   r­   ÚdtypesN)	r   rŠ   r   r"   Z
issubdtypeÚtyper{   r­   r®   )Zconstructor_nameÚcontainer_typer­   Z
superdtypeÚ	containerZcontainer_convertedr   r   r   Útest_convert_container�  s     ý

r²   c               
   C   s–  t tƒ� tƒ ‚W 5 Q R X t tdd��} tdƒ‚W 5 Q R X | jsDt‚t tddgd��} tdƒ‚W 5 Q R X | jsrt‚tj tdd��" t tƒ�} tdƒ‚W 5 Q R X W 5 Q R X | jr²t‚tj tdd��$ t tdd��} tƒ ‚W 5 Q R X W 5 Q R X | jrôt‚tj tdd��& t tdd��} tdƒ‚W 5 Q R X W 5 Q R X | j�r:t‚tj td	d��& t td
d��} tdƒ‚W 5 Q R X W 5 Q R X | j�r€t‚tj tdd��( t td
dd��} tdƒ‚W 5 Q R X W 5 Q R X | j�rÈt‚tj tdd�� t tƒ�} W 5 Q R X W 5 Q R X | j�rt‚t td
dd��} W 5 Q R X | j�r(t‚t ttfƒ� tƒ ‚W 5 Q R X t ttfƒ� tƒ ‚W 5 Q R X t  t¡� t ttfƒ� W 5 Q R X W 5 Q R X d S )Nzhow are your   zhello how are youznot this onezthis will be raisedzthe failure message)Úerr_msgzthis is ignoredz,should contain one of the following patternsZhellozBad message)r   r³   zDid not raiseT)r   Zmay_pass)r   r5   Zraised_and_matchedr   r$   r%   )Úcmr   r   r   Útest_raises·  sZ    





 ÿ

rµ   c                	   C   sÚ   t tjdgtjd�dƒ t t¡� t tjdgtjd�dƒ W 5 Q R X t tjdgtjd�dƒ t t¡� t tjdgtjd�dƒ W 5 Q R X t t¡� t tjdgtjd�dƒ W 5 Q R X t tjdgtjd�dd	d
� d S )Ngãˆµø ð?r¬   ru   gâX·Ñ ð?g¹c^  ð?g5å¯5  ð?gñhãˆµøä>g        gñhãˆµøô>)Zatol)r   r"   r¥   Úfloat32r$   r   r   Úfloat64r   r   r   r   Ú"test_float32_aware_assert_allcloseý  s    """r¸   )r‰   )Fr”   r•   Zunittestr:   Únumpyr"   r$   Zscipyr   Zsklearn.discriminant_analysisr   Zsklearn.treer   Zsklearn.utils._testingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zsklearn.utils.deprecationr   Zsklearn.utils.metaestimatorsr   r   r.   r/   r7   rU   ZTestCaserV   rd   re   rf   rh   ri   rk   rl   rn   rw   r„   r…   r�   rž   ÚmarkZparametrizer¢   r£   r¤   Zndarrayr'   r#   r«   Zint32ÚintegerZint64r¶   Zfloatingr·   r²   rµ   r¸   r   r   r   r   Ú<module>   st   @	'm1 		

%


öþ



üþ	F