a
    �ù»j÷ˆ  ã                   @   s¼  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mZ d dlmZ d dlmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d	d
„ Z&ej' (de ¡dd„ ƒZ)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0G dd„ dƒZ1G dd„ dƒZ2G d d!„ d!ƒZ3ed"d#„ ƒZ4d$d%„ Z5d&d'„ Z6d(d)„ Z7ed*d+„ ƒZ8eej' (d,e5e6gd-gd.gd/œd0fe5e6gd1d2gd3œd4fg¡d5d6„ ƒƒZ9eej' (d7ej:e5e6gd8d-gid9d9d:d;�ej:e5e6gd<d=id9d9d>d;�ej:e5e6e7gd8d-gid?d9d@d;�ej:e5e6e7gd8d.gidAd9dBd;�ej:e6e7gd8dCgidDd9dEd;�ej:e5e6gd=d.gd/œd9dFdGd;�g¡dHdI„ ƒƒZ;dJdK„ Z<dLdM„ Z=dNdO„ Z>edPdQ„ ƒZ?edRdS„ ƒZ@G dTdU„ dUƒZAd�dWdX„ZBdYdZ„ ZCej'jDed[d\�d]d^„ ƒZEej' (d_d`eFfdaeGfdbejHfdcejIfgeJdddege!ƒ¢eJdfdgge ƒ¢dhdidj„ f‘dkdldj„ f‘dmdndj„ f‘doeKf‘¡ej' (dpejLejMfejNejMfejOejPfejQejPfg¡dqdr„ ƒƒZRdsdt„ ZSdudv„ ZTdwdx„ ZUej'jVe#e"dyƒkdzd\�ej' (d{dedgg¡ej' (d|ejLejNejOejQg¡d}d~„ ƒƒƒZWdd€„ ZXd�d‚„ ZYej'jDedƒd\�d„d…„ ƒZZej' (d{dddfej:deej'jVe#e"dyƒk dzd\�d†�ej:dgej'jVe#e"dyƒk dzd\�d†�g¡d‡dˆ„ ƒZ[d‰dŠ„ Z\ej' (d‹eƒ ¡dŒd�„ ƒZ]ej' (d‹eƒ ¡dŽd�„ ƒZ^dS )‘é    N)Úsparse)ÚLinearDiscriminantAnalysis)ÚDecisionTreeClassifier)Ú
TempMemmapÚ_convert_containerÚ_delete_folderÚ_get_warnings_filters_info_listÚassert_allcloseÚassert_allclose_dense_sparseÚassert_docstring_consistencyÚ'assert_run_python_script_without_outputÚcheck_docstring_parametersÚcreate_memmap_backed_dataÚignore_warningsÚraisesÚset_random_stateÚskip_if_no_numpydocÚturn_warnings_into_errors)Ú
deprecated)Ú_IS_WASMÚCSC_CONTAINERSÚCSR_CONTAINERSÚparse_versionÚ
sp_version)Úavailable_ifc                  C   s2   t ƒ } tƒ }t| dƒ t|dƒ |jdks.J ‚d S )Né   )r   r   r   Zrandom_state)ZldaÚtree© r   úFE:\soccer\ml_env\Lib\site-packages\sklearn/utils/tests/test_testing.pyÚtest_set_random_state'   s
    

r   Úcsr_containerc              	   C   s  t  d¡ dd¡}d}| |ƒ}||fD ]J}tjt|d�� t||d ƒ W d   ƒ n1 s\0    Y  t||ƒ q&tjtdd�� t||ƒ W d   ƒ n1 s 0    Y  tj	t  
d¡dd	� ¡ }| t  
d
¡ƒ}tjtdd�� t||ƒ W d   ƒ n1 sþ0    Y  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reshapeÚpytestr   ÚAssertionErrorr
   Ú
ValueErrorr   ZdiagsÚonesZtocsr)r    ÚxÚmsgÚyÚXÚAÚBr   r   r   Ú!test_assert_allclose_dense_sparse0   s    ,(r3   c                     s²  dd„ ‰dd„ ‰ t  ¡ �. t  d¡ tˆƒ tˆtd� W d   ƒ n1 sL0    Y  t t¡� tˆtd�ƒ  W d   ƒ n1 s„0    Y  t ¡ �} tˆ td�ƒ  W d   ƒ n1 sº0    Y  t	| ƒdksÔJ ‚t
| d jtƒsèJ ‚t
| d	 jtƒsüJ ‚t ¡ �} tˆ td�ƒ  W d   ƒ n1 �s*0    Y  t	| ƒd	k�sFJ ‚t
| d jtƒ�s\J ‚t  ¡ �* t  d¡ tˆttfd� W d   ƒ n1 �s–0    Y  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  d¡ |ƒ  |ƒ  |ƒ  W d   ƒ n1 �s`0    Y  t t¡� |ƒ  W d   ƒ n1 �s’0    Y  t t¡� |ƒ  W d   ƒ n1 �sÄ0    Y  t t¡� |ƒ  W d   ƒ n1 �sö0    Y  ‡fdd„}‡ fdd„}‡fdd„}	‡fdd„}
‡ fdd„}‡ fd d!„}t  ¡ �, t  d¡ |ƒ  |ƒ  |	ƒ  W d   ƒ n1 �s„0    Y  t t¡� |
ƒ  W d   ƒ n1 �s¶0    Y  t t¡� |ƒ  W d   ƒ n1 �sè0    Y  t t¡� |ƒ  W d   ƒ n1 �s0    Y  t}d"}tjt|d#��" t|ƒˆƒ}|ƒ  W d   ƒ n1 �sd0    Y  tjt|d#��  t|ƒd$d%„ ƒ}W d   ƒ n1 �s¤0    Y  d S )&Nc                   S   s   t  dt¡ d S ©Nzdeprecation warning©ÚwarningsÚwarnÚDeprecationWarningr   r   r   r   Ú_warning_functionG   s    z.test_ignore_warning.<locals>._warning_functionc                   S   s   t  dt¡ t  d¡ d S r4   r5   r   r   r   r   Ú_multiple_warning_functionJ   s    z7test_ignore_warning.<locals>._multiple_warning_functionÚerror©Úcategoryr$   r   r'   c                      s   ˆƒ  ˆ ƒ  d S ©Nr   r   ©r:   r9   r   r   Údecorator_no_warningi   s    z1test_ignore_warning.<locals>.decorator_no_warningc                      s
   ˆ ƒ  d S r>   r   r   ©r:   r   r   Údecorator_no_warning_multiplen   s    z:test_ignore_warning.<locals>.decorator_no_warning_multiplec                      s
   ˆ ƒ  d S r>   r   r   ©r9   r   r   Ú decorator_no_deprecation_warningr   s    z=test_ignore_warning.<locals>.decorator_no_deprecation_warningc                      s
   ˆ ƒ  d S r>   r   r   rC   r   r   Údecorator_no_user_warningv   s    z6test_ignore_warning.<locals>.decorator_no_user_warningc                      s
   ˆ ƒ  d S r>   r   r   rA   r   r   Ú)decorator_no_deprecation_multiple_warningz   s    zFtest_ignore_warning.<locals>.decorator_no_deprecation_multiple_warningc                      s
   ˆ ƒ  d S r>   r   r   rA   r   r   Ú"decorator_no_user_multiple_warning~   s    z?test_ignore_warning.<locals>.decorator_no_user_multiple_warningc                      s0   t ƒ � ˆ ƒ  W d   ƒ n1 s"0    Y  d S r>   )r   r   rC   r   r   Úcontext_manager_no_warning‘   s    z7test_ignore_warning.<locals>.context_manager_no_warningc                      s8   t ttfd�� ˆ ƒ  W d   ƒ n1 s*0    Y  d S ©Nr<   )r   r8   ÚUserWarningr   rA   r   r   Ú#context_manager_no_warning_multiple•   s    z@test_ignore_warning.<locals>.context_manager_no_warning_multiplec                      s4   t td�� ˆ ƒ  W d   ƒ n1 s&0    Y  d S rI   ©r   r8   r   rC   r   r   Ú&context_manager_no_deprecation_warning™   s    zCtest_ignore_warning.<locals>.context_manager_no_deprecation_warningc                      s4   t td�� ˆ ƒ  W d   ƒ n1 s&0    Y  d S rI   ©r   rJ   r   rC   r   r   Úcontext_manager_no_user_warning�   s    z<test_ignore_warning.<locals>.context_manager_no_user_warningc                      s4   t td�� ˆ ƒ  W d   ƒ n1 s&0    Y  d S rI   rL   r   rA   r   r   Ú/context_manager_no_deprecation_multiple_warning¡   s    zLtest_ignore_warning.<locals>.context_manager_no_deprecation_multiple_warningc                      s4   t td�� ˆ ƒ  W d   ƒ n1 s&0    Y  d S rI   rN   r   rA   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 r>   r   r   r   r   r   ÚtestÁ   s    z!test_ignore_warning.<locals>.test)r6   Úcatch_warningsÚsimplefilterr   r8   r)   ÚwarnsrJ   ÚFutureWarningÚlenÚ
