o
    \i4"                    @   s	  d Z ddlZddlZddlmZmZm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 ddlmZ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&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl3m8Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZF ddlGmHZH e e% e' e edde# e&dde g de! e" g
ZIe edde$ e e gZJeKdd eJD ZLeIeJ ZMe% e& e" gZNeOdZPeQdd ZReSg deSg d eSg d!eSg d"g dg d#fZTe ZUe	jVWd$ZXd%d& ZYd'd( ZZd)d* Z[dd+d,Z\d-d. Z]d/d0 Z^d1d2 Z_d3d4 Z`d5d6 Zae	jVbd7d8d9ge	jVbd:g d;e	jVbd<e%e$gd=d> Zce	jVbd7d8d9ge	jVbd:g d?e	jVbd<e%e$gd@dA ZddBdC Zee	jVbd<e%e$gdDdE ZfdFdG Zge	jVbd<ee%e$gdHdI ZhdJdK ZidLdM ZjdNdO ZkdPdQ ZldRdS Zme	jVbdTeSdgdU dgdU  eSg dVenddgddgddggfeSdgdW dgdX  eSg dYendZd[gdZd[gdZd[ggfgd\d] Zoe	jVbd^g d_e	jVbd`g dadbdc Zpddde Zqe	jVbdfe#e&ge	jVbdgg dhdidj Zre	jVbdgg dkdldm Zsdndo Ztdpdq Zudrds Zvdtdu Zwdvdw Zxdxdy Zydzd{ Zzd|d} Z{d~d Z|dd Z}dd Z~dd Zdd Zdd Ze	jVbde!e"gdd Zdd Zdd Zdd Zdd Zdd Ze	jVbdgg ddd Ze	jVjbde7 e5de	jVbddd9eeOdUedffdfdd Ze	jVbdeDdd Zdd Zdd Ze	jVbdeDeE eF dd Zdd Zdd Ze	jVbdg ddd Zdd Zdd Zdd Zdd Zdd Ze	jVbd<ee$ge	jVbd7d9d8gdd Zdd ZddÄ Zddń ZddǄ ZddɄ Ze@dd˄ Zdd̈́ Ze	jVbde#ee&fddЄ Zdd҄ ZddԄ Zddք Ze	jVbdee%e$efddل Ze	jVbdg e d9fed9dd܍d9fe% d9fe%d9dd܍d9fe$d9dd܍d9fe$ d9fe!ddݍd9fe"ddݍd9fe#ddݍd9feddݍd9fe&ddݍd9fe d9fed9dd܍d9fe' d9fe d9fe d9feddd9feddd9fed9dd܍d8fed9dd܍d8fe%d9ejdd܍d8fe%d9ejdd܍d8fe!ddݍd8fe!ejddݍd8fe"ddݍd8fe"ejddݍd8fe#ddݍd8fe#ejddݍd8feddݍd8feejddݍd8fe&ddݍd8fe&ejddݍd8fdd߄ Ze	jVjbdeMdd eMD ddd Ze	jVjbdeMdd eMD ddd Ze	jVjbdeIeddd Ze	jVjbdeNdd eND ddd ZdS )zTest the split module    N)combinationscombinations_with_replacementpermutations)stats)issparse)comb)config_context)load_digitsmake_classification)DummyClassifier)GridSearchCV
GroupKFoldGroupShuffleSplitKFoldLeaveOneGroupOutLeaveOneOutLeavePGroupsOut	LeavePOutPredefinedSplitRepeatedKFoldRepeatedStratifiedKFoldShuffleSplitStratifiedGroupKFoldStratifiedKFoldStratifiedShuffleSplitTimeSeriesSplitcheck_cvcross_val_scoretrain_test_split)_build_repr_validate_shuffle_split_yields_constant_splits)SVC)assert_request_is_empty)_convert_to_numpy_get_namespace_device_dtype_idsget_namespace)yield_namespace_device_dtype_combinationsdevice)MockDataFrame)assert_allcloseassert_array_almost_equalassert_array_equalignore_warnings)_array_api_for_tests)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS)_num_samples   p      ?	test_size   r;   r4   r4   r;   n_groupsc                 c   s    | ]}|j jV  qd S N)	__class____name__).0splitter rC   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>V   s    rE   
   r;   r;   r;   r;   r4   r4   r4      rH   rH   rH   rH   r   r   r   r;   r;   r;   r4   r4   r4   rH   rH   rH   r   r;   r4   rH   r   r;   r4   rH   r   r;   r4   rH   r   r;   r4   r;   r;   r4   r4   r4   rH   rH   rH      rL   rL   rL   rL   rL   rL   rL   1rN   rN   rN   2rO   rO   3rP   rP   rP   rP   z0error:The groups parameter:UserWarning:sklearn.*c                 C   s(   | j jtv r| j|||dS | ||S )Ngroups)r?   r@   GROUP_SPLITTER_NAMESsplit)rB   XyrR   rC   rC   rD   _splitq   s   rW   c            "      C   sL  d} d}d}d}d}t ddgddgddgdd	gg}t g d
}t g d}t g d
}t }	t|}
t|}t|}t }t|}tdd}t	g d}t
|}d}d}d}d}d}d}d}d}d}| t| ||||t|||d|g	}tt|	|
|||||||g	|||||||||g	D ]R\}\}}|| ||||ksJ t jtt||||tt|||| t||||D ]\}} t |jjdksJ t | jjdksJ q|t|ksJ qd}!tjt|!d |	d || W d    n1 sw   Y  tjt|!d |
d || W d    d S 1 sw   Y  d S )NrL   r4   rF   r;   rH               )r;   r4   rH   rL   r:   r   random_statezLeaveOneOut()zLeavePOut(p=2)z3KFold(n_splits=2, random_state=None, shuffle=False)z=StratifiedKFold(n_splits=2, random_state=None, shuffle=False)LeaveOneGroupOut()LeavePGroupsOut(n_groups=2)zJShuffleSplit(n_splits=10, random_state=0, test_size=None, train_size=None)z.PredefinedSplit(test_fold=array([1, 1, 2, 2]))zBStratifiedGroupKFold(n_splits=2, random_state=None, shuffle=False)iz%The 'X' parameter should not be None.match)nparrayr   r   r   r   r   r   r   r   r   r   	enumeratezipget_n_splitstestingassert_equallistrW   asarraydtypekindreprpytestraises
ValueError)"	n_samplesn_unique_groupsn_splitsr6   n_shuffle_splitsrU   X_1drV   rR   loolpokfskflololoposspssgkfloo_reprlpo_reprkf_reprskf_repr	lolo_repr	lopo_reprss_reprps_repr	sgkf_reprn_splits_expectedr`   cvcv_reprtraintestmsgrC   rC   rD   (test_cross_validator_with_default_paramsx   s   "
 $r   c                  C   sL  d} t jd}|jdd| dfd}|jdd| fd}|dd}|jdd| dfd}|jdd| fd}t tddt t t	 t
 t t td	d
