
    _nd                        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          Z G d d          Z	ej
                            d          d	             Z G d
 d          Z G d de          Z G d de          Z G d d          Z G d d          Z G d d          Zej
                            d          d             Z G d d          Zd Zd Zd Zej
                            d          d             Zd Zd ZdS )    N)if_delegate_has_method)available_ifc                       e Zd Zd ZdS )Prefixc                     d S N selfs    Glib/python3.11/site-packages/sklearn/utils/tests/test_metaestimators.pyfunczPrefix.func           N)__name__
__module____qualname__r   r	   r   r   r   r      s#            r   r   c                   P    e Zd ZdZ e            Z ed          d             ZdS )MockMetaEstimatorzThis is a mock meta estimatora_prefixdelegatec                     dS )!This is a mock delegated functionNr	   r
   s    r   r   zMockMetaEstimator.func   s	     	r   N)r   r   r   __doc__r   r   r   r   r	   r   r   r   r      sM        ''vxxHZ000  10  r   r   z,ignore:if_delegate_has_method was deprecatedc                      dt          t          j        d         j                  v sJ dt          t          j        j                  v sJ dt          t                      j        j                  v sJ d S )Nr   r   )strr   __dict__r   r   r	   r   r   test_delegated_docstringr      s    .#"6*23 3     /#6G6L6T2U2UUUUU.#6G6I6I6N6V2W2WWWWWWWr   c                   D    e Zd ZdZddZ ed          d             ZdS )MetaEstzA mock meta estimatorNc                 "    || _         || _        d S r   sub_estbetter_sub_est)r   r#   r$   s      r   __init__zMetaEst.__init__'   s    ,r   r#   r   c                     d S r   r	   r
   s    r   predictzMetaEst.predict+       r   r   )r   r   r   r   r%   r   r'   r	   r   r   r    r    $   sX        - - - - Y///  0/  r   r    c                   <    e Zd ZdZ ed          d             ZdS )MetaEstTestTuplez:A mock meta estimator to test passing a tuple of delegatesr"   r   c                     d S r   r	   r
   s    r   r'   zMetaEstTestTuple.predict3   r(   r   Nr   r   r   r   r   r'   r	   r   r   r*   r*   0   sD        DD%BCCC  DC  r   r*   c                   @    e Zd ZdZ eddg          d             ZdS )MetaEstTestListz9A mock meta estimator to test passing a list of delegatesr#   r$   r   c                     d S r   r	   r
   s    r   r'   zMetaEstTestList.predict;   r(   r   Nr,   r	   r   r   r.   r.   8   sI        CCi1A%BCCC  DC  r   r.   c                       e Zd ZdZd ZdS )
HasPredictz(A mock sub-estimator with predict methodc                     d S r   r	   r
   s    r   r'   zHasPredict.predictC   r   r   N)r   r   r   r   r'   r	   r   r   r1   r1   @   s)        22    r   r1   c                       e Zd ZdZdS )HasNoPredictz+A mock sub-estimator with no predict methodN)r   r   r   r   r	   r   r   r4   r4   G   s        55Dr   r4   c                   @    e Zd ZdZ ej        dej                  ZdS )HasPredictAsNDArrayz3A mock sub-estimator where predict is a NumPy array)
      )dtypeN)r   r   r   r   nponesint64r'   r	   r   r   r6   r6   M   s,        ==bggRX...GGGr   r6   c                     t          t          t                                d          sJ t          t          t                                d          rJ t          t	          t                      t                                d          rJ t          t	          t                      t                                d          sJ t          t	          t                      t                                d          rJ t          t          t                      t                                d          rJ t          t          t                      t                                d          sJ d S )Nr'   )hasattrr    r1   r4   r*   r.   r	   r   r   test_if_delegate_has_methodr?   S   s   7:<<(()44444w|~~..	:::::'GGSSSSS#JLL,..AA9MMMMM'
EEyQQQQQ|~~z||DDiPPPPP?:<<>>	JJJJJJJr   c                   D    e Zd ZdZddZ ed           d             ZdS )	AvailableParameterEstimatorzGThis estimator's `available` parameter toggles the presence of a methodT   c                 "    || _         || _        d S r   	availablereturn_value)r   rE   rF   s      r   r%   z$AvailableParameterEstimator.__init__a   s    "(r   c                     | j         S r   rE   ests    r   <lambda>z$AvailableParameterEstimator.<lambda>e   s    cm r   c                     | j         S )$This is a mock available_if function)rF   r
   s    r   available_funcz*AvailableParameterEstimator.available_funce   s       r   N)TrB   )r   r   r   r   r%   r   rN   r	   r   r   rA   rA   ^   sX        QQ) ) ) ) \++,,! ! -,! ! !r   rA   c                      dt          t          j        d         j                  v sJ dt          t          j        j                  v sJ dt          t                      j        j                  v sJ d S )NrM   rN   )r   rA   r   r   rN   r	   r   r   test_available_if_docstringrP   k   s    1S#,-=>F6 6     2S#2:6 6     2S#%%4<6 6      r   c                      t          t                      d          sJ t          t          d          d          rJ d S )NrN   FrH   )r>   rA   r	   r   r   test_available_ifrR   w   sI    .002BCCCCC2UCCCEUVVVVVVVr   c                     t                      } t                               |            t          d          } t          j        t          d          5  t                               |            d d d            d S # 1 swxY w Y   d S )NFrH   zDThis 'AvailableParameterEstimator' has no attribute 'available_func'match)rA   rN   pytestraisesAttributeErrorrI   s    r    test_available_if_unbound_methodrY   |   s    
 &
'
'C..s333
%
6
6
6C	T
 
 
 8 8 	$223777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   A<<B B c                  `    t          t                                } t          | d          sJ dS )zCheck 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    r6   r>   )	estimators    r   'test_if_delegate_has_method_numpy_arrayr\      s4     +--..I9i(((((((r   c                  j   t          j                    5  t          j        dt                     t	          d          } ddd           n# 1 swxY w Y   t          j        t          d          5  t          t          t                                d           ddd           dS # 1 swxY w Y   dS )z7Check the deprecation warning of if_delegate_has_methoderrorr'   r   Nz%if_delegate_has_method was deprecatedrT   )
warningscatch_warningssimplefilterFutureWarningr   rV   warnsr>   r    r1   )_s    r   &test_if_delegate_has_method_deprecatedre      s#    
	 	"	" 7 7g}555"I6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 
m+R	S	S	S 2 2
%%y1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s#   +AAA1*B((B,/B,c                      d} t          d|           }t          j        |j                  }t          j        |          } |            | k    sJ dS )zYCheck that available_if methods can be pickled.

    Non-regression test for #21344.
    r7   TrD   N)rA   pickledumpsrN   loads)rF   rJ   pickled_bytesunpickled_funcs       r   (test_available_if_methods_can_be_pickledrl      s[    
 L
%<
P
P
PCL!344M\-00N>|++++++r   )numpyr:   rV   r_   rg   sklearn.utils.metaestimatorsr   r   r   r   markfilterwarningsr   r    r*   r.   r1   r4   r6   r?   rA   rP   rR   rY   r\   re   rl   r	   r   r   <module>rq      s          ? ? ? ? ? ? 5 5 5 5 5 5       
        JKKX X LKX	 	 	 	 	 	 	 	    w       g          	 	 	 	 	 	 	 	/ / / / / / / / JKKK K LKK
! 
! 
! 
! 
! 
! 
! 
!	 	 	W W W
8 8 8  JKK) ) LK)	2 	2 	2	, 	, 	, 	, 	,r   