isinstanceÚmessager   r+   )Úrecordr@   rB   rD   rE   rF   rG   rH   rK   rM   rO   rP   rQ   Zwarning_classr#   Zsilence_warnings_funcrR   r   r?   r   Útest_ignore_warningD   sˆ    

*,
,
.

0

&&&&

&&&&&r[   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    ra   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    rb   c                 C   s   ||  }|S r\   r   )r_   r^   r`   r   r   r   Úf_bad_orderï   s    rc   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   )r^   r_   Údr   r   r   Úf_too_many_param_docstring  s    re   c                 C   s   | | }|S )zˆFunction f

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

    Returns
    -------
    c : list
        Parameter c
    r   r]   r   r   r   Ú	f_missing  s    rf   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   )r^   r_   r`   rd   Úer   r   r   Úf_check_param_definition(  s    rh   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚKlassc                 C   s   d S r>   r   ©Úselfr0   r/   r   r   r   rf   <  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   rj   r   r   r   rb   ?  s    zKlass.f_bad_sectionsN)Ú__name__Ú
__module__Ú__qualname__rf   rb   r   r   r   r   ri   ;  s   ri   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   ©rk   r   r   r   Ú__init__R  s    zMockEst.__init__c                 C   s   |S r>   r   rj   r   r   r   ÚfitU  s    zMockEst.fitc                 C   s   |S r>   r   ©rk   r0   r   r   r   ÚpredictX  s    zMockEst.predictc                 C   s   |S r>   r   rs   r   r   r   Úpredict_proba[  s    zMockEst.predict_probac                 C   s   dS )Nç      ð?r   rs   r   r   r   Úscore^  s    zMockEst.scoreN)rl   rm   rn   rq   rr   rt   ru   rw   r   r   r   r   ro   Q  s
   ro   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)rk   rz   r   r   r   rq   c  s    zMockMetaEstimator.__init__c                 C   s   t | jdƒS )Nrt   ©Úhasattrrz   rp   r   r   r   Ú<lambda>m  ó    zMockMetaEstimator.<lambda>c                 C   s   | j  |¡S )z‹This is available only if delegate has predict.

        Parameters
        ----------
        y : ndarray
            Parameter y
        )rz   rt   rs   r   r   r   rt   m  s    	zMockMetaEstimator.predictc                 C   s   t | jdƒS )Nrw   r{   rp   r   r   r   r}   x  r~   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   rs   r   r   r   rw   x  s    zMockMetaEstimator.scorec                 C   s   t | jdƒS )Nru   r{   rp   r   r   r   r}   ƒ  r~   c                 C   s   |S )z�This is available only if delegate has predict_proba.

        Parameters
        ---------
        X : ndarray
            Parameter X
        r   rs   r   r   r   ru   ƒ  s    	zMockMetaEstimator.predict_probaz-Testing deprecated function with wrong paramsc                 C   s   dS )z,Incorrect docstring but should not be testedNr   rj   r   r   r   rr   Ž  s    zMockMetaEstimator.fitN)