t t tddtddt t|dg}|D ]C}tt||||d tt||||d ztt||||d W q` ty }	 zd}
d|
}|t|	v sJ W Y d }	~	q`d }	~	ww d S )N   r;   r   rH   r4   sizer5   r7   r8   r<   rt   )	test_foldrQ   )binary
multiclassz/Supported target types are: {}. Got 'multilabel)rc   randomRandomStaterandintreshaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rj   rW   rq   formatstr)rr   rngrU   rV   y_2dy_multilabelrR   	splittersrB   eallowed_target_typesr   rC   rC   rD   	test_2d_y   sJ   r   c                 C   sP   t | t |} }| |t  ksJ |d ur$| |t t|ks&J d S d S r>   )setintersectionunionrange)r   r   rr   rC   rC   rD   check_valid_split   s   r   c           
      C   s   t |}| ||||ksJ t }d}| |||D ]\}}	t||	|d |d7 }||	 q||ks6J |d urD|tt|ksFJ d S d S )Nr   )rr   r;   )r3   rg   r   rT   r   updater   )
r   rU   rV   rR   expected_n_splitsrr   collected_test_samples
iterationsr   r   rC   rC   rD   check_cv_coverage   s   r   c                  C   s  t ddgddgddgg} t ddgddgddgddgd	d
gg}tttd| f t g d}td}tjt	dd t||| W d    n1 sQw   Y  t
d}t t|}tjt	dd t|||| W d    n1 s|w   Y  t  td t|||d dd W d    n1 sw   Y  t  td t||||dd W d    n1 sw   Y  t g d}tt t||| W d    n1 sw   Y  tt t||| W d    n	1 sw   Y  tt td W d    n	1 sw   Y  tt td W d    n	1 s6w   Y  d}tjt|d td W d    n	1 sTw   Y  tjt|d td W d    n	1 spw   Y  tjt|d t
d W d    n	1 sw   Y  tjt|d t
d W d    n	1 sw   Y  tt td W d    n	1 sw   Y  tt td W d    n	1 sw   Y  tt td W d    n	1 sw   Y  tt td W d    n	1 sw   Y  tt t
d W d    n	1 s*w   Y  tt t
d W d    n	1 sDw   Y  tt tdd d W d    d S 1 saw   Y  d S )Nr;   r4   rH   rL   rX   rY   rZ   r[   	   rF   )rH   rH   r   r   rH   zThe least populated classra   ignorerR   r   )rH   rH   r   r   r4   r   z>k-fold cross-validation requires at least one train/test split      ?       @rt   shuffle)rc   rd   rq   nextr   rT   r   ro   warnsWarningr   arangelenwarningscatch_warningssimplefilterr   rp   	TypeError)X1X2rV   skf_3sgkf_3naive_groupserror_stringrC   rC   rD   test_kfold_valueerrors  s   (















$r   c                  C   sb   t d} td}t|| d d dd t d}td}t||d d dd dtd|ks/J d S )N   rH   )rV   rR   r      rX   )rc   onesr   r   rg   )r   ry   r   rC   rC   rD   test_kfold_indices[  s   

r   c                  C   s   ddgddgddgddgd	d
gg} t d| d d }t|\}}t|ddg t|ddg t|\}}t|ddg t|ddg t d| }t|\}}t|g d t|ddg t|\}}t|ddg t|g d d S )Nr;   r4   rH   rL   rX   rY   rZ   r[   r   rF   r   r   r   r;   r4   )r   rT   r   r-   )r   splitsr   r   rC   rC   rD   test_kfold_no_shufflek  s   "r   c                  C   s  t dg d} }td| |}t|\}}t|ddg t|ddg t|\}}t|ddg t|ddg t dg d} }td| |}t|\}}t|g d	 t|g d
 t|\}}t|g d
 t|g d	 dtd| |ksJ t d} g d}g d}t jt	td| |t	td| | g d}t 
|} t jt	td| |t	td| | d S )NrL   )r;   r;   r   r   r4   r   r;   rH   rZ   )r;   r;   r;   r   r   r   r   )r   r;   rH   rL   )r4   rX   rY   rX   )rN   rN   rN   0r   r   r   )r   r;   r   r;   r   r;   r   r;   )rc   r   r   rT   r   r-   rg   rh   ri   rj   	ones_liker   )rU   rV   r   r   r   y1y2rC   rC   rD    test_stratified_kfold_no_shuffle  s8   
$
$r   r   FTk)rL   rX   rY   rZ   r[   r   rF   kfoldc                 C   s  d}t |}t dgtd|  dgtd|   dgtd|   }t t|}t |t| }g }|s;d nd}	|| |	|d}
t|
|||d	D ]+\}}tt || t| |d
d tt || t| |d
d |	t| qLt 
|dksJ d S )N  rL   皙?r   {Gz?r;   {Gz?r]   r   rQ   {Gz?atol)rc   r   rd   intr   r   bincountrW   r+   appendptp)r   r   r   rr   rU   rV   rR   distr
test_sizesr]   rz   r   r   rC   rC   rD   test_stratified_kfold_ratios  s&   
  r   )rL   rY   rZ   c           
         s   d}t dgtd|  dgtd|   dgtd|   }t t| t t| fdd	}||}tg d
