
    Mpj9                     	   S SK rS SKrS SKJr  S SKJrJr  S SKJ	r	J
r
JrJrJrJr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJrJrJr  S SKJrJrJ r J!r!J"r"  S S	K#J$r$  S S
K%J&r&  \RN                  " 5       r(S r)S r*S r+S r,\RZ                  R]                  S/ SQ5      \RZ                  R]                  SSS/5      S 5       5       r/S r0\RZ                  R]                  S\ 5      S 5       r1\RZ                  R]                  S/ SQS S/S/S /S /S//// SQ/ SQ/ SQ/ SQ/ SQ/ S Q///5      \RZ                  R]                  S!\" 5       5      S" 5       5       r2\RZ                  R]                  S#\Rf                  " / S$QS%S&9\Rf                  " / S'QS%S&9\Rf                  " S(/S%S&94\Rf                  " / S)Q\4S&9\Rf                  " / S*Q\4S&9\Rf                  " S+/\4S&94\Rf                  " / S)Q5      \Rf                  " / S*Q5      \Rf                  " S+/5      4// S,QS-9S. 5       r5S/ r6\RZ                  R]                  SS0S1/5      S2 5       r7S3 r8\RZ                  R]                  S4\Rf                  " / S$QS%S&9\Rf                  " / S)Q\4S&9\Rf                  " / S)Q5      // S,QS-9S5 5       r9S6 r:\RZ                  R]                  S\ 5      S7 5       r;S8 r<S9 r=S: r>S; r?S< r@S= rAS> rBS? rCS@ rDSA rESB rFSC rGSD rH\RZ                  R]                  SE\Rf                  /\-   \-   \ -   \!-   \"-   5      SF 5       rISG rJ\RZ                  R]                  S/ SQSHSI/S /S /S /S //// SQ/ SJQ/ SKQ/ SKQ/ SKQ/ SKQ/// SQS S/S/S /S /S//// SLQ/ SMQ/ SNQ/ SOQ/ SPQ/ SNQ///5      \RZ                  R]                  S!\" 5       5      SQ 5       5       rK\RZ                  R]                  S!\" 5       5      \RZ                  R]                  SRS S// SMQ/5      SS 5       5       rL\RZ                  R]                  S\ 5      ST 5       rMSU rN\RZ                  R]                  SV\
" 5       \	" 5       \" 5       /5      SW 5       rO\RZ                  R]                  S!\" 5       5      \RZ                  R]                  SX\Rf                  " / S$Q5      \Rf                  " / SYQ5      \Rf                  " / SZQ5      /5      S[ 5       5       rPg)\    N)issparse)config_contextdatasets)LabelBinarizerLabelEncoderMultiLabelBinarizer_inverse_binarize_multiclass_inverse_binarize_thresholdinglabel_binarize)_atol_for_type_convert_to_numpy_is_numpy_namespaceget_namespaceindexing_dtypemove_to)yield_namespace_device_dtype_combinationsdevice)_array_api_for_testsassert_allcloseassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)type_of_target)_to_object_arrayc                 H    [        U S5      (       a  U R                  5       n U $ )Ntoarray)hasattrr    as    b/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/preprocessing/tests/test_label.pyr    r    ,   s    q)IIKH    c                  <   / SQn [        SS9n[        R                  " / SQ/5      R                  nUR	                  U 5      n[        UR                  S/5        [        X#5        [        UR                  U5      U 5        [        SS9nUR	                  U 5      n[        U5      (       d   e[        UR                  S/5        [        X#R                  5       5        [        UR                  UR                  5       5      U 5        [        SS9n/ SQn [        R                  " / SQ/5      R                  nUR	                  U 5      n[        UR                  S	S/5        [        X#5        [        R                  " S
S/SS
/SS
/S
S//5      n[        UR                  U5      U 5        / SQn [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      nUR	                  U 5      n[        UR                  / SQ5        [        X#5        [        UR                  U5      U 5        g )N)posr'   r'   r'   Fsparse_outputr   r   r   r   r'   T)negr'   r'   r+   r      r-   r   r+   r-   r   )spamhameggsr/   0r   r   r   r-   r   r   r-   r   r   r-   r   r   r-   r   r   r   )r1   r0   r/   r.   )
r   nparrayTfit_transformr   classes_inverse_transformr   r    )inplbexpectedgot	to_inverts        r$   test_label_binarizerrA   2   s    'C	e	,Bxx'))H


3
Cr{{UG,x%r++C0#6 
d	+B


3
CC===r{{UG,x/r++CKKM:C@	e	,B
&Cxx'))H


3
Cr{{UEN3x%1a&1a&1a&1a&9:Ir++I6< .Cxx	|\<NH 

3
Cr{{$@Ax%r++C0#6r%   c            	         [        5       n [        R                  " / SQ/ SQ/ SQ/5      nU R                  / SQ5      n[	        X5        [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      nU R                  / SQ5      n[	        X5        g )Nr-   r   r   r   r-   r   r   r   r-   )bder   r   r   )r#   rF   crG   rH   f)r   r6   r7   r9   r   	transform)r=   r>   r?   s      r$   "test_label_binarizer_unseen_labelsrM   [   sn    		BxxIy9:H


?
+Cx%xx	Iy)Y	JH ,,5
6Cx%r%   c                     [        SSS9n [        R                  " / SQ5      n[        R                  " / SQ/5      R                  nU R	                  U5      n[        X#5        [        U R                  U5      U5        [        SSS9n [        R                  " / SQ5      n[        R                  " / SQ/ S	Q/ S
Q/ S	Q/ SQ/5      nU R	                  U5      n[        X#5        [        U R                  U5      U5        g )Nr   	neg_label	pos_labelr,   )rO   r   r   rO      )   rS   r-   rS   r   )rO   rO   rO   rS   )rO   rO   rS   rO   )rO   rS   rO   rO   )rS   rO   rO   rO   )r   r6   r7   r8   r9   r   r;   )r=   r<   r>   r?   s       r$   'test_label_binarizer_set_label_encodingrU   i   s    	"	2B ((<
 Cxx()++H


3
Cx%r++C0#6	"	2B ((?
#Cxx	
H 

3
Cx%r++C0#6r%   dtype)Int64Float64booleanunique_firstTFc                     [         R                  " S5      nUR                  / SQU S9nU(       a  UR                  5       n[	        5       R                  U5      nUR                  SS/5      n[        US/S//5        g)zaChecks that LabelBinarizer works with pandas nullable dtypes.

Non-regression test for gh-25637.
pandas)	r-   r   r   r-   r   r-   r-   r   r-   rV   r-   r   N)pytestimportorskipSeriesuniquer   fitrL   r   )rV   rZ   pdy_truer=   y_outs         r$   $test_label_binarizer_pandas_nullablerf      sn     
		X	&BYY2%Y@F 				f	%BLL!Q EusQCj)r%   c                     [         R                  " / SQ5      n [        5       R                  U 5      n/ SQnSn[        R
                  " [        US9   UR                  U5        S S S 5        [        5       nSn[        R
                  " [        US9   UR                  / 5        S S S 5        [        R
                  " [        US9   UR                  / 5        S S S 5        / SQnSn[        SS	S
9n[        R
                  " [        US9   UR                  U5        S S S 5        Sn[        SSS
9n[        R
                  " [        US9   UR                  U5        S S S 5        Sn[        S	SSS9n[        R
                  " [        US9   UR                  U5        S S S 5        / S	S/S// SQS//nSn[        R
                  " [        US9   [        5       R                  U5        S S S 5        Sn[        R
                  " [        US9   [        [         R                  " / SQ/ SQ/5      S/ SQSS9  S S S 5        Sn[        R
                  " [        US9   [        5       R                  [         R                  " S	S/SS	//5      5        S S S 5        [        R
                  " [        US9   [        [         R                  " S	S/SS	//5      / SQS9  S S S 5        g ! , (       d  f       GNy= f! , (       d  f       GNL= f! , (       d  f       GN+= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNg= f! , (       d  f       GN-= f! , (       d  f       N= f! , (       d  f       g = f)Nr*   )rS   rT   )r   )r   rS   z@You appear to be using a legacy multi-label data representation.matchz.This LabelBinarizer instance is not fitted yet)r   r-   r   r-   z3neg_label=2 must be strictly less than pos_label=1.rS   r-   rP   z3neg_label=2 must be strictly less than pos_label=2.zqSparse binarization is only supported with non zero pos_label and zero neg_label, got pos_label=2 and neg_label=1TrQ   rR   r)   rT   )r   r-   rT   z?You appear to be using a legacy multi-label data representationz!output_type='binary', but y.shaper-   rS   rT   )rS   r-   rT   binaryr   youtput_typeclasses	thresholdz@Multioutput target data is not supported with label binarizationrq   )r6   r7   r   rb   r^   raises
ValueErrorrL   r;   r9   r
   r   )	one_classr=   multi_labelerr_msginput_labelsy_seq_of_seqss         r$   test_label_binarizer_errorsr{      s   &I				i	(B(KPG	z	1
[! 
2 
	B>G	z	1
R 
2	z	1
R  
2  LCG	!q	1B	z	1
| 
2CG	!q	1B	z	1
| 
2	5  
!q	EB	z	1
| 
2 !Q!i!5MOG	z	1&&}5 
2 2G	z	1&hh	9-. 		
 
2 QG	z	1RXX1v1v&678 
2	z	1rxx!Q!Q 019E 
2	1_ 
2	1
 
2	1	1	1 
2	1 
2	1 
2	1 
2	1
 
2	1 
2	1	1	1sx   KK'K9LLL/M)M4M%%'M6
K$'
K69
L
L
L,/
L>
M
M"%
M36
Ncsr_containerc                 @   Sn[         R                  " [        US9   [        U " SS/SS//5      SSS/SS9  S S S 5        Sn[         R                  " [        US9   [        U " SS/SS//5      S/ S	QSS9  S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)
Nzfoo format is not supportedri   r-   rS   foor   rn   zAThe number of class is not equal to the number of dimension of y.rl   )r^   rt   ru   r
   )r|   rx   s     r$   "test_label_binarizer_sparse_errorsr      s     ,G	z	1&aVaV,-F		
 
2 RG	z	1&aVaV,-		
 
2	1 
2	1 
2	1s   A>B>
B
Bzy, classes, expected)r-   r   r   r-   r-   )r-   r   rS   	   )r   r-   rS   r   r4   r5   r3   r2   z(array_namespace, device_name, dtype_namec           
         [        X4U5      u  pg[        R                  " U 5      n[        SS9   UR                  XS9n [	        U5      (       d  Sn	[
        R                  " [        U	S9   [        SS9R                  U 5        SSS5        [        SS9R                  U5      n
[
        R                  " [        U	S9   U
R                  U 5        SSS5        [        5       R                  U5      nSUl        Sn[
        R                  " [        US9   UR                  UR                  X'S95        SSS5        [        5       nUR                  U 5      n[        U5      S	   R                  UR                  :X  d   eS
[!        UR"                  5      ;   d   e[%        U5      [%        U 5      :X  d   e['        [)        U[        SS9[        R                  " U5      5        UR*                  n[        U5      S	   R                  UR                  :X  d   e[%        U5      [%        U 5      :X  d   eS
[!        UR"                  5      ;   d   e['        [)        U[        SS9[        R                  " U5      5        UR                  X'S9nUR                  U5      n[        U5      S	   R                  UR                  :X  d   eS
[!        UR"                  5      ;   d   e[%        U5      [%        U 5      :X  d   e['        [)        U[        SS9[)        U [        SS95        SSS5        g! , (       d  f       GN= f! , (       d  f       GNj= f! , (       d  f       GN= f! , (       d  f       g= f)zTest that :class:`LabelBinarizer` works correctly with the array API for binary
and multi-class inputs for numerical labels and non-sparse outputs.
Tarray_api_dispatchr   z3`sparse_output=True` is not supported for array APIri   r(   NzD`LabelBinarizer` was fitted on a sparse matrix, and therefore cannotr   intcpuxpr   )r   r6   asarrayr   r   r^   rt   ru   r   rb   rL   sparse_input_r;   r9   r   __name__strrV   array_api_devicer   r   r:   )ro   rq   r>   array_namespacedevice_name
dtype_namer   r   y_npsparse_output_msglb_np	lb_sparsesparse_input_msglb_xp	binarizedfitted_classesexpected_xpbinarized_inverses                     r$   )test_label_binarizer_array_api_compliancer      s   * &oJOJB::a=D	4	0JJqJ(
 #2&& Uz1BCT266q9 D #6::4@Ez1BC" D '(,,T2I&*I#V  z1AB++BJJxJ,OP C  ''*	Y'*33r{{BBBIOO,,,,	*.>q.AAAAI"U3RZZ5I	
 ^,Q/88BKKGGG/3CA3FFFFN001111Nr%8"**W:M	
 jjj9!33K@./2;;r{{JJJ-334444 126Fq6IIII%"U;A"U+	
a 
1	0 DC DC CB+ 
1	0sU   ;M)L9M;L0AMM/G&M
L-	(M0
L?	:M
M	M
M"zvalues, classes, unknown)rS   r-   rT   r-   rT   int64r]   rl      )rF   r#   rJ   r#   rJ   r#   rF   rJ   rG   )r   objectr   )idsc                    [        5       nUR                  U 5        [        UR                  U5        [        UR	                  U 5      / SQ5        [        UR                  / SQ5      U 5        [        5       nUR                  U 5      n[        U/ SQ5        [        R                  " [        SS9   UR	                  U5        S S S 5        g ! , (       d  f       g = f)N)r-   r   rS   r   rS   zunseen labelsri   )
r   rb   r   r:   rL   r;   r9   r^   rt   ru   )valuesrq   unknownlerets        r$   test_label_encoderr   9  s    0 
BFF6Nr{{G,r||F+_=r++O<fE	B


6
"CsO,	z	9
W 
:	9	9s   .C		
Cc                  x   [        5       n U R                  / SQ5        [        U R                  / SQ5        [        U R	                  / SQ5      / SQ5        [        U R                  / SQ5      / SQ5        [        R                  " [        5         U R	                  SS/5        S S S 5        g ! , (       d  f       g = f)Nr-   r-   r      r   )r   r   r-   r   r   )r   r-   r   r   r   r   r   )r-   rS   rT   rT   r   r   r   r      )	r   rb   r   r:   rL   r;   r^   rt   ru   )r   s    r$    test_label_encoder_negative_intsr   ^  s~    	BFFr{{$45r||$;<>ST
235L 
z	"
aV 
#	"	"s   B++
B9r   r   c                     [        5       nUR                  [        R                  " SS/U S95        Sn[        R
                  " [        US9   UR                  S5        S S S 5        g ! , (       d  f       g = f)Nappleoranger]   zshould be a 1d arrayri   )r   rb   r6   r7   r^   rt   ru   rL   )rV   r   msgs      r$    test_label_encoder_str_bad_shaper   j  sP    	BFF288Wh'u56
 C	z	-
W 
.	-	-s   A''
A5c                     [        5       n [        R                  " [        5         U R	                  / 5        S S S 5        [        R                  " [        5         U R                  / 5        S S S 5        [        5       n U R                  / SQ5        Sn[        R                  " [        US9   U R                  S/5        S S S 5        [        R                  " [        US9   U R                  / SQ5        S S S 5        Sn[        R                  " [        US9   U R                  S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nx= f! , (       d  f       g = f)N)r-   rS   rT   r   r-   z!contains previously unseen labelsri   rO   )rO   z should be a 1d array.+shape \(\) )r   r^   rt   ru   rL   r;   rb   )r   r   s     r$   test_label_encoder_errorsr   s  s    	B	z	"
R 
#	z	"
R  
# 
BFF
-C	z	-
bT" 
.	z	-
\* 
. .C	z	-
R  
.	-! 
#	"	"	" 
.	-	-	-
 
.	-s;   D1E+EE%E61
E 
E
E"%
E36
Fr   c                     [        5       nUR                  U 5        UR                  / 5      n[        [        R
                  " / 5      U5        UR                  / 5      n[        [        R
                  " / 5      U5        g )N)r   rb   rL   r   r6   r7   r;   )r   r   transformedinverse_transformeds       r$   test_label_encoder_empty_arrayr     sZ     
BFF6N,,r"Krxx|[1..r2rxx|%89r%   c                  ~   S S S /n [         R                  " / SQ/ SQ/ SQ/5      nU S   " 5       nS GH  nU  GHz  n[        US	9nUR                  U" 5       5      n[	        U5      U:X  d   eU(       a@  UR
                  R                  UR                  R                  :X  d   eUR                  5       n[        X5        [        / S
QUR                  5        UR                  U5      U:X  d   e[        US	9nUR                  U" 5       5      R                  U" 5       5      n[	        U5      U:X  d   eU(       a@  UR
                  R                  UR                  R                  :X  d   eUR                  5       n[        X5        [        / S
QUR                  5        UR                  U5      U:X  a  GM{   e   GM     g )Nc                  
    / SQ$ Nrh   r-   )r-   rS    r   r%   r$   <lambda>9test_sparse_output_multilabel_binarizer.<locals>.<lambda>      &r%   c                      SS1S1SS14$ NrS   rT   r-   r   r   r%   r$   r   r         !Q!q!f%r%   c                  F    [        [        S5      [        S5      SS1/5      $ Nrh   r   r-   rS   iterr   r%   r$   r   r         d6lDJA78r%   r   r-   r-   rC   r-   r-   r   r   TFr(   rl   )r6   r7   r   r9   r   indicesrV   indptrr    r   r:   r;   rb   rL   )inputsindicator_matinverser)   r<   mlbr?   s          r$   'test_sparse_output_multilabel_binarizerr     sp    	'%8F
 HHiI>?MQikG&C%MBC##CE*CC=M111{{((CJJ,<,<<<<kkm}2y#,,7((-888 &MBC''#%.**351CC=M111{{((CJJ,<,<<<<kkm}2y#,,7((-888/  'r%   c                 L   [        [        S5      [        S5      SS1/5      n[        SS9nUR                  U5        [        R                  " [
        5         UR                  U " [        R                  " / SQ/ SQ/ S	Q/5      5      5        S S S 5        g ! , (       d  f       g = f)
Nrh   r   r-   rS   Fr(   r   )rS   r   r   r   )	r   r   rb   r^   rt   ru   r;   r6   r7   )r|   r<   r   s      r$   .test_sparse_output_multilabel_binarizer_errorsr     sr    
Vd4j1a&1
2C
E
2CGGCL	z	""((Iy)#DEF	
 
#	"	"s   5B
B#c                     S S S /n [         R                  " / SQ/ SQ/ SQ/5      nU S   " 5       nU  H  n[        5       nUR                  U" 5       5      n[	        X5        [	        / SQUR
                  5        UR                  U5      U:X  d   e[        5       nUR                  U" 5       5      R                  U" 5       5      n[	        X5        [	        / SQUR
                  5        UR                  U5      U:X  a  M   e   g )	Nc                  
    / SQ$ r   r   r   r%   r$   r   +test_multilabel_binarizer.<locals>.<lambda>  r   r%   c                      SS1S1SS14$ r   r   r   r%   r$   r   r     r   r%   c                  F    [        [        S5      [        S5      SS1/5      $ r   r   r   r%   r$   r   r     r   r%   r   rC   r   r   rl   )	r6   r7   r   r9   r   r:   r;   rb   rL   )r   r   r   r<   r   r?   s         r$   test_multilabel_binarizerr     s     	'%8F
 HHiI>?MQikG!#&=.9cll3$$S)W444 "#ggcen&&su-=.9cll3$$S)W444 r%   c                      [        5       n SS/S// /n[        R                  " SS/SS/SS//5      n[        U R	                  U5      U5        g )Nr-   rS   r   )r   r6   r7   r   r9   )r   ro   Ys      r$   &test_multilabel_binarizer_empty_sampler     sR    

C
Q!bA
1a&1a&1a&)*As((+Q/r%   c                  (   [        5       n SS//n[        R                  " SS/SS//5      nSn[        R                  " [
        US9   U R                  U5      R                  SS/SS//5      nS S S 5        [        R                  " / SQ/ SQ/5      n[        / S	QS
9n [        R                  " [
        US9   U R                  U5      R                  SS/SS//5      nS S S 5        [        WU5        g ! , (       d  f       N= f! , (       d  f       N,= f)Nr-   rS   r   zunknown class.* will be ignoredri   r   rC   rD   rl   rs   )	r   r6   r7   r^   warnsUserWarningrb   rL   r   )r   ro   r   warning_messagematrixs        r$   'test_multilabel_binarizer_unknown_classr     s    

C
QA
1a&1a&!"A7O	k	9%%1v1v&67 
: 	)Y'(A
i
0C	k	9%%1v1v&67 
:vq! 
:	9
 
:	9s   'C26'D2
D 
Dc                  6   / SQn [         R                  " / SQ/ SQ/ SQ/5      n[        / SQS9n[        UR	                  U 5      U5        [        UR
                  / SQ5        [        / SQS9n[        UR                  U 5      R                  U 5      U5        [        UR
                  / SQ5        [        / SQS9n[        UR	                  U 5      [         R                  " S/S/S//U45      5        [        UR
                  / SQ5        [        U 5      n [        / SQS9n[        UR                  U 5      R                  U 5      U5        S	n[        / S
QS9n[        R                  " [        US9   UR                  U 5        S S S 5        g ! , (       d  f       g = f)Nr   r   rC   r-   r   r-   r-   rT   rS   rs   )r   r-   rT   rS   r   ztThe classes argument contains duplicate classes. Remove these duplicates before passing them to MultiLabelBinarizer.)r-   rT   rS   rT   ri   )r6   r7   r   r   r9   r:   rb   rL   hstackr   r^   rt   ru   )r<   r   r   rx   s       r$   'test_multilabel_binarizer_given_classesr     s<   
 CHHiI>?M
i
0Cs((-}=s||Y/ i
0Cswws|--c2MBs||Y/ l
3C#		QC!qc?M*J K s||\2 s)C
i
0Cswws|--c2MB	G  l
3C	z	1 
2	1	1s   /F


Fc                     / SQn [         R                  " / SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/5      n[        / SQS9n[        UR	                  U 5      U5        / SQUl        [        UR	                  U 5      U5        g )	Nr   r   rC   r   r   r   rs   rl   )r6   r7   r   r   r9   rq   )r<   r   indicator_mat2r   s       r$   (test_multilabel_binarizer_multiple_callsr      sn    
 CHHiI>?MXXy)Y?@N i
0Cs((-}=CKs((-~>r%   c                  p   S/S/S//n [         R                  " / SQ/ SQ/ SQ/5      n[        5       n[        UR	                  U 5      U5        [        UR                  U5      U 5        [        5       n[        UR                  U 5      R                  U 5      U5        [        UR                  U5      U 5        g )Nr-   r   rS   rD   rC   rE   )r6   r7   r   r   r9   r;   rb   rL   r<   r   r   s      r$   .test_multilabel_binarizer_same_length_sequencer   .  s    3aS/CHHiI>?M

Cs((-}=s,,];SA 
Cswws|--c2MBs,,];SAr%   c                  R   [        / SQ5      n / SQ/ SQ4/ SQ/ SQ4/ SQU 4/n[        R                  " / SQ/ SQ/ S	Q/5      nU GH
  u  p4[        5       n[        R                  " U[        S
9n[        UR                  U5      U5        [        UR                  U5        [        R                  " UR                  U5      [        S
9n[        Xc5        [        5       n[        UR                  U5      R                  U5      U5        [        UR                  U5        [        R                  " UR                  U5      [        S
9n[        Xc5        GM     [        5       n[        R                  " [        5         UR                  0 0 SS04/5        S S S 5        g ! , (       d  f       g = f)N)r   rS   rT   ))23)1)r   r   )r   r   r   ))rF   rJ   r"   )r#   rF   r   ))r   r   )r   )r   r   r   rC   r   r]   r#   rF   )r   r6   r7   r   r   r   r9   r:   r;   rb   rL   r^   rt   	TypeError)tuple_classesr   r   r<   rq   r   indicator_mat_invs          r$   ,test_multilabel_binarizer_non_integer_labelsr   =  sI   $%78M	)?;	)?;	.>F
 HHiI>?M!#hhs&)3,,S1=A3<<1HHS%:%:=%IQWX,2 "#3773<11#6F3<<1HHS%:%:=%IQWX,2   
C	y	!B"sCj!123 
"	!	!s   7F
F&c                      S/n [         R                  " SS//5      n[        5       n[        UR	                  U 5      U5        g )Nr-   r-   r-   r   r-   )r6   r7   r   r   r9   r   s      r$   $test_multilabel_binarizer_non_uniquer   Z  s:    .CHHq!fX&M

Cs((-}=r%   c                  X   S/n [        5       nUR                  U 5        [        R                  " [        5         UR                  [        R                  " SS//5      5        S S S 5        UR                  [        R                  " SS//5      5        UR                  [        R                  " SS//5      5        UR                  [        R                  " SS//5      5        [        R                  " [        5         UR                  [        R                  " S//5      5        S S S 5        [        R                  " [        5         UR                  [        R                  " / SQ/5      5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       Nl= f! , (       d  f       g = f)Nr   r-   rT   r   r-   r-   r-   )r   r9   r^   rt   ru   r;   r6   r7   )r<   r   s     r$   ,test_multilabel_binarizer_inverse_validationr   a  s   .C

Cc	z	"bhhAx01 
# "((QF8,-"((QF8,-"((QF8,- 
z	"bhhuo. 
#	z	"bhh	{34 
#	" 
#	" 
#	"	"	"s#   )E8<(F
)F8
F

F
F)c                  N   [        SS// SQS9n [        R                  " / SQ/ SQ/5      n[        X5        [        SS// SQS9n [        R                  " / SQ/ SQ/5      n[        X5        [        / S	Q/ S
QS9n [        R                  " / SQ/ SQ/ SQ/ SQ/5      n[        X5        g )Nr-   r   )r-   rS   r   r   rs   r5   r2   )r-   r   r   rS   r4   )r   r-   rS   rT   )rT   rS   r   r-   r3   )r   r6   r7   r   )outr>   s     r$   $test_label_binarize_with_class_orderr  t  s    
!Q
6Cxx|45Hs% !Q
6Cxx|45Hs%
|
<Cxx|\<PQHs%r%   c           
         S GHP  nUS:X  d  US:w  a9  U(       a2  [         R                  " [        5         [        U UUUUS9  S S S 5        MI  [        U UUUUS9n[	        [        U5      U5        [        U5      U:X  d   e[        U 5      nUS:X  a
  [        XaS9nO[        UUUX2-   S-  S9n[	        [        U5      [        U 5      5        [        X2US9n	U	R                  U 5      n[	        [        U5      U5        [        U5      U:X  d   eU	R                  U5      n
[	        [        U
5      [        U 5      5        [        U
5      [        U 5      :X  a  GMQ   e   g ! , (       d  f       GN= f)	Nr   r   rq   rQ   rR   r)   
multiclassrs   g       @)rp   rq   rr   rk   )r^   rt   ru   r   r   r    r   r   r	   r
   r   r9   r;   )ro   rq   rR   rQ   r>   r)   r   y_typeinversedr=   inverse_outputs              r$   check_binarized_resultsr
    sa   &Ni1n-z*#''"/ +  #'
	 	79-x8	"m333  "\!3IOH 6"%1S8	H 	78,gaj9 M
 $$Q'	79-x8	"m333--i87>2GAJ?'8A;666_ '**s   E
E(	c                  <   / SQn SS/nSnSn[         R                  " SS/SS/SS//5      S S 2S4   R                  S5      n[        XX#U5        / SQn SS/nSnSn[         R                  " SS/SS/SS//5      S S 2S4   R                  S5      n[        XX#U5        g )NrD   r   r-   rS   r   )r   r-   rT   )r6   r7   reshaper
  ro   rq   rR   rQ   r>   s        r$   test_label_binarize_binaryr    s    A!fGIIxx!R2q'Ar734QT:BB7KHA	hG 	A!fGIIxx!Q!Q!Q01!Q$7??HHA	hGr%   c            	          / SQn / SQnSnSnS[         R                  " S5      -  n[        XX#U5        [        R                  " [
        5         [        XSUSS9  S S S 5        g ! , (       d  f       g = f)Nr   r-   rS   rS   r   rT   r   Tr  )r6   eyer
  r^   rt   ru   r   r  s        r$   test_label_binarize_multiclassr    s]    AGII266!9}HA	hG	z	""	QU	
 
#	"	"s   A##
A1arr_typec           	         [         R                  " / SQ/ SQ/ SQ/5      n/ SQnSnSnX1-  nU " U5      n[        XbX4U5        [        R                  " [
        5         [        XbSUSS	9  S S S 5        g ! , (       d  f       g = f)
NrD   r   rI   r  rS   r   r   Tr  )r6   r7   r
  r^   rt   ru   r   )r  y_indrq   rR   rQ   r>   ro   s          r$   test_label_binarize_multilabelr    so     HHiI67EGII HAA	hG	z	""	QU	
 
#	"	"s   A11
A?c                     [         R                  " [        5         [        SS/SS/SSS9  S S S 5        [         R                  " [        SS9   [        SS/SS/S	9  S S S 5        [         R                  " [        S
S9   [        SS/// SQS	9  S S S 5        g ! , (       d  f       Np= f! , (       d  f       NQ= f! , (       d  f       g = f)Nr   rS   r-   rq   rR   rQ   zcontinuous target data is not ri   g333333?g@rs   zmismatch with the labelsrT   rl   )r^   rt   ru   r   r   r%   r$   !test_invalid_input_label_binarizer    s    	z	"1v1vaH 
#	z)I	JSzAq62 
K	z)C	DAx3 
E	D	 
#	"	J	J	D	Ds#   BB'=B8
B$'
B58
Cyesno)birdcatdogrI   )r-   r   rS   r-   r  rD   rC   rE   c           	         [        X4U5      u  pg[        U5      n[        R                  " [        R                  " U 5      R
                  [        R                  5      =(       aC    [        R                  " [        R                  " U5      R
                  [        R                  5      n	[        SS9   UR	                  XS9n U	(       a  U(       d.  Sn
[        R                  " [        U
S9   [        XSS9  SSS5        [        XS9n[        R                  " U[        S	9n[        U5      S
   R                  UR                  :X  d   e[        U5      [        U 5      :X  d   eS[!        UR
                  5      ;   d   e[#        [%        U[        SS9U5        U(       d4  U	(       d-  Sn
[        R                  " [        U
S9   [        XS9  SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g= f)zTest that :func:`label_binarize` works correctly with the array API for binary
and multi-class inputs for numerical labels and non-sparse outputs.
Tr   r   z4`sparse_output=True` is not supported for array API ri   )ro   rq   r)   Nrs   r]   r   r   r   r   z3`classes` contains unsupported dtype for array API )ro   rq   )r   r   r6   
issubdtyper   rV   integerr   r^   rt   ru   r   r   r   r   r   r   r   r   )ro   rq   r>   r   r   r   r   r   xp_is_numpynumeric_dtyper   r   s               r$   (test_label_binarize_array_api_compliancer$    sr   . &oJOJB%b)KMM"**Q-"5"5rzzB r}}


7!!2::HM 
4	0JJqJ(L]]:S9"QtL : 'q:Izz(#6H +A.772;;FFF#I.2B12EEEEC	0000wyRFQ=GCz54 6+ 
1	0 :9 65+ 
1	0s=   09G:)G4C	G:=
G)G:
G&	"G:)
G7	3G::
Hrq   c           
         [        X5      u  pEUS-  n[        SS9   [        U5      nUR                  XgUS9n[	        XSSS9n	UR
                  /n
SUR                  ;  a%  XR                  UR                  UR                  /-  n
U
 H@  nUR                  XkUS9n[	        XSSS9n[        [        XS	9[        XS	9[        U5      S
9  MB     SSS5        g! , (       d  f       g= f)zEnsure label_binarize does not overflow when y has unsigned integer dtype.

In particular, verify that label_binarize does not wrap -1 to the maximum value
of unsigned integer dtypes.

   Tr   )rV   r   r-   r   r  torch)r   )atolN)r   r   r   r   r   uint8r   uint16uint32uint64r   r   r   )r   r   r   rq   r   r   ro   signed_dtypey_signeddesireduint_dtypes
uint_dtypey_uintactuals                 r$   -test_label_binarize_unsigned_integer_overflowr4  0  s     &oCJB"A	4	0%b)::aF:C aSUV xxj "++%IIryy"))<<K%JZZFZCF#FqTVWF!&0!'1#J/	 & 
1	0	0s   B/C
C"c                     [        U " / SQ/ SQ/ SQ/5      [        R                  " S5      5      n[        U[        R                  " / SQ5      5        g )NrD   )r   r   r   rI   rT   r   )r	   r6   aranger   r7   )r|   r?   s     r$    test_inverse_binarize_multiclassr7  Y  s:    
&y+y9:BIIaLC sBHHY/0r%   c                      [        5       n U R                  SSS[        R                  /5        U R	                  [        R                  /5      n[        US/5        g)zUCheck that label encoder encodes nans in transform.

Non-regression test for #22628.
r#   rF   rS   N)r   rb   r6   nanrL   r   )r   y_transs     r$   test_nan_label_encoderr;  a  sD    
 
BFFCc266"#llBFF8$Gw$r%   encoderc                     [        U S5      (       a   eU R                  / SQS9nU R                  / SQ5      n[        X5        g)zpCheck that label encoders do not define set_output and work with y as a kwarg.

Non-regression test for #26854.

set_outputr   )ro   N)r!   r9   r   )r<  y_encoded_with_kwargy_encoded_positionals      r$   *test_label_encoders_do_not_have_set_outputrA  m  sE     w----"00?0C"00A+Br%   ro   r   )rT   r   r   r   r   rT   c           	         [        XU5      u  pEUR                  XS9n[        SS9   [        5       n[        5       nUR	                  U5      nUR                  U5      n	UR                  U	5      n
UR	                  U 5      nUR                  U 5      n[        U	5      S   R                  UR                  :X  d   e[        U
5      S   R                  UR                  :X  d   e[        UR                  5      S   R                  UR                  :X  d   e[        [        U	[        SS9U5        [        [        U
[        SS9U 5        [        [        UR                  [        SS9UR                  5        [        5       n[        5       nUR                  U5      n	UR                  U 5      n[        U	5      S   R                  UR                  :X  d   e[        UR                  5      S   R                  UR                  :X  d   e[        [        U	[        SS9U5        [        [        UR                  [        SS9UR                  5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   r   r   r   )r   r   r   r   rb   rL   r;   r   r   r:   r   r   r6   r9   )ro   r   r   r   r   r   xp_yxp_labelnp_labelxp_transformedxp_inv_transformednp_transformeds               r$   'test_label_encoder_array_api_compliancerI  {  s    &oJOJB::a:'D	4	0>><<%!++D1%77G<<?!++A.^,Q/88BKKGGG/03<<KKKX../2;;r{{JJJ7>bGX7#5"UKQOH%%"U;X=N=N	
  >>!//5!//2^,Q/88BKKGGGX../2;;r{{JJJ7>bGXH%%"U;X=N=N	
1 
1	0	0s   H!I
I)Qnumpyr6   r^   scipy.sparser   sklearnr   r   sklearn.preprocessing._labelr   r   r   r	   r
   r   sklearn.utils._array_apir   r   r   r   r   r   r   r   r   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r   r   r   r   sklearn.utils.multiclassr   sklearn.utils.validationr   	load_irisirisr    rA   rM   rU   markparametrizerf   r{   r   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r$  r4  r7  r;  rA  rI  r   r%   r$   <module>rW     sp     ! ,    
  4 5&7R&78 "AB$7* 8 C*$7Ft .9
 :
, 	1vaS1#s34<|D	

 .-/=
	
=
@  HH_G4HHYg.HHaS(	
 HH.f=HH_F3HHcU&)	
 HH./HH_%HHcUO	
" 	#'  *+* 	 5("34 5!. 
0
*&9
*+
 	#  ::"9J .9
 :
520" F?B4:>5&&07fH&
 XXJ  	
 

 4 	t}sQC!qc&:;"	9i8	

 
1vaS1#s34	y9iI"NO	 .-/"5	""5J .-/ aVY$78! 9	
!H .91 :1	%  02E2GHCC .-/ 
!
$%
#$
	
r%   