rl   rm   rn   rq   r   rt   r   rw   ru   rr   r   r   r   r   rx   b  s   




	


rx   c                  C   s¸  t tƒ} | g ksJ ‚t tdgd�} | g ks.J ‚t tdgd�} | g ksHJ ‚tjtdd�� t tƒ W d   ƒ n1 st0    Y  tjtdd�� t tjƒ W d   ƒ n1 s¬0    Y  t tƒ} t	t
ƒ d�}|jj}| g d¢ksâJ ‚g d¢g d	¢g d
¢g d¢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†J d|| f ƒ‚�q†d S )Nr_   )ÚignorezUnknown section Resultsr"   zUnknown section Parameterry   )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'ú
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: cr€   ú- ['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: br€   r�   z+ ['a'])z=In function: sklearn.utils.tests.test_testing.Klass.f_missingúaParameters in function docstring have less items w.r.t. function signature, first missing item: Xr€   ú- ['X', 'y']ú+ []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'r€   z- ['X']z?   ^z+ ['y']Ú.ru   z&potentially wrong underline length... zParameters z--------- in z.scorez.fitr‚   rƒ   r„   z
"%s"
 not in 
"%s")r   ra   rf   r)   r   ÚRuntimeErrorrb   ri   rh   rx   ro   Ú	__class__rl   Úziprc   re   rt   ru   rw   rr   )Z	incorrectZ	mock_metaZmock_meta_nameÚmessagesr.   Úfr   r   r   Útest_check_docstring_parameters“  s‚    &(


ÿõ
ÿþú	
ÿûø¹Søþr‹   c                 C   s   dS )zéFunction one.

    Parameters
    ----------
    a : int,   float
        Parameter a.
        Second    line.

    b : str
        Parameter b.

    Returns
    -------
    c : int
       Returning

    d : int
       Returning
    Nr   ©r^   r_   r   r   r   Úf_one  s    r�   c                 C   s   dS )a  Function two.

    Parameters
    ----------
    a :   int, float
        Parameter a.
          Second line.

    b : str
        Parameter bb.

    e : int
        Extra parameter.

    Returns
    -------
    c : int
       Returning

    d : int
       Returning
    Nr   rŒ   r   r   r   Úf_two-  s    rŽ   c                 C   s   dS )zôFunction two.

    Parameters
    ----------
    a :   int, float
        Parameter a.

    b : str
        Parameter B!

    e :
        Extra parameter.

    Returns
    -------
    c : int
       Returning.

    d : int
       Returning
    Nr   rŒ   r   r   r   Úf_threeG  s    r�   c                   C   s>   t jtdd�� tdtgƒ W d  ƒ n1 s00    Y  dS )z1Check error raised when `objects` incorrect type.zAll 'objects' must be one ofr"   ÚstringN)r)   r   Ú	TypeErrorr   r�   r   r   r   r   Ú-test_assert_docstring_consistency_object_type`  s    r’   zobjects, kwargs, errorr^   r_   )Úinclude_paramsZexclude_paramszThe 'exclude_params' argumentFr`   )Úinclude_returnsZexclude_returnszThe 'exclude_returns' argumentc                 C   sB   t jt|d��  t| fi |¤Ž W d  ƒ n1 s40    Y  dS )z?Check `assert_docstring_consistency` argument checking correct.r"   N)r)   r   r‘   r   )ÚobjectsÚkwargsr;   r   r   r   Ú,test_assert_docstring_consistency_arg_checksg  s    r—   zobjects, kwargs, error, warnr“   Ú Ú