D ]}t ||}||}	|	|ksTJ qBd S )Nd   r4   r   r   r   r;   r   c                    s0   sd nd}dd t |d | dD S )Nr   c                 S   s    g | ]\}}t |t |fqS rC   )rj   )rA   r   r   rC   rC   rD   
<listcomp>  s    zNtest_stratified_kfold_label_invariance.<locals>.get_splits.<locals>.<listcomp>r   rQ   )rW   )rV   r]   rU   rR   r   r   r   rC   rD   
get_splits  s   z:test_stratified_kfold_label_invariance.<locals>.get_splitsr   )rc   rd   r   r   r   r   r   take)
r   r   r   rr   rV   r   splits_basepermy_permsplits_permrC   r   rD   &test_stratified_kfold_label_invariance  s"   r   c                  C   sf   t ddD ]+} tdjt| d}dd |D }t|t| dks'J t|| ks0J qd S )N   r   rX   rU   c                 S      g | ]\}}t |qS rC   r   rA   _r   rC   rC   rD   r         z&test_kfold_balance.<locals>.<listcomp>r;   )r   r   rT   rc   r   maxminsum)r`   ry   sizesrC   rC   rD   test_kfold_balance  s   r   c           	   	   C   s   t d}dgd dgd  }t t|}dD ]A}| d|d}tddD ]3}t||d | |d | |d | }d	d
 |D }t |t | dksOJ t ||ksXJ q%qd S )Nr   r   rH   r;      TFr   r   c                 S   r   rC   r   r   rC   rC   rD   r     r   z0test_stratifiedkfold_balance.<locals>.<listcomp>)	rc   r   r   r   r   rW   r   r   r   )	r   rU   rV   rR   r   r   r`   rz   r   rC   rC   rD   test_stratifiedkfold_balance  s   
&r   c                  C   s   t d} t dddd}t dddd}td}td}t| |||||D ]*\\}}\}}\}	}
t|||	fdD ]\}}tt||t|ksPJ q>d||< q+t	|dks^J d S )NrH   Tr   r   r]   r;   ,  r4   )
r   rc   r   zerosrf   rT   r   r   intersect1dr   )ry   kf2kf3rU   	all_foldstr1te1tr2te2tr3te3tr_atr_brC   rC   rD   test_shuffle_kfold  s   


r  c              
   C   s4  t d}dgd dgd  }t t|}t d}dgd dgd  }t t|}| dddd	}t jtt||||tt|||| | ddt j	dd	}t
||f||f||fD ]8}t
t|g|R  t|g|R  D ]$\\}	}
\}	}tt t j|
| W d    n1 sw   Y  qrq_d S )
N   r   rZ   r;   r[      rH   Tr   )rc   r   r   r   rh   ri   rj   rW   r   r   rf   ro   rp   AssertionErrorr-   )r   rU   rV   groups_1r   r   groups_2ry   datar   test_atest_brC   rC   rD   2test_shuffle_kfold_stratifiedkfold_reproducibility  s&   

 2r  c                  C   s
  t d} dgd dgd  }tdddd}tdddd}t|| ||| |D ]\\}}\}}t|t|ks<J q*t|| |d dd t d	}dgd dgd  }tdddd}tdddd}td
d |||D }	tdd |||D }
|	|
ksJ d S )N(   r      r;   rX   Tr   r   rF   c                 S      g | ]}t |d  qS r;   tuplerA   srC   rC   rD   r   Q  r   z0test_shuffle_stratifiedkfold.<locals>.<listcomp>c                 S   r  r  r  r  rC   rC   rD   r   R  r   )	rc   r   r   rf   rT   r   r   r   sorted)X_40rV   kf0kf1r   test0test1rU   r  	test_set1	test_set2rC   rC   rD   test_shuffle_stratifiedkfold?  s   
*
r&  c                     s   t d} dgd dgd  }t dd  tdddd}tdddd} fd	d
|| d  D } fdd
|| d  D }t||D ]\}}||ksQJ dqEt|| | dd t|| | dd d S )Nr  r   r  r;   rH   rL   Tr   c                       g | ]
\}}t  | qS rC   r   rA   r   test_idxrQ   rC   rD   r   `      z+test_shuffle_groupkfold.<locals>.<listcomp>c                    r'  rC   r(  r)  rQ   rC   rD   r   c  r+  z6Test groups should differ with different random states)r   )rc   r   r   r   rT   rf   r   )rU   rV   gkf0gkf1test_groups0test_groups1g0g1rC   rQ   rD   test_shuffle_groupkfoldV  s   


r2  c                  C   s   t jd d t jd d } }tddd}d}t|dd}t|| ||d }d	|ks-J |d
ks3J t|ddd}t|| ||d }|d	ksJJ t|ddd}t|| ||d }|d	ksaJ t|}t|| ||d }d|ksuJ |d
ks{J d S )NiX  rF   g{Gzt?)CgammarH   Fr   r   gq=
ףp?皙?Tr   r   r;   gGz?)digitsr  targetr"   r   r   meanr   )rU   rV   modelrt   r   
mean_scorerC   rC   rD   1test_kfold_can_detect_dependent_samples_on_digitsn  s"   		r<  c                  C   s   t dd} tdgd dgd  }t|dd}td}t|t| }g }| |||D ]:\}}t	|| || j
dksEJ tt|| t| |d	d
 tt|| t| |d	d
 |t| q2t|dksvJ d S )NrH   r   r;   rY   r      r   )r;   r4   rH   rL   rX   rY   r;   r;   r4   r4   rH   rH   rL   rL   rX   rX   rY   rY   r   r   )r   rc   rd   r   r   rk   r   r   rT   r   r   r+   r   r   )r   rV   rU   rR   r   r   r   r   rC   rC   rD   #test_stratified_group_kfold_trivial  s   

  r>  c            
      C   s   t dd} tdgd dgd  }t|dd}tg d}td	d
gddgddgg}g }t| ||||D ].\\}}}t|| || j	dksQJ t
|| t| }	t|	|dd |t| q<t|dkstJ d S )NrH   r   r;   rY   r   r=  r   )r;   r4   rH   rH   rL   rL   r;   r;   r4   r4   rH   rL   rX   rX   rX   rY   rY   rY   g-?gsh|??gZd;O?gZd;O?r7   MbP?r   )r   rc   rd   r   r   rk   rf   rT   r   r   r   r   r+   r   r   )
r   rV   rU   rR   expectedr   r   r   expect_dist
split_distrC   rC   rD   'test_stratified_group_kfold_approximate  s   
 rC  zy, groups, expectedrY   )r;   r;   r4   r4   rH   rH   rL   rL   rX   rX   rY   rY   r   rH   )r;   r;   r;   r4   r4   r4   rH   rH   rH   rL   rX   rY         ?      ?c           	      C   s   t dd}t| dd}t||| ||D ]'\\}}}t|| || jdks-J t| | t	| }t
||dd qd S )NrH   r   r   r;   r   r?  r   )r   rc   r   r   rf   rT   r   r   r   r   r+   )	rV   rR   r@  r   rU   r   r   rA  rB  rC   rC   rD   .test_stratified_group_kfold_homogeneous_groups  s   
 rF  	cls_distr))g?333333?)g333333?ffffff?)皙?r6  )r6  rJ  r=   )rX   r   F   c                 C   s(  d}t |d}t|d}tjd}d}|jd|| d}t|dd}|||}	|j|||	d	}
