U
    ½mœdþ  ã                   @   s"  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 G dd„ dƒZG dd„ dƒZ	ej
 d¡d	d
„ ƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZej
 d¡dd„ ƒZG dd„ dƒZdd„ Zdd„ Zdd „ Zej
 d¡d!d"„ ƒZd#d$„ Zd%d&„ ZdS )'é    N)Úif_delegate_has_method)Úavailable_ifc                   @   s   e Zd Zdd„ ZdS )ÚPrefixc                 C   s   d S ©N© ©Úselfr   r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/utils/tests/test_metaestimators.pyÚfunc   s    zPrefix.funcN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   c                   @   s(   e Zd ZdZeƒ Zedd�dd„ ƒZdS )ÚMockMetaEstimatorzThis is a mock meta estimatorÚa_prefix©Zdelegatec                 C   s   dS )ú!This is a mock delegated functionNr   r   r   r   r	   r
      s    zMockMetaEstimator.funcN)r   r   r   Ú__doc__r   r   r   r
   r   r   r   r	   r      s   r   z,ignore:if_delegate_has_method was deprecatedc                   C   sF   dt tjd jƒkst‚dt tjjƒks,t‚dt tƒ jjƒksBt‚d S )Nr   r
   )Ústrr   Ú__dict__r   ÚAssertionErrorr
   r   r   r   r	   Útest_delegated_docstring   s
    
ÿ
r   c                   @   s,   e Zd ZdZd	dd„Zedd�dd„ ƒZdS )
ÚMetaEstzA mock meta estimatorNc                 C   s   || _ || _d S r   ©Úsub_estÚbetter_sub_est)r   r   r   r   r   r	   Ú__init__'   s    zMetaEst.__init__r   r   c                 C   s   d S r   r   r   r   r   r	   Úpredict+   s    zMetaEst.predict)N)r   r   r   r   r   r   r   r   r   r   r	   r   $   s   
r   c                   @   s"   e Zd ZdZedd�dd„ ƒZdS )ÚMetaEstTestTuplez:A mock meta estimator to test passing a tuple of delegatesr   r   c                 C   s   d S r   r   r   r   r   r	   r   3   s    zMetaEstTestTuple.predictN©r   r   r   r   r   r   r   r   r   r	   r   0   s   r   c                   @   s&   e Zd ZdZeddgd�dd„ ƒZdS )ÚMetaEstTestListz9A mock meta estimator to test passing a list of delegatesr   r   r   c                 C   s   d S r   r   r   r   r   r	   r   ;   s    zMetaEstTestList.predictNr   r   r   r   r	   r   8   s   r   c                   @   s   e Zd ZdZdd„ ZdS )Ú
HasPredictz(A mock sub-estimator with predict methodc                 C   s   d S r   r   r   r   r   r	   r   C   s    zHasPredict.predictN)r   r   r   r   r   r   r   r   r	   r    @   s   r    c                   @   s   e Zd ZdZdS )ÚHasNoPredictz+A mock sub-estimator with no predict methodN)r   r   r   r   r   r   r   r	   r!   G   s   r!   c                   @   s    e Zd ZdZejdejd�ZdS )ÚHasPredictAsNDArrayz3A mock sub-estimator where predict is a NumPy array)é
   é   )ZdtypeN)r   r   r   r   ÚnpZonesZint64r   r   r   r   r	   r"   M   s   r"   c                   C   s¤   t ttƒ ƒdƒst‚t ttƒ ƒdƒr(t‚t ttƒ tƒ ƒdƒr@t‚t ttƒ tƒ ƒdƒsXt‚t ttƒ tƒ ƒdƒrpt‚t ttƒ tƒ ƒdƒrˆt‚t ttƒ tƒ ƒdƒs t‚d S )Nr   )Úhasattrr   r    r   r!   r   r   r   r   r   r	   Útest_if_delegate_has_methodS   s    r'   c                   @   s.   e Zd ZdZddd„Zedd„ ƒdd	„ ƒZd
S )ÚAvailableParameterEstimatorzGThis estimator's `available` parameter toggles the presence of a methodTé   c                 C   s   || _ || _d S r   ©Ú	availableÚreturn_value)r   r+   r,   r   r   r	   r   a   s    z$AvailableParameterEstimator.__init__c                 C   s   | j S r   ©r+   ©Úestr   r   r	   Ú<lambda>e   ó    z$AvailableParameterEstimator.<lambda>c                 C   s   | j S )ú$This is a mock available_if function)r,   r   r   r   r	   Úavailable_funce   s    z*AvailableParameterEstimator.available_funcN)Tr)   )r   r   r   r   r   r   r3   r   r   r   r	   r(   ^   s   

r(   c                   C   sF   dt tjd jƒkst‚dt tjjƒks,t‚dt tƒ jjƒksBt‚d S )Nr2   r3   )r   r(   r   r   r   r3   r   r   r   r	   Útest_available_if_docstringk   s    
ÿ
ÿ
ÿr4   c                   C   s(   t tƒ dƒst‚t tdd�dƒr$t‚d S )Nr3   Fr-   )r&   r(   r   r   r   r   r	   Útest_available_ifw   s    r5   c               	   C   sB   t ƒ } t  | ¡ t dd�} tjtdd�� t  | ¡ W 5 Q R X d S )NFr-   zDThis 'AvailableParameterEstimator' has no attribute 'available_func'©Úmatch)r(   r3   ÚpytestZraisesÚAttributeErrorr.   r   r   r	   Ú test_available_if_unbound_method|   s    

þr:   c                  C   s   t tƒ ƒ} t| dƒst‚dS )zªCheck that we can check for an attribute that is a NumPy array.

    This is a non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/21144
    r   N)r   r"   r&   r   )Z	estimatorr   r   r	   Ú'test_if_delegate_has_method_numpy_arrayŒ   s    
r;   c               	   C   sX   t  ¡ � t  dt¡ tdd�} W 5 Q R X tjtdd�� ttt	ƒ ƒdƒ W 5 Q R X dS )z7Check the deprecation warning of if_delegate_has_methodÚerrorr   r   z%if_delegate_has_method was deprecatedr6   N)
ÚwarningsÚcatch_warningsÚsimplefilterÚFutureWarningr   r8   Zwarnsr&   r   r    )Ú_r   r   r	   Ú&test_if_delegate_has_method_deprecated—   s
    
rB   c                  C   s8   d} t d| d�}t |j¡}t |¡}|ƒ | ks4t‚dS )zYCheck that available_if methods can be pickled.

    Non-regression test for #21344.
    r#   Tr*   N)r(   ÚpickleÚdumpsr3   Úloadsr   )r,   r/   Zpickled_bytesZunpickled_funcr   r   r	   Ú(test_available_if_methods_can_be_pickled£   s
    
rF   )Únumpyr%   r8   r=   rC   Zsklearn.utils.metaestimatorsr   r   r   r   ÚmarkÚfilterwarningsr   r   r   r   r    r!   r"   r'   r(   r4   r5   r:   r;   rB   rF   r   r   r   r	   Ú<module>   s2   