whitespace)Úidr”   TZincl_allzNThe description of Parameter 'a' is inconsistent between \['f_one',\n'f_two'\]z	2-1 groupzYThe description of Parameter 'b' is inconsistent between \['f_one'\] and\n\['f_two'\] andz1-1-1 grouprg   zPThe type specification of Parameter 'e' is inconsistent between\n\['f_two'\] andz
empty typez,Checking was skipped for Parameters: \['e'\]z	skip warnc                 C   sœ   |rDt jt|d��  t| fi |¤Ž W d  ƒ q˜1 s80    Y  nT|rˆt jt|d��  t| fi |¤Ž W d  ƒ q˜1 s|0    Y  nt| fi |¤Ž dS )z;Check `assert_docstring_consistency` gives correct results.r"   N)r)   r   r*   r   rU   rJ   )r•   r–   r;   r7   r   r   r   Ú!test_assert_docstring_consistency}  s    100r›   c                 C   s   dS )zôFunction four.

    Parameters
    ----------

    labels : array-like, default=None
        The set of labels to include when `average != 'binary'`, and their
        order if `average is None`. Labels present in the data can be excluded.
    Nr   ©Úlabelsr   r   r   Úf_four¸  s    
rž   c                 C   s   dS )a  Function five.

    Parameters
    ----------

    labels : array-like, default=None
        The set of labels to include when `average != 'binary'`, and their
        order if `average is None`. This is an extra line. Labels present in the
        data can be excluded.
    Nr   rœ   r   r   r   Úf_fiveÅ  s    rŸ   c                 C   s   dS )zñFunction six.

    Parameters
    ----------

    labels : array-like, default=None
        The group of labels to add when `average != 'binary'`, and the
        order if `average is None`. Labels present on them datas can be excluded.
    Nr   rœ   r   r   r   Úf_sixÓ  s    