|j|||	d	}d}d}t	|
|D ]?\\}}\}}t
|	| |	| jdks[J t|| t| }t|| t| }|tj|| d
7 }|tj|| d
7 }qD|| }|| }||ksJ d S )NrX   r   r   r   r4   )r   r6   r   r;   rQ   )qk)r   r   rc   r   r   choicer   r   rT   rf   r   r   r   r   r   entropy)rG  r=   rt   r   gkfr   n_pointsrV   rU   g
sgkf_folds	gkf_folds	sgkf_entrgkf_entr
sgkf_train	sgkf_testr   gkf_test
sgkf_distr	gkf_distrrC   rC   rD   /test_stratified_group_kfold_against_group_kfold  s*   

r[  c                  C   s   t dddt} t dddt}t tdddt}t dddt}t| |||D ]<\}}}}t|d |d  t|d |d  t|d |d  t|d |d  t|d |d  t|d |d  q.d S )NrJ  r   r9   r]   r4   r;   )r   rT   rU   rc   int32rf   r-   )ss1ss2ss3ss4t1t2t3t4rC   rC   rD   test_shuffle_split  s   rf  split_classztrain_size, exp_train, exp_test))Nr   r;   r[   r[   r4   r6  r[   r4   c                 C   sR   t d}t d}t| |d||\}}t||ksJ t||ks'J d S NrF   
train_size)rc   r   r   rT   r   )rg  rl  	exp_trainexp_testrU   rV   X_trainX_testrC   rC   rD   $test_shuffle_split_default_test_size  s
   

rq  ))Nr[   r4   )rZ   rZ   rH   )rI  rZ   rH   c                 C   s\   t d}t d}td}tt| d|||\}}t||ks$J t||ks,J d S rj  )rc   r   r   r   r   rT   r   )rl  rm  rn  rU   rV   rR   ro  rp  rC   rC   rD   *test_group_shuffle_split_default_test_size  s   

rr  c                  C   s~  t d} t g d}tt ttddd| | W d    n1 s(w   Y  tt ttddd| | W d    n1 sIw   Y  tt ttdddd| | W d    n1 skw   Y  t d} t g d	}tt ttdd
| | W d    n1 sw   Y  tt ttdd| | W d    d S 1 sw   Y  d S )NrZ   )r   r;   r;   r;   r4   r4   r4   rH   rJ  r8   r4   r9   rl  r   )	r   r   r   r;   r;   r;   r4   r4   r4   rk  )	rc   r   rk   ro   rp   rq   r   r   rT   rU   rV   rC   rC   rD   "test_stratified_shuffle_split_init"  s&   

"ru  c                  C   sj   t g d} d}d}td||ddt t| | }|D ]\}}t||ks*J t||ks2J qd S )NrJ   rX   rF   rY   r   )r9   rl  r]   )rc   rd   r   rT   r   r   )rV   r9   rl  sssr   r   rC   rC   rD   0test_stratified_shuffle_split_respects_test_size;  s   rw  c            	   
   C   s  t g dt g dt g dd t g dt dgd dgd	  t d
d tdD g dg dg} | D ]}tddddt t||}t |}t 	dt| }t|| }|D ]k\}}t
t || t ||  t t j|| ddd tt||  }t t j|| ddd tt||  }t||d t|t| |jksJ t||ksJ t||ksJ t
t ||g  qcq;d S )NrG   rI   rJ   r4   rK   r   i   r;   2   c                 S   s   g | ]	}|gd |  qS )r   rC   )rA   r`   rC   rC   rD   r   N  s    z6test_stratified_shuffle_split_iter.<locals>.<listcomp>r   rM   rY   gQ?r   r\  T)return_inverse)rc   rd   concatenater   r   rT   r   r   
asanyarrayceilr-   uniquer   floatr,   r   r   )	ysrV   rv  r9   rl  r   r   p_trainp_testrC   rC   rD   "test_stratified_shuffle_split_iterG  s>   


r  c                     s  d} d  fdd}dD ]}t |d ddg }t d	|  dd
}dg| }dg| }d}|jt ||dD ]"\}}	|d7 }||f||	ffD ]\}
}|D ]
}|
|  d7  < qNqHq8| ksaJ t|d	|  d	d	|   d\}}t||ksxJ t|	|ksJ tt||	dksJ t 	|}|j
d	|  ksJ || t|ksJ t|dksJ t|| }t|| }||| ||| qd S )NrX   r   c                    s<   d  }t  |}| D ]}||}||ksJ dqd S )N皙?z=An index is not drawn with chance corresponding to even draws)r   binompmf)
idx_countsr6   	thresholdbfcountprobr   rC   rD   assert_counts_are_okr  s   

z@test_stratified_shuffle_split_even.<locals>.assert_counts_are_ok)rY      r4   r   r;         ?rt   r9   r]   rt  rs  )rc   rd   r   rT   r   r    r   r   r   r}  r9   r~  )n_foldsr  rr   rR   r   train_countstest_countsn_splits_actualr   r   counteridsidn_trainn_testgroup_counts	ex_test_p
ex_train_prC   r   rD   "test_stratified_shuffle_split_evenl  sD   





r  c                  C   sx   g dd ddgd  } t | }tdddd}t|j|| d	\}}tt ||g  tt ||t t	|  d S )
Nr   r;   r4   rH   rH   rL   rX   r;   r7   r   r  rt  )
rc   r   r   r   rT   r-   r   union1dr   r   )rV   rU   rv  r   r   rC   rC   rD   4test_stratified_shuffle_split_overlap_train_test_bug  s   
 r  c                  C   s  t ddgddgddgddggt ddgddgddgddggfD ]a} t | }tdddd}t|j|| d\}}| | }| | }tt ||g  tt ||t 	t
|  t | d d df }|t |d d df kstJ |t |d d df ksJ q"d S )Nr   r;   r7   r  rt  )rc   rd   r   r   r   rT   r-   r   r  r   r   r9  )rV   rU   rv  r   r   y_trainy_testexpected_ratiorC   rC   rD   (test_stratified_shuffle_split_multilabel  s     
 r  c            
      C   s   g ddgd  g d } g ddgd  g d }t | gd |gd  }t |}tdddd}t|j||d	\}}|| }|| }t |d d d
f }	|	t |d d d
f ks`J |	t |d d d
f ksoJ d S )N)r;   r   r;   r   r   r;   rF   r   r7   r  rt  rL   )rc   rd   r   r   r   rT   r9  )
row_with_many_zerosrow_with_many_onesrV   rU   rv  r   r   r  r  r  rC   rC   rD   4test_stratified_shuffle_split_multilabel_many_labels  s   
"r  c            	      C   s   t dd} g }g }ttdddtD ]\}\}}|| || || |< qt| }tt 	| |
 ks;J t|  \}}t|| t|| d S )NrF   g      rX   Tr   )rc   fullre   r   rT   rU   r   r   r   r}  rg   rf   r-   )	foldskf_trainkf_testr`   	train_indtest_indr~   ps_trainps_testrC   rC   rD   %test_predefinedsplit_with_kfold_split  s   "



r  c                  C   sP  t D ]} tt|  }}d}d}t||dd}t| |j||| d|ks(J t| }t| }|j	||| dD ]j\}}	t|| }
t||	 }t
t|| |rYJ t
t||	 |
rfJ || j||	 j |jksuJ tt||	g  tt|t|t|  dksJ tt|
td| t|  dksJ q:qd S )NrY   gUUUUUU?r   r\  rQ   r;   r  )test_groupsrc   r   r   r   rn   rg   r}  rk   rT   anyisinr   r-   r   absround)groups_irU   rV   rt   r9   slol_uniquelr   r   l_train_uniquel_test_uniquerC   rC   rD   test_group_shuffle_split  s(   

$*r  c               	   C   s  t  } tdd}tdd}t| dksJ t|dksJ t|dks%J ttdddks0J t| df|df|dffD ]v\}\}}ttD ]k\}}tt|}|dkrX|n||d  d }	tt| }
}|j	|
||d	|	ksuJ t
|}|j|
||d	D ]/\}}tt|| ||  g  t|t| t|ksJ t|| jd
 sJ |qqGq=| 	d d g ddksJ | j	g dd	dksJ |	d d tddksJ |j	tdd	dksJ tt | 	d d dtjdg W d    n	1 sw   Y  tt |	d d dtjdg W d    n	1 s%w   Y  d}tjt|d | 	d d d  W d    n	1 sFw   Y  tjt|d |	d d d  W d    d S 1 sfw   Y  d S )Nr;   r<   r4   r^   zLeavePGroupsOut(n_groups=1)r_   rH   zLeavePGroupsOut(n_groups=3)rQ   r   )abcr  r  )r  皙?r  g333333?rL   rY   g        z*The 'groups' parameter should not be None.ra   )r   r   rn   re   r  r   rc   r}  r   rg   rk   rT   r-   r   tolistshaper   ro   rp   rq   naninf)logolpgo_1lpgo_2jr   p_groups_outr`   r  r=   rt   rU   rV   
groups_arrr   r   r   rC   rC   rD   test_leave_one_p_group_out  sN   

&
$r  c                  C   s  t g d} t t| }t j| dd}t j|| d}t j|| d}tddj|| d}tddj|| d}d|d d < ||f||ffD ]\}}t||D ]\\}	}
\}}t|	| t|
| qPqGdtddj	||| d	kssJ dt j	||| d	ksJ d S )
N)r   r;   r4   r;   r;   r4   r   r   T)copyrQ   r4   r<   r   rH   )rV   rR   )
rc   rd   r   r   r   rT   r   rf   r-   rg   )rR   rU   groups_changingr{   lolo_changinglplolplo_changingllollo_changingr   r   
train_chan	test_chanrC   rC   rD   $test_leave_group_out_changing_groupsN  s   
r  c                  C   s   t g d} t t| }tt j|| d}g dddgfg dddgfg d	d
dgfg}|D ]\}}t|\}}t|| t|| q1d S )N)r4   r4   r   r   r;   r;   rQ   )r   r;   rL   rX   r4   rH   r  rL   rX   r4   rH   rL   rX   r   r;   )	rc   rd   r   r   iterr   rT   r   r-   )rR   rU   r   expected_indicesexpected_trainexpected_testr   r   rC   rC   rD   %test_leave_group_out_order_dependenced  s   
r  c                  C   s  t d }  }}td}tjt|d tt 	| || W d    n1 s*w   Y  t d }  }}td| d}tjt|d tt 	| || W d    n1 s]w   Y  t d }  }}td| d}tjt|d tt
d	d
	| || W d    n1 sw   Y  t d	 }  }}td| d}tjt|d tt
d	d
	| || W d    d S 1 sw   Y  d S )Nr   zFound array with 0 sample(s)ra   r;   z:The groups parameter contains fewer than 2 unique groups (z'). LeaveOneGroupOut expects at least 2.z^The groups parameter contains fewer than (or equal to) n_groups (3) numbers of unique groups (zR). LeavePGroupsOut expects that at least n_groups + 1 (4) unique groups be presentrH   r<   )rc   r   reescapero   rp   rq   r   r   rT   r   r   )rU   rV   rR   r   rC   rC   rD   :test_leave_one_p_group_out_error_on_fewer_number_of_groupsx  s<   

"r  c               	   C   sz   t tfD ]6} tt | dd W d    n1 sw   Y  tt | dd W d    n1 s5w   Y  qd S )Nr   )	n_repeatsr   )r   r   ro   rp   rq   r5  rC   rC   rD   test_repeated_cv_value_errors  s   r  
RepeatedCVc                 C   s6   d\}}| ||d}d |jj}|t|ksJ d S )N)r4   rY   rt   r  z.{}(n_repeats=6, n_splits=2, random_state=None))r   r?   r@   rn   )r  rt   r  repeated_cvrepeated_cv_reprrC   rC   rD   test_repeated_cv_repr  s   r  c               	   C   s"  ddgddgddgddgd	d
gg} d}t dd|d}tdD ]p}|| }t|\}}t|ddg t|g d t|\}}t|g d t|ddg t|\}}t|ddg t|g d t|\}}t|g d t|ddg tt t| W d    n1 sw   Y  qd S )Nr;   r4   rH   rL   rX   rY   rZ   r[   r   rF   i{icrt   r  r]   )r   r;   rH   r   )r4   rH   rL   )r   r   rT   r   r-   ro   rp   StopIteration)rU   r]   rkfr   r   r   r   rC   rC   rD   &test_repeated_kfold_determinstic_split  s,   "

r  c                  C   0   d} d}t | |d}| | }|| ksJ d S NrH   rL   r  )r   rg   )rt   r  r  r   rC   rC   rD   $test_get_n_splits_for_repeated_kfold  
   r  c                  C   r  r  )r   rg   )rt   r  rskfr   rC   rC   rD   /test_get_n_splits_for_repeated_stratified_kfold  r  r  c               	   C   s,  ddgddgddgddgd	d