r    c                  C   sH   d} t jt| d��" ttttgdd� W d  ƒ n1 s:0    Y  dS )z8Check `assert_docstring_consistency` difference message.aö  The description of Parameter 'labels' is inconsistent between
\['f_four'\] and \['f_five'\] and \['f_six'\]:

\*\*\* \['f_four'\]
--- \['f_five'\]
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

\*\*\* 10,25 \*\*\*\*

--- 10,30 ----

  'binary'`, and their order if `average is None`.
\+ This is an extra line.
  Labels present in the data can be excluded.

\*\*\* \['f_four'\]
--- \['f_six'\]
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

\*\*\* 1,25 \*\*\*\*

  The
! set
  of labels to
! include
  when `average != 'binary'`, and
! their
  order if `average is None`. Labels present
! in the data
  can be excluded.
--- 1,25 ----

  The
! group
  of labels to
! add
  when `average != 'binary'`, and
! the
  order if `average is None`. Labels present
! on them datas
  can be excluded.r"   T)r“   N)r)   r   r*   r   rž   rŸ   r    )r.   r   r   r   Ú+test_assert_docstring_consistency_error_msgà  s    *r¡   c                  C   sœ   d} t tttgdd |  ¡ ¡d� d}t tttgdd | ¡ ¡d� d}d}tjt|d��. t tttgdd | ¡ ¡d� W d	  ƒ n1 sŽ0    Y  d	S )
zACheck `assert_docstring_consistency` `descr_regex_pattern` works.zºThe (set|group) of labels to (include|add) when `average \!\= 'binary'`, and (their|the) order if `average is None`\.[\s\w]*\.* Labels present (on|in) (them|the) datas? can be excluded\.Tú )r“   Zdescr_regex_patternz(labels|average|binary)z#The set of labels to include when.+zCThe description of Parameter 'labels' in \['f_six'\] does not matchr"   N)	r   rž   rŸ   r    ÚjoinÚsplitr)   r   r*   )Z
regex_fullZregex_wordsZregex_errorr.   r   r   r   Ú5test_assert_docstring_consistency_descr_regex_pattern  s*    ÿýýýr¥   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚRegistrationCounterc                 C   s
   d| _ d S )Nr   )Únb_callsrp   r   r   r   rq   8  s    zRegistrationCounter.__init__c                 C   s    |  j d7  _ |jtu sJ ‚d S )Nr'   )r§   Úfuncr   )rk   Zto_register_funcr   r   r   Ú__call__;  s    zRegistrationCounter.__call__N)rl   rm   rn   rq   r©   r   r   r   r   r¦   7  s   r¦   Úrc                 C   s:   t |tjƒsJ ‚|dk}|jj|u s(J ‚tj | |¡ d S )Nrª   )rX   r(   ZmemmapÚ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 d   ƒ n1 sT0    Y  tjdkrxtj |¡rxJ ‚|jdks†J ‚d}t||d��,}t|||d� tj 	|j
¡}W d   ƒ n1 sÈ0    Y  tjdkrìtj |¡rìJ ‚|jdksúJ ‚d S )NÚregisterr   Úntr'   úr+©r®   r$   )r¦   ÚsetattrÚatexitr(   r,   r   r¯   ÚosÚpathÚdirnameÚfilenameÚnameÚexistsr§   )ÚmonkeypatchÚregistration_counterr­   ÚdataZtemp_folderr®   r   r   r   Útest_tempmemmapG  s     


,
,
r¿   zmemmap not fully supported)Úreasonc           
      C   s  t ƒ }|  td|¡ t d¡}t|ƒ}t||ƒ |jdks>J ‚t|dd�\}}t||ƒ |tj	 
|j¡ksnJ ‚|jdks|J ‚d}t||d�}t|||ƒ |jdks¦J ‚||d |d g}t|ƒ}t||ƒD ]\}}t||ƒ qÊ|jd	ksìJ ‚t|d
gƒ\}}	t||ƒ |	d
k�sJ ‚d S )Nr°   r   r'   T)Zreturn_folderr$   r²   r³   é   znot-an-array)r¦   r´   rµ   r(   r,   r   r¯   r§   r¶   r·   r¸   r¹   rˆ   )
r¼   r½   r­   r¾   Úfolderr®   Z
input_listZmmap_data_listZoutput_dataÚotherr   r   r   Útest_create_memmap_backed_data\  s,    



rÄ   z constructor_name, container_typeÚlistÚtupleÚarrayr   Z
sparse_csrZsparse_csr_arrayZ
sparse_cscZsparse_csc_arrayÚ	dataframec                   C   s   t  d¡jS ©NÚpandas)r)   ÚimportorskipZ	DataFramer   r   r   r   r}   †  r~   r}   Úseriesc                   C   s   t  d¡jS rÉ   )r)   rË   ZSeriesr   r   r   r   r}   ‡  r~   Úindexc                   C   s   t  d¡jS rÉ   )r)   rË   ÚIndexr   r   r   r   r}   ˆ  r~   Úslicezdtype, superdtypec                 C   sŽ   | dv r|ƒ }ddg}t || |d�}t||ƒs2J ‚| dv rTt t|d ƒ|¡sŠJ ‚n6t|dƒrn|j|ksŠJ ‚nt|dƒrŠ|jd |ksŠJ ‚dS )	z\Check that we convert the container to the right type of array with the
    right data type.)rÈ   ÚpolarsrÌ   Zpolars_seriesrÍ   r   r'   ©Údtype)rÅ   rÆ   rÍ   rÒ   ÚdtypesN)r   rX   r(   Z
issubdtypeÚtyper|   rÒ   rÓ   )Úconstructor_nameÚcontainer_typerÒ   Z
superdtypeÚ	containerZcontainer_convertedr   r   r   Útest_convert_container{  s    "ý

rØ   c                  C   s:   t  d¡ tdggddgdgd�} | jjd dks6J ‚d S )NrÊ   r-   rÈ   r1   ©Zcategorical_feature_namesr   r=   )r)   rË   r   rÓ   Ziloc)Údfr   r   r   Ú(test_convert_container_categories_pandas´  s
    
ÿrÛ   c                  C   s<   t  d¡} tdggddgdgd�}|jd |  ¡ ks8J ‚d S )NrÐ   r-   r1   rÙ   )r)   rË   r   ÚschemaZCategorical)ÚplrÚ   r   r   r   Ú(test_convert_container_categories_polars¼  s    
rÞ   c                  C   s@   t  d¡} tdggddgdgd�}t|jd jƒ| ju s<J ‚d S )NZpyarrowr-   r1   rÙ   r   )r)   rË   r   rÔ   rÜ   ZDictionaryType)ÚparÚ   r   r   r   Ú)test_convert_container_categories_pyarrowÂ  s    
rà   z1.8z-sparse arrays are available as of scipy 1.8.0rÕ   rÒ   c                 C   sN   ddg}t jtdt› �d�� t|| |d� W d  ƒ n1 s@0    Y  dS )z�Check that if we convert to sparse array but sparse array are not supported
    (scipy<1.8.0), we should raise an explicit error.r   r'   z&only available with scipy>=1.8.0, got r"   rÑ   N)r)   r   r+   r   r   )rÕ   rÒ   r×   r   r   r   Ú7test_convert_container_raise_when_sparray_not_availableÈ  s    	þrá   c               	   C   sJ  t tƒ� tƒ ‚W d   ƒ n1 s$0    Y  t tdd��} tdƒ‚W d   ƒ n1 sX0    Y  | jslJ ‚t tddgd��} tdƒ‚W d   ƒ n1 sš0    Y  | js®J ‚tj tdd��@ t tƒ�} tdƒ‚W d   ƒ n1 sä0    Y  W d   ƒ n1 �s0    Y  | j�rJ ‚tj tdd��D t tdd��} tƒ ‚W d   ƒ n1 �sT0    Y  W d   ƒ n1 �st0    Y  | j�rŠJ ‚tj tdd��F t tdd��} tdƒ‚W d   ƒ n1 �sÆ0    Y  W d   ƒ n1 �sæ0    Y  | j�rüJ ‚tj td	d��F t td
d��} tdƒ‚W d   ƒ n1 �s80    Y  W d   ƒ n1 �sX0    Y  | j�rnJ ‚tj tdd��H t td
dd��} tdƒ‚W d   ƒ n1 �s¬0    Y  W d   ƒ n1 �sÌ0    Y  | j�râJ ‚tj tdd��: t tƒ�} W d   ƒ n1 �s0    Y  W d   ƒ n1 �s20    Y  | j�rHJ ‚t td
dd��} W d   ƒ n1 �sn0    Y  | j�r„J ‚t ttfƒ� tƒ ‚W d   ƒ n1 �s®0    Y  t ttfƒ� tƒ ‚W d   ƒ n1 �sâ0    Y  t  t¡�> t ttfƒ� W d   ƒ n1 �s0    Y  W d   ƒ n1 �s<0    Y  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   r‘   Zraised_and_matchedr)   r+   r*   )Úcmr   r   r   Útest_raisesÚ  sX    
$&
&

FFHÿHH
@ &&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 d   ƒ n1 sP0    Y  t tjdgtjd�dƒ t t¡�( t tjdgtjd�dƒ W d   ƒ n1 sª0    Y  t t¡�( t tjdgtjd�dƒ W d   ƒ n1 sì0    Y  t tjdgtjd�dd	d
� d S )Ngãˆµø ð?rÑ   rv   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    666rç   zcannot start subprocessc                  C   sÐ   d} t | ƒ d} tjtdd�� t | ƒ W d   ƒ n1 s<0    Y  d} tjtdd�� t | dd� W d   ƒ n1 sz0    Y  d d	d
g¡} tjtdd�� t | dd� W d   ƒ n1 sÂ0    Y  d S )Nzx = 1zprint('something to stdout')zExpected no outputr"   z:output was not supposed to match.+got.+something to stdoutz
to.+stdout)ÚpatternÚ
z
import sysz-print('something to stderr', file=sys.stderr)z:output was not supposed to match.+got.+something to stderrz
to.+stderr)r   r)   r   r*   r£   )Úcoder   r   r   Ú,test_assert_run_python_script_without_output2  s"    &þ*þrë   )Zmarksc                 C   s    t jddddd�}t|| ƒ dS )zyNon-regression test to check that we can still convert a sparse container
    from a given format to another format.
    é
   gš™™™™™¹?Zcsr)ZdensityÚformatN)r   Úrandomr   )rÕ   ZX_sparser   r   r   Ú'test_convert_container_sparse_to_sparseJ  s    rï   c                 C   sö   | j dkrR|rRtj| j| jd��" tj| j| jd� W d   ƒ n1 sH0    Y  | j dkròtjdd��z}| j}d|v r|d}tj|| jd� |ržt|ƒd	ks¦nd
s¦J ‚|rÔt	|d	 jƒ|ksÀJ ‚|d	 j| jksÔJ ‚W d   ƒ n1 sè0    Y  d S )Nr;   r"   )rY   r=   r   T)rZ   ZPyarrowz*
Pyarrow will become a required dependencyr   r'   )
Úactionr)   r   r=   rY   r6   r7   rS   rW   Ústr)Úwarning_infoÚwarnings_as_errorsrZ   rY   r   r   r   Úcheck_warnings_as_errorsg  s&    þ$
þrô   rò   c                 C   s"   t j dd¡dk}t| |d� d S )NZSKLEARN_WARNINGS_AS_ERRORSÚ0©ró   )r¶   ÚenvironÚgetrô   )rò   ró   r   r   r   Útest_sklearn_warnings_as_errors  s    rù   c                 C   s>   t  ¡ �" tƒ  t| dd� W d   ƒ n1 s00    Y  d S )NTrö   )r6   rS   r   rô   )rò   r   r   r   Útest_turn_warnings_into_errors…  s    
rú   )rª   )_rµ   r¶   r6   Ú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   r   Zsklearn.utils.deprecationr   Zsklearn.utils.fixesr   r   r   r   r   Zsklearn.utils.metaestimatorsr   r   ÚmarkZparametrizer3   r[   ra   rb   rc   re   rf   rh   ri   ro   rx   r‹   r�   rŽ   r�   r’   r—   Úparamr›   rž   rŸ   r    r¡   r¥   r¦   r¯   r¿   ZxfailrÄ   rÅ   rÆ   ZndarrayZ
csr_matrixrˆ   rÏ   Zint32ÚintegerZint64rå   Zfloatingræ   rØ   rÛ   rÞ   rà   Zskipifrá   rä   rç   rë   rï   rô   rù   rú   r   r   r   r   Ú<module>   sL  D	
 1
 
ý
ýúþÿø
ø
ø

ûÝþ.
0
%	

üùø	
÷

ö
õôþ



üþ	
þF

þþ
þþöþ