gg} g d}d}t dd|d}tdD ]q}|| |}t|\}}t|ddg t|g d t|\}}t|g d t|ddg t|\}}t|ddg t|g d t|\}}t|g d t|ddg tt t| W d    n1 sw   Y  q"d S )Nr;   r4   rH   rL   rX   rY   rZ   r[   r   rF   )r;   r;   r;   r   r   iqsr  )r   r4   rH   )r   r;   rL   )r   r   rT   r   r-   ro   rp   r  )rU   rV   r]   r  r   r   r   r   rC   rC   rD   1test_repeated_stratified_kfold_determinstic_split  s.   "
r  c                   C   s  t tt t jtttddd t jtttdddd t jtttdtdtdd t jtttddd t jtttddd	d t jtttddd
 t tttdtd t jtttdddd t jtdd ttdddd W d    d S 1 sw   Y  d S )NrH   r  rk  rH  rs  
wrong_typer8   r4   rL   )some_argument*   rF   FT)r   stratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangera   r   r;   )rl  r9   )ro   rp   rq   r   r   rc   float32r   rC   rC   rC   rD   test_train_test_split_errors  s*   "r  ))NrZ   rH   rh  ri  c                 C   s4   t t| d\}}t||ksJ t||ksJ d S )Nrk  )r   rU   r   )rl  rm  rn  ro  rp  rC   rC   rD   'test_train_test_split_default_test_size  s   r  z#array_namespace, device, dtype_name)r  zshuffle,stratify)TNrL   )FNc                 C   s  t ||}tdd}td}||}|j||d}	||}
|j|
|d}t||d| |d\}}}}tddY |d urG||}n|}t|	|| |dd	\}}}}t|d t|	d ksdJ t|d t|	d ksrJ t|d t|d ksJ t|d t|d ksJ W d    n1 sw   Y  t	|t	|	ksJ t	|t	|ksJ t	|t	|	ksJ t	|t	|ksJ |j
|	j
ksJ |j
|j
ksJ |j
|	j
ksJ |j
|j
ksJ tt||d
| tt||d
| d S )Nr   rF   rF   rF   r(   r   )r]   r   r  T)array_api_dispatch)r   r  r]   )xp)r/   rc   r   r   astyperk   r   r   r&   array_api_devicerl   r+   r$   )r   r  array_namespacer)   
dtype_namer  rU   rV   X_npX_xpy_npy_xp
X_train_np	X_test_np
y_train_np	y_test_npstratify_xp
X_train_xp	X_test_xp
y_train_xp	y_test_xprC   rC   rD   test_array_api_train_test_split!  sL   







r
  coo_containerc                 C   s  t dd}| |}t d}t||d dd}|\}}}}t|t|ks)J t|d d df |d  t|d d df |d  t||| }|\}}}	}
}}t|tsZJ t|tsaJ t dddd	d
}t dddd}t||}|d j	dksJ |d j	dksJ |d
 j	dksJ |d	 j	dksJ t 
g d}tg dg dD ]4\}}t|||dd\}}t||ksJ t|t| t|ksJ t |dkt |d
kksJ qt d}dD ]}t|d|d\}}t|ddg t|g d qd S )Nr   r  rF   r7   rs  r   r   rX   rH   r4   i  rZ   r   )rZ   rX   rH   r4   r;   )rH   rX   rH   r4   )rZ   rZ   r   )rH   rZ   r   )r;   r;   r;   r;   r4   r4   r4   r4   )r4   rL   rE  r7   rD  )r4   rL   r4   rL   rY   )r9   r  r]   )r4   rJ  F)r   r9   r[   r   )r   r;   r4   rH   rL   rX   rY   rZ   )rc   r   r   r   r   r-   r  
isinstancerj   r  rd   rf   r   )r  rU   X_srV   rT   ro  rp  r  r  	X_s_trainX_s_testX_4dy_3dr9   exp_test_sizer   r   rC   rC   rD   test_train_test_splite  sB   


"
r  c                  C   sb   d} t | }|d|  k}t|||dd}|\}}}}|j|j | ks%J |j|j | ks/J dS )zCheck for integer overflow on 32-bit platforms.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i Gz?rE  )r  rl  N)rc   r   r   r   )
big_numberrU   rV   rT   ro  rp  r  r  rC   rC   rD   $test_train_test_split_32bit_overflow  s   	
r  c                  C   sr   t g} zddlm} | | W n	 ty   Y nw | D ]}|t}t|\}}t||s/J t||s6J qd S )Nr   )	DataFrame)r*   pandasr  r   ImportErrorrU   r   r  )typesr  InputFeatureTypeX_dfro  rp  rC   rC   rD   test_train_test_split_pandas  s   r  sparse_containerc                 C   sT   t dd}| |}t|\}}t|r|jdksJ t|r&|jdks(J d S )Nr   r  csr)rc   r   r   r   r   r   )r  rU   r  ro  rp  rC   rC   rD   test_train_test_split_sparse  s
   r   c                  C   s@   t t} t| \}}t|t sJ t|t sJ t| \}}d S r>   )r*   rU   r   r  )r  ro  rp  X_train_arr
X_test_arrrC   rC   rD   !test_train_test_split_mock_pandas  s
   r#  c                  C   s   t d} dgd dgd  }t t dt df}| }dD ]N}t| ||r+|nd dd\}}}}t| ||r;|nd dd\}	}
}}t| ||rK|nd dd\}}}}t j||	 t j|| t j|| t j|| q"d S )	NrZ   rN   rL   r   rH   r   r   )r  r]   )rc   r   hstackr   r  r   rh   ri   )rU   r   r   y3r  X_train1X_test1y_train1y_test1X_train2X_test2y_train2y_test2X_train3X_test3y_train3y_test3rC   rC   rD    test_train_test_split_list_input  s&   
r2  ztest_size, train_size))r   N)r  N)r   gffffff?)Ny              ?)r   N)rF   N)r[   rH   c                 C   sF   t t tt| |dt W d    d S 1 sw   Y  d S )Nrs  )ro   rp   rq   r   r   rT   rU   rs  rC   rC   rD   test_shufflesplit_errors  s   "r3  c                  C   s8   t dd} tdd | tD dd | tD  d S )N   r\   c                 S   s   g | ]\}}|qS rC   rC   )rA   r  r  rC   rC   rD   r         z2test_shufflesplit_reproducible.<locals>.<listcomp>)r   r-   rT   rU   )r}   rC   rC   rD   test_shufflesplit_reproducible  s   
.r6  c                  C   s   t ddd} td}dgd dgd  }ttdtdf}| }tjt| 	||t| 	|| tjt| 	||t| 	|| d S )	Nr4   r  r\  rZ   rN   rL   r   rH   )
r   rc   r   r$  r   r  rh   ri   rj   rT   )rv  rU   r   r   r%  rC   rC   rD   &test_stratifiedshufflesplit_list_input  s   
&*r7  c                  C   sX   t jdt jddd} t j| dd d f< t ddg| jd d }t| |dd	d
 d S )N   rl   rF   r   r4   r   r;   rJ  r  r\  )rc   r   float64r   r  repeatr  r   rt  rC   rC   rD    test_train_test_split_allow_nans  s   r<  c                  C   sD  t d} tddd}t jttd| t||  t g d}td|dd}t jtt	d| |t|| | t g d}td|dd}t jtt	d| |t|| | |
dd	}td|dd}t jtt	d| |t|| | t tt	d| |d
 ttd| |d
 krJ t d} t g dg dg dg dg dg}td|dd}t jttd| t||  t d	dgd
dgd
d
gdd	gdd
gg}td|dd}t jttd| t||  tt tdd W d    d S 1 sw   Y  d S )Nr   rH   F)
classifier)	r   r;   r   r;   r   r   r;   r;   r;   T)	r   r;   r   r;   r4   r;   r4   r   r4   r   r;   r   rX   )r   r   r   r   )r   r;   r;   r   )r   r   r   r;   )r;   r;   r   r;   )r   r   r;   r   r4   r{   r5  )rc   r   r   rh   ri   rj   r   rT   rd   r   r   allr   ro   rp   rq   )rU   r   y_binaryy_multiclassy_multiclass_2dr   y_multioutputrC   rC   rD   test_check_cv  sH   
&  
 &(&$rC  c                  C   s   t  tt} t| }tjt|ttt|tt t dddtt}t|}tjt|ttt|tt zd}tjt|ttt|tt W n t	ya   d}Y nw |rhJ dd S )NTr   r   FzVIf the splits are randomized, successive calls to split should yield different results)
r   rT   rU   rV   r   rc   rh   ri   rj   r  )kf_iterkf_iter_wrappedkf_randomized_iterkf_randomized_iter_wrappedsplits_are_equalrC   rC   rD   test_cv_iterable_wrapper=  s.   rI  c                 C   s  t j|}d}d}d}t | }}d| }	|d||}
|| }tt |
 t |}|s2d n|}| |||d}t|	|||
D ]
\}\}}|||< qDt|t|
ksYJ t |D ]}|	t
t||k| ksnJ q^t |
D ]}tt ||
|k dksJ qtt j|
td}
|	|||
D ]\}}tt |
| |
| dksJ qt g d	}
tt |
}t|
}d}d| }	|| }t | }}t |}t|	|||
D ]
\}\}}|||< qt|t|
ksJ |s	t |D ]}|	t
t||k| ksJ qt ' td
t t |
D ]}tt ||
|k dks+J qW d    n	1 s8w   Y  t j|
td}
|	|||
D ]\}}tt |
| |
| dks`J qK| |||d}t|	|||
 }t|	|||
|D ]\\}}\}}t|| t|| q~t g d}
t t|
 }}tjtdd ttdd	|||
 W d    d S 1 sw   Y  d S )Nr  r   rX   r  r   )rt   r   r]   r;   r9  )&AlbertJeanBertrandMichelrK  FrancisRobertrM  RachelLoisMichelleBernardMarionLaurarK  rP  FranckJohnGaelAnnaAlixrO  rT  DavidTonyAbelBeckyMadmoodCaryMary	Alexandrer[  rN  BarackAbdoulRashaXiSilviar   )r;   r;   r;   r4   r4   z%Cannot have number of splits.*greaterra   rH   r   )rc   r   r   r   r   r   r}  r   re   rT   r  r   rk   objectr   rd   r   r   r   FutureWarningrj   r  rf   r-   ro   rp   rq   r   r   )r   r   global_random_seedr   r=   rr   rt   rU   rV   	tolerancerR   ideal_n_groups_per_foldr  r]   lkfr`   r   r   groupr   lkf_copycv_itertrain1r#  train2test2rC   rC   rD   test_group_kfold^  sr   

 "+

 
$&$
$rt  c                  C   sr  ddgddgddgddgd	d
gddgddgg} t jtdd ttdd|  W d    n1 s3w   Y  td}|| d d }t|\}}t|ddg t|ddg t|\}}t|g d t|ddg td| }t|\}}t|g d t|ddg t|\}}t|g d t|ddg td| }tt|}||	 ksJ |dksJ d S )Nr;   r4   rH   rL   rX   rY   rZ   r[   r   rF   r   r=     r   z$Cannot have number of folds.*greaterra   r   r   r   r  r   r   r;   r4   rH   rL   )
ro   rp   rq   r   r   rT   r-   r   rj   rg   )rU   tscvr   r   r   r  rC   rC   rD   test_time_series_cv  s.   .rx  c                 C   s^   t | |D ]'\\}}\}}t|| t||ksJ tt|| d}t|||d   qd S )Nr   )rf   r-   r   r   )r   check_splitsmax_train_sizer   r   check_train
check_testsuffix_startrC   rC   rD   !_check_time_series_max_train_size  s   
r~  c                  C   s~   t d} tdd| }tddd| }t||dd tddd| }t||dd tddd| }t||dd d S )N)rY   r;   rH   r   )rt   rz  )rz  r4   rX   )rc   r   r   rT   r~  )rU   r   ry  rC   rC   rD   test_time_series_max_train_size  s   
r  c                  C   sD  t d} tddd| }t|\}}t|dg t|g d t|\}}t|g d t|g d t|\}}t|g d t|g d	 td
d
dd| }t|\}}t|g d t|ddg t|\}}t|g d t|ddg tjtdd tdd
d| }t| W d    d S 1 sw   Y  d S )NrF   r;   rH   )rt   r9   r   )r;   r4   rH   r  rL   rX   rY   )r   r;   r4   rH   rL   rX   rY   rZ   r[   r   r4   rL   )rt   r9   rz  r  rY   rZ   )rL   rX   rY   rZ   r[   r   zToo many splits.*with test_sizera   rX   	rc   r   r   rT   r   r-   ro   rp   rq   rU   r   r   r   rC   rC   rD   test_time_series_test_size  s,   

"r  c                  C   s  t d} tddd| }t|\}}t|ddg t|g d t|\}}t|g d t|g d td	ddd
| }t|\}}t|ddg t|ddg t|\}}t|dd	g t|ddg t|\}}t|ddg t|ddg tddddd| }t|\}}t|g d t|ddg t|\}}t|g d t|ddg tddd	d| }t|\}}t|ddg t|g d t|\}}t|g d t|g d tjtdd tddd| }t| W d    d S 1 sw   Y  d S )Nr  r4   )rt   gapr   r;   r  rv  r  rH   )rt   r  rz  rL   rX   rY   rZ   r[   r   )rt   r  rz  r9   r  r  )rt   r  r9   zToo many splits.*and gapra   r  r  rC   rC   rD   test_time_series_gap>  sH   

$r  c               
   C   s   t jd} tdddd\}}| ddd}t tddt tddt t	 t
dddg}t|dD ]\}}tt d	d
dgi|dd}t|||||d|id q2d S )Nr   r  r4   )rr   	n_classesr]   rX   r   rH   )rt   r]   strategy
stratifiedmost_frequentraise)
param_gridr   error_scorerR   )rU   rV   rR   r   params)rc   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   )r   rU   rV   rR   cvsinner_cvouter_cvgsrC   rC   rD   test_nested_cvw  s,   


r  c                  C   s(   G dd d} t | dddksJ d S )Nc                   @   s   e Zd ZdddZdd ZdS )z%test_build_repr.<locals>.MockSplitterr   Nc                 S   s   || _ || _|| _d S r>   )r  r  r  )selfr  r  r  rC   rC   rD   __init__  s   
z.test_build_repr.<locals>.MockSplitter.__init__c                 S   s   t | S r>   )r   )r  rC   rC   rD   __repr__  s   z.test_build_repr.<locals>.MockSplitter.__repr__)r   N)r@   
__module____qualname__r  r  rC   rC   rC   rD   MockSplitter  s    
r  rX   rY   zMockSplitter(a=5, b=6, c=None))rn   )r  rC   rC   rD   test_build_repr  s   	r  
CVSplitterc                 C   sd   | dd}dggdg}}t jtdd tt|||dgd W d    d S 1 s+w   Y  d S )Nr  r8   r;   r   [With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyra   rQ   )ro   rp   rq   r   rW   )r  r   rU   rV   rC   rC   rD   !test_shuffle_split_empty_trainset  s   
"r  c                  C   s   dgg\} t jtdd t| dd W d    n1 sw   Y  dgdgdgg} t jtdd t| dd W d    d S 1 sCw   Y  d S )Nr;   r  ra   r  r8   z[With n_samples=3, test_size=0.67 and train_size=None, the resulting train set will be emptygq=
ףp?)ro   rp   rq   r   r   rC   rC   rD   $test_train_test_split_empty_trainset  s   
	"r  c                  C   sZ   t  } dggdg}}tjtdd t| || W d    d S 1 s&w   Y  d S )Nr;   r   z+Cannot perform LeaveOneOut with n_samples=1ra   )r   ro   rp   rq   r   rT   r   rU   rV   rC   rC   rD   !test_leave_one_out_empty_trainset  s
   "r  c                  C   sd   t dd} dgdggddg}}tjtdd t| || W d    d S 1 s+w   Y  d S )Nr4   r5   r;   r   rH   z6p=2 must be strictly less than the number of samples=2ra   )r   ro   rp   rq   r   rT   r  rC   rC   rD   test_leave_p_out_empty_trainset  s   
"r  Klassc                 C   sB   t jtdd | dddd W d    d S 1 sw   Y  d S )Nz$has no effect since shuffle is Falsera   rH   Fr   r   )ro   rp   rq   )r  rC   rC   rD   test_random_state_shuffle_false  s   "r  zcv, expected{   r   r\   c                 C   s   t | |ksJ d S r>   )r!   )r   r@  rC   rC   rD   test_yields_constant_splits  s   &r  r   c                 C      g | ]}t |qS rC   r   rA   r   rC   rC   rD   r     r5  r   c                 C   sZ   t | dsJ |  }| tv r|jjd du sJ n
| tv r$|jjr$J t|dgd dS )z>Check get_metadata_routing returns the correct MetadataRouter.get_metadata_routingrR   TrT   )excludeN)hasattrr  GROUP_SPLITTERSrT   requestsNO_GROUP_SPLITTERSr#   )r   metadatarC   rC   rD   "test_splitter_get_metadata_routing  s   r  c                 C   r  rC   r  r  rC   rC   rD   r     r5  c                 C   s8   | t v rt| dsJ dS | tv rt| drJ dS dS )zJCheck set_split_request is defined for group splitters and not for others.set_split_requestN)r  r  r  r5  rC   rC   rD   test_splitter_set_split_request  s   r  c                 C   s   d| j j }d}tjd}|jdd|dfd}|jdd|fd}|jdd|fd}tjt|d | j	|||d	 W d    d S 1 sFw   Y  d S )
Nz#The groups parameter is ignored by r   r;   r   rH   r4   r   ra   rQ   )
r?   r@   rc   r   r   r   ro   r   UserWarningrT   )r   r   rr   r   rU   rV   rR   rC   rC   rD   )test_no_group_splitters_warns_with_groups"  s   "r  c                 C   r  rC   r  r  rC   rC   rD   r   1  r5  c                 C   sB   d}t jt|d | t W d    d S 1 sw   Y  d S )Nz+missing 1 required positional argument: 'y'ra   )ro   rp   r   rT   rU   )r   r   rC   rC   rD   "test_stratified_splitter_without_y0  s   "r  r>   )__doc__r  r   	itertoolsr   r   r   numpyrc   ro   scipyr   scipy.sparser   scipy.specialr   sklearnr   sklearn.datasetsr	   r
   sklearn.dummyr   sklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.model_selection._splitr   r    r!   sklearn.svmr"   %sklearn.tests.metadata_routing_commonr#   sklearn.utils._array_apir$   r%   r&   r'   r)   r  sklearn.utils._mockingr*   sklearn.utils._testingr+   r,   r-   r.   sklearn.utils.estimator_checksr/   sklearn.utils.fixesr0   r1   r2   sklearn.utils.validationr3   r  r  r   rS   ALL_SPLITTERSSPLITTERS_REQUIRING_TARGETr   rU   r   rV   rd   r  r7  markfilterwarnings
pytestmarkrW   r   r   r   r   r   r   r   r   parametrizer   r   r   r   r  r  r&  r2  r<  r>  rC  rk   rF  r[  rf  rq  rr  ru  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r   r
  r  r  r  r   r#  r2  r3  r6  r7  r<  rC  rI  rt  rx  r~  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r   r  r  rC   rC   rC   rD   <module>   s    T

U
'I+


,


%4%7#	
	
		6
/

	
.!%#9




	
 
%


