
    Wh-                    2   d dl Z d dlmZ d dlm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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&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d d	l?m@Z@ d d
lAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZN d dlOmPZP d dlQmRZRmSZSmTZTmUZU d dlVmWZWmXZXmYZYmZZZm[Z[m\Z\ d dl]m^Z^m_Z_m`Z` d dlambZb d dlcmdZdmeZe i de)de*de/de0de-de2de+ded ee7d      de;de<d ee1d        d!e.d"e,d# ee1d$       d% eed$       d&ed'eiZfi d(ed)ed* eed+,      d- eed./      d0ed1d2 d3e3d4 ee3d+5      d6e"d7e>d8 ee>d./      d9e$d:e6d;e8d<e d= ee!d>?      d@ ee!dA?      i dBe(dC ee!dDdAE      dF ee dDG      dH ee!dDd>E      dI ee6dDG      dJ ee8dDG      dK ee$dDG      dL ee!dMdAE      dN ee dMG      dO ee!dMd>E      dP ee6dMG      dQ ee8dMG      dR ee$dMG      dS ee!dTdAE      dU ee dTG      dV ee!dTd>E      dW ee6dTG       ee8dTG       ee$dTG       ee!dXdAE       ee dXG       ee!dXd>E       ee6dXG       ee8dXG       ee$dXG      edY	ZgdZ Zhe:ehed[Zii d\ed]e&d^e'd_ ee'd./      d`e#daedbe9dc ee9dDG      dd ee9dXG      de ee9dMG      df ee9dTdgh      di ee9dDdgh      dj ee9dTdkh      dl ee9dDdkh      dm ee9dAn      doedp eedDG       eedXG       eedMG      e%e4ee=dqZj ek       Zlelj                  ej       elj                  eg       elj                  ef       elj                  ei       h drZnh dsZoenj                  eo      Zqh dtZrh duZsh dvZth dwZuh dxZvh dyZwh dzZxh d{Zyh d|Zzh d}Z{h d~Z|h dZ}ddhZ~d Zd Zd Zej                  j                  d eez            d        Zej                  j                  d ee{            d        Zd Zej                  j                  d e eel      eqz
              d        Zd Zej                  j                  d e eel      eqz
              d        Zej                  j                  d e eeg      eqz
              d        Zej                  j                  dej      d        Zd dge
j                  e
j                  gfd dge
j                  e
j                  gfd dge
j                  e
j                  gfd dge
j                  dgfd dge
j                  dgfgZej                  j                  d eejj#                         efj#                                     ej                  j                  de      d               Zej                  j                  degj#                               ej                  j                  dee
j                  dd>gg dfe
j                  dd>gg dfgz         d               Zej                  j                  degj#                               d        Zd Zd Zej                  j/                  d      ej                  j                  d e eel      eqz
   eej      z
              d               Zej                  j/                  d      ej                  j                  d eeyexz              d               Zej                  j                  d eey            d        Zej                  j                  d eey            d        Zej                  j/                  d      ej                  j                  de^      d               Zej                  j                  d eex            d        Zej                  j                  d eev            d        Zej                  j                  d eev            d        Zej                  j                  d eevjA                  ex                  d        Zd Zd Zej                  j                  d eer            d        Zej                  j                  d eeresz              d        Zej                  j                  d eer            d        Zd Zej                  j                  d eer            d        Zd Zej                  j                  d e eel      jA                   eef            e|z
              d        Zej                  j                  d e eel      jA                   eef            e|z
              d        Zej                  j                  d e eel       eef      z
  e|z
  enz
              d        Zej                  j                  d e eel       eef      z
  e|z
  eqz
              d        Zej                  j                  d eexewz  e|z
              d        Zej                  j                  d eeye|z
              d        Zd Zej                  j                  d eexd3hz
              d        Zej                  j                  d eeweyz              d        Zej                  j                  d e eej      eqz
              d        Zej                  j                  deg      d        Zej                  j                  ded+fed+fe d.f ee!d?      d.fe$d.fe5d+fe6d.fe8d.fe:d+fg	      ej                  j                  deeg      d               Zd Zd Zd Zd Zd Zd Zd Zi eeeege eeege!eege$eeege3eeege6eeege8eeege>eeege"eeege1eg ee1d       eg ee1d       ege7eegeEegeeege*eege-eegi e/eege0eegeegeHege.egeBege,ege)ege+eegeCegeIegeDegeFegeGegeJegeKege;eege<eegeLegiZefdZej                  j                  d eU       eTë      ej                  j                  d e             dń               Zej                  j                  dddg      ej                  j                  d eel            dɄ               Zdʄ Zej                  j                  d eel            d˄        Zy)    N)partial)	signature)chainpermutationsproduct)config_context)make_multilabel_classification)UndefinedMetricWarning),accuracy_scoreaverage_precision_scorebalanced_accuracy_scorebrier_score_losscohen_kappa_scoreconfusion_matrixcoverage_errord2_absolute_error_scored2_pinball_scored2_tweedie_score	dcg_score	det_curveexplained_variance_scoref1_scorefbeta_scorehamming_loss
hinge_lossjaccard_score%label_ranking_average_precision_scorelabel_ranking_losslog_lossmatthews_corrcoef	max_errormean_absolute_errormean_absolute_percentage_errormean_gamma_deviancemean_pinball_lossmean_poisson_deviancemean_squared_errormean_squared_log_errormean_tweedie_deviancemedian_absolute_errormultilabel_confusion_matrix
ndcg_scoreprecision_recall_curveprecision_scorer2_scorerecall_scoreroc_auc_score	roc_curveroot_mean_squared_errorroot_mean_squared_log_errortop_k_accuracy_scorezero_one_loss)_average_binary_score)additive_chi2_kernelchi2_kernelcosine_distancescosine_similarityeuclidean_distanceslinear_kernelpaired_cosine_distancespaired_euclidean_distancespolynomial_kernel
rbf_kernelsigmoid_kernel)LabelBinarizer)shuffle)_atol_for_type_convert_to_numpy_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)_array_api_for_testsassert_allcloseassert_almost_equalassert_array_equalassert_array_lessignore_warnings)COO_CONTAINERSparse_version
sp_version)type_of_target)_num_samplescheck_random_stater!   r"   r'   r(   r%   r*   r#   r   r/   variance_weighted)multioutputr3   r4   mean_normal_deviance)powerr&   r$   mean_compound_poisson_deviancegffffff?r   r   r   r   r    adjusted_balanced_accuracy_scoreT)adjustedunnormalized_accuracy_scoreF	normalizeunnormalized_confusion_matrixnormalized_confusion_matrixc                      t        | i |j                  d      t        | i |j                  d      d d t        j                  f   z  S )Nfloat   axis)r   astypesumnpnewaxis)argskwargss     [/var/www/html/jupyter_env/lib/python3.12/site-packages/sklearn/metrics/tests/test_common.py<lambda>rm      sM    $)&)009
D
+F
+
/
/Q
/
72::
F	G     (unnormalized_multilabel_confusion_matrix/unnormalized_multilabel_confusion_matrix_sample)
samplewiser   r6   unnormalized_zero_one_lossr   r.   r0   r   f2_score   )beta
f0.5_score      ?matthews_corrcoef_scoreweighted_f0.5_scoreweightedaverageru   weighted_f1_scorer|   weighted_f2_scoreweighted_precision_scoreweighted_recall_scoreweighted_jaccard_scoremicro_f0.5_scoremicromicro_f1_scoremicro_f2_scoremicro_precision_scoremicro_recall_scoremicro_jaccard_scoremacro_f0.5_scoremacromacro_f1_scoremacro_f2_scoremacro_precision_scoresamples)	macro_recall_scoremacro_jaccard_scoresamples_f0.5_scoresamples_f1_scoresamples_f2_scoresamples_precision_scoresamples_recall_scoresamples_jaccard_scorer   c            
         t        | i |\  }}}t        |      t        |      z
  }t        j                  ||t        j                  |j                  t        j                        d|fdt        j                  g      g      S )a'  
    The dimensions of precision-recall pairs and the threshold array as
    returned by the precision_recall_curve do not match. See
    func:`sklearn.metrics.precision_recall_curve`

    This prevents implicit conversion of return value triple to an higher
    dimensional np.array of dtype('float64') (it will be of dtype('object)
    instead). This again is needed for assert_array_equal to work correctly.

    As a workaround we pad the threshold array with NaN values to match
    the dimension of precision and recall arrays respectively.
    r   constant)	pad_widthmodeconstant_values)r-   lenrh   arraypadrf   float64nan)rj   rk   	precisionrecall
thresholdspad_threshholdss         rl   (precision_recall_curve_padded_thresholdsr      sz     %;D$KF$K!Ivz)ns:6O88FF!!"**-o.!#			
 rn   )r2   r-   r   r   r   r   unnormalized_log_lossr   r   r1   weighted_roc_aucsamples_roc_aucmicro_roc_aucovr_roc_aucovr)r|   multi_classweighted_ovr_roc_aucovo_roc_aucovoweighted_ovo_roc_aucpartial_roc_auc)max_fprr    weighted_average_precision_score)samples_average_precision_scoremicro_average_precision_scorer   r,   r   r5   >   r   r,   r   r   r   r   r   r   r   r   rp   r   >   r   rs   r   r2   r0   r   r   r1   r   r.   r   r   r-   rv   >   r   rs   r0   r   r.   rv   >   r1   r   r   >   r   rs   r   r2   r0   r   r.   r   r-   r   r   r   r   rv   >"   r   rs   r   r   r2   r0   r   r   r   r   r   r.   r   r   r}   r   r   r   r   r   r   r   r   r-   r   r   r`   r_   ro   rp   rv   r   r   ry   >   r6   r   r5   >   r   r   r,   r   r1   r   r   r   r   r   r   r   r   r   r   r   r   >   r   r6   r   r   r   r   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   rr   r\   ro   r   r   r   ry   >   r/   r   r%   r'   r"   r*   r(   r   r3   r   r4   r#   >   r   r!   r   r   r6   r   r   r   r   r   r%   r'   r   r   r"   r   rW   r*   r   r   r   r(   rx   r3   rr   r4   r\   r   >   rs   r/   r   r2   r   r0   r   r.   r   r   r}   r   r   r$   r   r&   r-   r   r   r   r   r   r`   r_   r#   rY   rZ   ro   rv   r   ry   >   r!   r   r   r*   >   r   r$   r&   rY   c                     t        t        | j                         |j                                     dz   }| |z  } ||z  }| |fS )zMake targets strictly positiverc   )absminy1y2offsets      rl   _require_positive_targetsr   B  s?    RVVXrvvx()A-F&LB&LBr6Mrn   c                    t        t        | j                         |j                                     dz
  }| j                  t        j                        } |j                  t        j                        }| |z  } ||z  }| |fS )z$Make targets strictly larger than -1gGz?)r   r   rf   rh   r   r   s      rl   _require_log1p_targetsr   J  sc    RVVXrvvx()D0F	2::	B	2::	B&LB&LBr6Mrn   c                      t         t        z  t        t              z  t        z  t        t
              k(  sJ t         t        z  t               k(  sJ y N)SYMMETRIC_METRICSNOT_SYMMETRIC_METRICSsetTHRESHOLDED_METRICS"METRIC_UNDEFINED_BINARY_MULTICLASSALL_METRICS rn   rl   test_symmetry_consistencyr   T  sX     	
	 
!
"	# -	- 
[	    55#%???rn   namec                    t        d      }|j                  ddd      }|j                  ddd      }| t        v rt        ||      \  }}n| t        v rt        ||      \  }}|j                  ddd      }|j                  ddd      }t        |    }| t        v r/| t        v r t         |||       |||      d| z         y J d       t         |||       |||      d| z         y )	Nr   rt      sizer      z%s is not symmetricerr_msgz This case is currently unhandled)
rT   randintMETRICS_REQUIRE_POSITIVE_Yr   METRICS_WITH_LOG1P_Yr   r   METRIC_UNDEFINED_BINARYMULTILABELS_METRICSrJ   )r   random_statey_truey_pred
y_true_bin
y_pred_binmetrics          rl   test_symmetric_metricr   `  s    &a(L!!!QU!3F!!!QU!3F))266B	%	%/?%%a%:J%%a%:JF&&&&z:.z:.-4 =<<566"66")D0	
rn   c                 F   t        d      }t        |    }d}t        d      D ]m  }|j                  ddd      }|j                  ddd      }| t        v rt        ||      \  }} |||      } |||      }t        j                  ||      rkd} n |rt        |  d      y )	Nr   T   rt   r   r   F seems to be symmetric)	rT   r   ranger   r   r   rh   allclose
ValueError)	r   r   r   always_symmetric_r   r   nominalswappeds	            rl   test_not_symmetric_metricr     s     &a(LF
 1X %%a%7%%a%7--6vvFNFF(({{7G,$ D6!7899 rn   c                  0   d} d}t        |        t        j                  t        | d      5  t        |       d d d        t	        |       t        j                  t
        |  d      5  t	        |        d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)Nr   r0   z is not symmetricmatchr   )r   pytestraisesAssertionErrorr   r   )symnot_syms     rl   test_symmetry_testsr     s    
CG #	~y8I-J	K 'g&' g&	zC50F)G	H '!#&' '' '
' 's   B +B B	Bc                 x   t        d      }|j                  ddd      }|j                  ddd      }| t        v rt        ||      \  }}n| t        v rt        ||      \  }}t        ||d      \  }}t               5  t        |    }t         |||       |||      d| z         d d d        y # 1 sw Y   y xY w)Nr   rt   r   r   r    %s is not sample order invariantr   )
rT   r   r   r   r   r   rD   rN   r   rJ   )r   r   r   r   y_true_shuffley_pred_shuffler   s          rl   test_sample_order_invariancer     s     &a(L!!!QU!3F!!!QU!3F))266B	%	%/?%,VV!%L"NN		 
T"66">>26=	

 
 
s   >)B00B9c                  d   t        d      } | j                  ddd      }| j                  ddd      }| j                  |j                        }||j	                  dd      z  }t        |||d      \  }}}t        D ]*  }t        |   }t         |||       |||      d	|z  
       , t        D ]*  }t        |   }t         |||       |||      d	|z  
       , t        D ]I  }t        |   }t         |||       |||      d	|z  
       t         |||       |||      d	|z  
       K y )Nr   rt   r   r   rc   Tre   keepdimsr   r   r   )rT   r   uniformshaperg   rD   r   r   rJ   THRESHOLDED_MULTILABEL_METRICSMULTIOUTPUT_METRICS)	r   r   r   y_scorer   r   y_score_shuffler   r   s	            rl   7test_sample_order_invariance_multilabel_and_multioutputr    si   %a(L !!!QX!6F!!!QX!6F"""5G w{{D{11G6=a73NNO $ 
T"66">>26=	

 / 
T"67#>?36=	

 $ 
T"67#>?36=	

 	66">>26=	

rn   c                 <   t        d      }|j                  ddd      }|j                  ddd      }| t        v rt        ||      \  }}n| t        v rt        ||      \  }}t        |      }t        |      }t        j                  |      t        j                  |      }}t        |j                  d       t        |j                  d       t        j                  |d      }t        j                  |d      }	t        j                  |d      }
t        j                  |d      }t               5  t        |    } |||      }t         |||      |d| z  	       t         |||      |d
| z  	       t         |||	      |d| z  	       t         |||      |d| z  	       t         |||      |d| z  	       t         |||	      |d| z  	       t         |||      |d| z  	       t         |||	      |d| z  	       t         |||      |d| z  	       t        j                   t"              5   |||       d d d        t        j                   t"              5   ||
|       d d d        t        j                   t"              5   |||       d d d        t        j                   t"              5   ||
|       d d d        t        j                   t"              5   |||       d d d        t        j                   t"              5   ||
|	       d d d        | t$        t&        z  t(        z  vrqd| v rBt        j*                  t,              5  t/        j0                   ||
|            sJ 	 d d d        n+t        j                   t"              5   ||
|       d d d        d d d        y # 1 sw Y   qxY w# 1 sw Y   SxY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)Nr   rt   r   r   rc   )rc   )rc   r  z,%s is not representation invariant with listr   z3%s is not representation invariant with np-array-1dz7%s is not representation invariant with np-array-columnz@%s is not representation invariant with mix np-array-1d and listzK%s is not representation invariant with mix np-array-1d and np-array-columnzD%s is not representation invariant with mix list and np-array-columnroc_auc)rT   r   r   r   r   r   listrh   r   rL   ndimreshaperN   r   rJ   r   r   r   r  r   r   warnsr
   mathisnan)r   r   r   r   y1_listy2_listy1_1dy2_1d	y1_column	y2_columny1_rowy2_rowr   measures                 rl   &test_format_invariance_with_1d_vectorsr    s    &a(L			a		/B			a		/B))*2r2B	%	%'B/B2hG2hG88B<"5Euzz1%uzz1%

5'*I

5'*IZZw'FZZw'F		 f+T"R.7G$BTI	
 	5% IDP	
 	9i(MPTT	
 	5'"V	
 	7E"V	
 	5)$2 		
 	9e$2 		
 	7I&V	
 	9g&V	
 ]]:& 	"5&!	"]]:& 	"65!	"]]:& 	$7F#	$]]:& 	$67#	$]]:& 	&9f%	&]]:& 	&69%	&
 "@@CVV
 D  \\"89 >::fVV&<===> > ]]:. +66*+Kf+ f+Z	" 	"	" 	"	$ 	$	$ 	$	& 	&	& 	&> >+ +Kf+ f+s   1DP5
N.?!P 
N;*!P
O!P6
O !P!
O"+!P
O.;PO:1"P
PP.N8	3P;O	 PO	PO	P"O+	'P.O7	3P:P	?PP	PPc                 @   t        d      }|j                  ddd      }|j                  ddd      }t        j                  ddg      |   }t        j                  ddg      |   }d}ddg}t	               5  t
        |    } |||      }	|}
| t        v rt        |
|      }
 |
||      }t        |	|dj                  |       	        |
|j                  d
      |j                  d
            }t        |	|dj                  |       	       | t        v rwt        |
|      }
 |
||      }t        |	|dj                  |       	        |
|j                  d
      |j                  d
            }t        |	|dj                  |       	       d d d        y # 1 sw Y   y xY w)Nr   rt   r   r   eggsspam	pos_label+{0} failed string vs number invariance testr   O2{0} failed string object vs number invariance test)labelsz,{0} failed string vs number  invariance test)rT   r   rh   r   rN   CLASSIFICATION_METRICSMETRICS_WITH_POS_LABELr   rL   formatrf   METRICS_WITH_LABELS)r   r   r   r   y1_stry2_strpos_label_str
labels_strr   measure_with_number
metric_strmeasure_with_strmeasure_with_strobjs                rl   7test_classification_invariance_string_vs_numbers_labelsr-  s  s   
 &a(L			a		/B			a		/BXXvv&'+FXXvv&'+FM&!J		 &'-$Rn 
)) }EJ%ff5AHHN	
 )s);V]]3=OPHOOPTU	
 && J?J)&&9# FMMdS #-V]]3-?sAS"T##FMMdSE& & &s   8DFFc                    t        d      }|j                  ddd      }|j                  ddd      }t        j                  ddg      |   }d}t	               5  t
        |    }| t        vr||}| t        v rt        ||      } |||      } |||      }	t        ||	dj                  |       	        ||j                  d
      |      }
t        ||
dj                  |       	       net        j                  t              5   |||       d d d        t        j                  t              5   ||j                  d
      |       d d d        d d d        y # 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rt   r   r   r  r  r  r  r   r  r  )rT   r   rh   r   rN   r   r   r"  r   rL   r#  rf   r   r   r   )r   r   r   r   r%  r'  r   r*  r)  r+  r,  s              rl   4test_thresholded_invariance_string_vs_numbers_labelsr/    ss    &a(L			a		/B			a		/BXXvv&'+FM		 /$T*..J--$Z=I
"(R.)&"5# ELLTR #-V]]3-?"D##LSS z* #vr"#z* /v}}S)2./9/ /4# #/ /9/ /s=   B'E.
E!E.,E"E.E	E."E+	'E..E7rc   r   zy_true, y_scorec                     | t         k(  r|g}|g}t        j                  t        d      5   | ||       d d d        y # 1 sw Y   y xY w)Nzcontains (NaN|infinity)r   )r   r   r   r   )r   r   r  s      rl   )test_regression_thresholded_inf_nan_inputr1    sH     )	z)C	D  vw     s	   
>A)rc   rt      c                 v   t        j                  |      j                         s+d}t        j                  |      j	                         rd}n-d}n*d}t        j                  |      j	                         rd}nd}d| d| }t        j                  t        |      5   | ||       ddd       y# 1 sw Y   yxY w)	z{check that classification metrics raise a message mentioning the
    occurrence of non-finite values in the target vectors.r   NaNzinfinity or a value too larger   zInput z
 contains r   N)rh   isfiniteallr  anyr   r   r   )r   r   r  
input_nameunexpected_valuer   s         rl   !test_classification_inf_nan_inputr:    s      ;;v""$
88F!$>
88G  "$>zl*-=,>?G	z	1  vw     s   
B//B8c                     g dg d}}d}t        j                  t        |      5   | ||       ddd       y# 1 sw Y   yxY w)zocheck that classification metrics raise a message of mixed type data
    with continuous/binary target vectors.)abr<  皙?皙?333333?zJClassification metrics can't handle a mix of binary and continuous targetsr   N)r   r   r   )r   r   r  r   s       rl   +test_classification_binary_continuous_inputrB    sD     &GFT  
z	1  vw     s	   
9Ac                     t         |    }| t        v rddg}n| t        v rddg}nddg}t        |d      D ]  \  }} ||g|g        y )Nrc   rt   gffffffr   repeat)r   r   r   r   )r   r   valuesijs        rl   check_single_samplerI    se    
 F ))Q	%	%Qq) 1sQCrn   c                     t         |    }t        ddgd      D ]<  \  }}}} |t        j                  ||gg      t        j                  ||gg             > y )Nr   rc      rD  )r   r   rh   r   )r   r   rG  rH  kls         rl   check_single_sample_multioutputrN  -  sV    Fq!fQ/ 7
1arxx!Q!288aVH#567rn   ignorec                     t        |        y r   )rI  r   s    rl   test_single_samplerR  4  s     rn   c                     t        |        y r   )rN  rQ  s    rl   test_single_sample_multioutputrT  D  s     $D)rn   c                     t        j                  g dg dg dg      }t        j                  ddgddgddgg      }t        |    }t        j                  t
              5   |||       d d d        y # 1 sw Y   y xY w)N)rc   r   r   rc   )r   rc   rc   rc   )rc   rc   r   rc   r   rc   rh   r   r   r   r   r   )r   r   r   r   s       rl   (test_multioutput_number_of_output_differrW  J  sm    XX|\<@AFXX1v1v1v./FF	z	" vv  s   
A22A;c           	      6   t        d      }|j                  ddd      }|j                  ddd      }t        |    } |||      }t        d      D ]F  }|j	                  |j
                  d         }t         ||d d |f   |d d |f         |d| z         H y )	Nr   rt   r   r   r   r2  rc   z'%s is not dimension shuffling invariantr   )rT   r   r   r   permutationr   rJ   )r   r   r   r   r   errorr   perms           rl   =test_multioutput_regression_invariance_to_dimension_shufflingr]  T  s     &a(L!!!QW!5F!!!QW!5FF66"E1X 
''Q86!T'?F1d7O4=F	

rn   z1ignore::sklearn.exceptions.UndefinedMetricWarningcoo_containerc                    d}d}t        d|d|d      \  }}t        d|d|d      \  }}t        j                  |dg|z  gg      }t        j                  |dg|z  gg      } | |      } | |      }t        |      }t        |      }	|D 
cg c]  }
t        |
       }}
|	D 
cg c]  }
t        |
       }}
t        D ]z  }t
        |   }t        |t              rd|_        ||_	         |||      }t         |||      |d|z  	       t         |||      |d
|z  	       t         |||	      |d|z  	       | y c c}
w c c}
w )NrK  2   rc   r   T
n_features	n_classesr   	n_samplesallow_unlabeledtmpzO%s failed representation invariance between dense and sparse indicator formats.r   z\%s failed representation invariance  between dense array and list of list indicator formats.zW%s failed representation invariance  between dense and list of array indicator formats.)r	   rh   vstackr  r   r   
isinstancer   
__module____name__rJ   rK   )r^  rc  rd  r   r   r   y1_sparse_indicatory2_sparse_indicatory1_list_array_indicatory2_list_array_indicatorr<  y1_list_list_indicatory2_list_list_indicatorr   r   r  s                   rl   )test_multilabel_representation_invariancerq  g  s    II*EAr +EAr 
B!y)*	+B	B!y)*	+B'+'+"2h"2h/FG!d1gGG/FG!d1gGG# '
T" fg& %F"FOR. 	&(;<6 		
 	)+AB% 		
 	*,CD% 		
='
 HGs   D=%Ec           	          dgdgddggg dg gdgt        j                  g ddggd      g}t        |    }|D ]-  }t        j                  t
              5   |||       d d d        / y # 1 sw Y   :xY w)Nrc   rt   r   )r   rt   )r   rc   r   objectdtyperV  )r   multilabel_sequencesr   seqs       rl   +test_raise_value_error_multilabel_sequencesrx    s     qcAq6		
"q!fX. F# ]]:& 	3	 		 	s   
A((A1	c                 N   d}d}t        d      }|j                  d||f      }|j                  d||f      }|j                  |j                        }t        |    }| t
        v r|n|} |||d      }	 |||d      }
t        d|	z  dd	
       t        |	|
|z  d|  
       y )Nrt   r   r   r   Tr]   F      0We failed to test correctly the normalize optionr   Failed with )rT   r   normalr   r   r   rM   rJ   r   rc  rd  r   r   r   r  metricspredmeasure_normalizedmeasure_not_normalizeds              rl   +test_normalize_option_binary_classificationr    s     II%a(L!!!Yi\!BF!!!Yi\!BF!!v||!4G$G117vD >$VTUC!!	B *tf%rn   c                 >   d}d}t        d      }|j                  d||f      }|j                  d||f      }|j                  ||f      }t        |    }| t        v r|n|} |||d      }	 |||d      }
t        d|	z  dd	
       t        |	|
|z  d|  
       y )NrK  r   r   r   Tr]   Frz  r{  r   r|  )rT   r   r   r   r   rM   rJ   r~  s              rl   /test_normalize_option_multiclass_classificationr    s     II%a(L!!!Yi\!BF!!!Yi\!BF""I(>"?G$G117vD >$VTUC!!	B *tf%rn   c                 j   d}d}t        d      }t        d|dd|      \  }}t        d|dd|      \  }}|j                  |j                        }|dg|z  z  }|dg|z  z  }t        |    }| t
        v r|n|}	 |||	d      }
 |||	d	      }t        d
|
z  dd       t        |
||z  d|         y )NrK  d   r   rc   T)rb  rc  r   re  rd  r   r]   Frz  r{  r   r|  )rT   r	   r   r   r   r   rM   rJ   )r   rc  rd  r   r   r   r   r  r  r  r  r  s               rl   /test_normalize_option_multilabel_classificationr    s    
 II%a(L /IAv /IAv """5G qcIoF
qcIoF$G117vD >$VTUC!!	B *tf%rn   c                    |j                   \  }} | ||d       }t        |t        |      D 	cg c]  }	 | |d d |	f   |d d |	f          c}	        | ||d      }
t        |
 | |j                         |j                                       | ||d      }t        |t	        j
                  |             t	        j                  |dt              }t	        j                  |      dk7  r- | ||d      }t        |t	        j                  ||             n | ||d      }t        |d       |rN | ||d      }t        |t	        j
                  t        |      D 	cg c]  }	 | ||	   ||	          c}	             t        j                  t              5   | ||d	       d d d        t        j                  t              5   | ||d
       d d d        y c c}	w c c}	w # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr~   r   r   r   )re   ru  rz   )weightsr   unknowngarbage)r   rJ   r   ravelrh   meanrg   intr|   r   r   r   )r   r   r   y_true_binarizey_pred_binarizeis_multilabelrd  rc  label_measurerG  micro_measuremacro_measurer  weighted_measuresample_measures                  rl   _check_averagingr  1  s    +00Iy 6648M 9%	
 ?1a4(/!Q$*?@	
 667;Mvo3357L7L7NO
 667;MM277=#9: ff_1C8G	vvg!!&&*E("**]G*TU!&&*E(!, 	BGG #9- ?1-q/AB	
 
z	" 2vvy12	z	" 2vvy12 2S	
@2 22 2s#   G
GG$G0$G-0G9c                     t        |      j                  d      }t        |    }| t        v rt	        ||||||       y | t
        v rt	        ||||||       y t        d      )N
multilabelz2Metric is not recorded as having an average option)rR   
startswithr   METRICS_WITH_AVERAGINGr  "THRESHOLDED_METRICS_WITH_AVERAGINGr   )r   r   r  r   r  r  r  r   s           rl   check_averagingr  g  sm    "6*55lCMF%%FFO_m	
 
3	3FG_g}	
 MNNrn   c                 6   d\  }}t        d      }|j                  d||f      }|j                  d||f      }|j                  ||f      }t               j	                  |      }|j                  |      }|j                  |      }	t        | ||||	|       y )N)r`  r2  r   r   )rT   r   r   rC   fit	transformr  )
r   rd  rc  r   r   r   r  lbr  r  s
             rl   test_averaging_multiclassr  x  s     Iy%a(L!!!Yi\!BF!!!Yi\!BF""I(>"?G				f	%Bll6*Oll6*OD&/6?GTrn   c                     d\  }}t        d|d|d      \  }}|d d }|dd  }t        d      j                  d|f      }|}|}	t        | ||||	|       y )	N)(   r   rc   r   Fra  r   r   r   )r	   rT   r}  r  )
r   rd  rc  r   yr   r   r  r  r  s
             rl   test_averaging_multilabelr    s{     !Iy)DAq sVFrsVF #**Y*@GOOD&/6?GTrn   c                     t        j                  d      }t        j                  d      }t        j                  d      }|}|}t        | |||||       y Nr   r2  )rh   zerosr  r   r   r   r  r  r  s         rl   $test_averaging_multilabel_all_zeroesr    sH    XXgFXXgFhhwGOOD&/6?GTrn   c                      t        j                  d      } t        j                  d      }| }|}dd}t        || |||d       y )Nr  c                 &    t        t        | ||      S r   )r7   r.   )r   r  r|   s      rl   rm   z=test_averaging_binary_multilabel_all_zeroes.<locals>.<lambda>  s    =R'> rn   T)r  )r   )rh   r  r  )r   r   r  r  binary_metrics        rl   +test_averaging_binary_multilabel_all_zeroesr    sK    XXgFXXgFOOM rn   c                     t        j                  d      }t        j                  d      }t        j                  d      }|}|}t        | |||||       y r  )rh   onesr  r  s         rl   "test_averaging_multilabel_all_onesr    sH    WWWFWWWFgggGOOD&/6?GTrn   c                    t         j                  j                  d      }|j                  ddt	        |            }| dk(  rt        |d      n|} |||d       }t        | |||t        j                  t	        |                  d	| z  
        ||||      }t        j                  t              5  t        ||       t        d|d|d|       # 1 sw Y   nxY w ||||j                               }t        ||d|d|d| 
        |t        j                  ||d      t        j                  ||d      d       }	t        ||	d| z  
       |dd d   }
t        j                  |      }d|d d d<   |dd d   }|dd d   } ||||
      } ||||      }t        ||d|d|d| 
       | j                  d      s$dD ]  }t        | |||||z        d| z  
       ! dj!                  t#        |      t#        |      t#        |      dz        }t        j                  t        |      5   |||t        j$                  ||g             d d d        y # 1 sw Y   y xY w)Nr   rc   
   r   r5   )rL  sample_weight)r   zAFor %s sample_weight=None is not equivalent to sample_weight=onesr   z>Unweighted and weighted scores are unexpectedly almost equal (z) and (z) for zFWeighted scores for array and list sample_weight input are not equal (z != rd   z.Weighting %s is not equal to repeating samplesrt   zUZeroing weights does not give the same result as removing the corresponding samples (unnormalized)rt   rA  z/%s sample_weight is not invariant under scalingzJFound input variables with inconsistent numbers of samples: \[{}, {}, {}\]r   )rh   randomRandomStater   r   r   rJ   r  r   r   r   r   tolistrE  copyr  r#  rS   hstack)r   r   r   r   rngr  unweighted_scoreweighted_scoreweighted_score_listrepeat_weighted_scoresample_weight_subsetsample_weight_zeroed	y1_subset	y2_subsetweighted_score_subsetweighted_score_zeroedscalingerror_messages                     rl   check_sample_weight_invariancer    s   
))


"CKK2CGK4M &*-C%CWVq!F b"D9r2RWW3r7%;<S
 B-@N 
~	& 
(.9 ).$@
 	

 
 !R}7K7K7MN
 .	6 #
		"m!,
		"m!,
 @4G )A.77=1 !114a4I14a4I"9,@ #2r9MN
 !"7	? ??>*   	Gr2]W-DEIDP		##)6l2.]0Ka0O$
  
z	7 Pr2RYY}/M%NOP P Ps   7!CC!?!I))I2c                     d}t        d      }|j                  |f      }|j                  |f      }t        |    }t        | |||       y )Nr`  r   r   )rT   random_sampler   r  )r   rd  r   r   r   r   s         rl   (test_regression_sample_weight_invariancer  &  sU     I%a(L''i\':F''i\':FF"4@rn   c                    d}t        d      }|j                  |f      }|j                  |f      }t        |    }|j                  |dz
  f      }t        j                  t
        d      5   ||||       d d d        |j                  |dz  f      j                  |df      }t        j                  t
        d	      5   ||||       d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY w)
Nr`  r   r   rc   z'Found input variables with inconsistentr   r  rt   z)Sample weights must be 1D array or scalar)rT   r  r   r   r   r   r
  )r   rd  r   r   r   r   r  s          rl   *test_regression_with_invalid_sample_weightr  7  s     I%a(L''i\':F''i\':FF ..Y]4D.EM	z)R	S <vv];< !..Y]4D.EMM	AM 
z)T	U <vv];< << << <s   .CC%C"%C.c                     d}t        d      }|j                  dd|f      }|j                  dd|f      }|j                  |f      }t        |    }| t        v rt        | |||       y t        | |||       y )Nr`  r   rt   r   )rT   r   r  r   r   r  )r   rd  r   r   r   r  r   s          rl   $test_binary_sample_weight_invariancer  Q  s     I%a(L!!!Qi\!:F!!!Qi\!:F((yl(;GF""&tVVWE&tVVVDrn   c                 l   d}t        d      }|j                  dd|f      }|j                  dd|f      }|j                  |df      }t        |    }| t        v rJt        j                  |       }||j                  d      j                  dd      z  }t        | |||       y t        | |||       y )Nr`  r   r   r   r  rd   rc   )
rT   r   r  r   r   rh   exprg   r
  r  )	r   rd  r   r   r   r  r   tempy_score_norms	            rl   (test_multiclass_sample_weight_invariancer  h  s     I%a(L!!!Qi\!:F!!!Qi\!:F((y!n(=GF""vvwhdhhBh/77A>>&tVV\J&tVVVDrn   c                    t        d      }t        ddddd      \  }}t        ddddd      \  }}t        j                  ||g      }t        j                  ||g      }|j	                  |j
                        }||j                  dd	      z  }t        |    }| t        v rt        | |||       y t        | |||       y )
Nr   rc   r  r`  Fra  r   Tr   )
rT   r	   rh   rg  r   r   rg   r   r   r  )	r   r   r   yaybr   r   r  r   s	            rl   (test_multilabel_sample_weight_invariancer    s     &a(L*bRWEAr +bRWEAr YYBx FYYBx F"""5G w{{D{11GF""&tVVWE&tVVVDrn   c                     t        d      }|j                  ddd      }|j                  ddd      }t        |    }t        | |||       y )Nr   rt   rY  r   )rT   r   r   r  )r   r   r   r   r   s        rl   )test_multioutput_sample_weight_invariancer    sT    
 &a(L!!!QW!5F!!!QW!5FF"4@rn   c                     t        j                  g dg dg      } t        j                  g dg dg      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  |d      \  }}t        D ]Y  }||g| |gfD ]L  \  }}	|t        vr|	j
                  d	kD  rt        |   }
 |
||	|d 
      } |
||	d       }t        |||          N [ y )N)rc   rc   r   r   r   r   rc   rc   )r   rc   rc   r   )r   rc   rt   )r   rt   r2  )r2  r   rc   rt   T)return_inverserc   )r   r|   r~   )rh   r   uniquer  r   r	  r   rL   )y_true_multilabely_pred_multilabely_true_multiclassy_pred_multiclassr   r   inverse_labelsr   r   r   r   score_labelsscores                rl   test_no_averaging_labelsr    s     ,!=>,!=>++XXl#F		&>A~& D 12 12
 	DNFF ..6;;? &F!&&NL6648E|U>-BC	DDrn   c                 "   t        d      }d\  }}|j                  dd||f      }|j                  dd||f      }t        |    } |||      }t        t	        |      |      D ])  }|d d |f   }	|d d |f   }
 ||
|	      }t        ||       + y )Nr   r   rK  rt   r   )rT   r   r   r   r   rK   r   r   rd  rc  r   r  r   r  r\  y_score_permy_true_permcurrent_scores               rl   -test_multilabel_label_permutations_invariancer    s     &a(L Iy!!!Qi-C!DF""1ay).D"EGF67#EU9-y9 2q$w'QWo{L9E=12rn   c                    t        d      }d\  }}|j                  dd||f      }|j                  |j                        }||j	                  dd      z  }d||j	                  d      dk(  df<   d||j	                  d      dk(  df<   t
        |    } |||      }t        t        |      |      D ]Q  }|d d |f   }	|d d |f   }
 ||
|	      }|t        k(  rt        j                  |      sJ |d	kD  rDJ t        ||       S y )
Nr   r  rt   r   rc   Tr   rK  g    .A)rT   r   r   r   rg   r   r   r   r#   rh   r5  rK   r  s               rl   ?test_thresholded_multilabel_multioutput_permutations_invariancer    s+    &a(L Iy!!!Qi-C!DF"""5G w{{D{11G %&F6::a=Aq !$%F6::a=Aq !F67#EU9-y9 6q$w'QWo{L933;;}--- 3&&&  }56rn   c                    d\  }}t        d      }|j                  ||      }t        j                  |       }||j	                  d      j                  dd      z  }|j                  d||      }t        |    } |||      }t        t        |      |      D ]r  }	t        j                  |t              }
t        j                  |      |
t        |	      <   |d d |
f   }t        j                  |	|      } |||      }t        ||       t y )N)r  r2  r   r  rd   rc   r   rt  )rT   randrh   r  rg   r
  r   r   r   r   r  r  aranger  takerK   )r   rd  rc  r   r  r  r   r   r  r\  inverse_permr  r  r  s                 rl   .test_thresholded_metric_permutation_invariancer    s     "Iy%a(L	95G667(DTXX2X&..r155G!!!YY!?FF67#EU9-y9 2xx	5#%99Y#7T$Z q,/ggdF+{L9E=12rn   metric_namec                 L   t         j                  j                  d      }t        j                  dgdz  dgdz  z   t              }|j                  dd|j                        }d	}t        j                  t        |
      5  t        |    ||       d d d        y # 1 sw Y   y xY w)N*   r  r2  r  rt   rt  r   r   z7Labels in y_true and y_pred should be of the same type.r   )rh   r  r  r   rs  r   r   r   r   	TypeErrorr!  )r  r  r   r   r   s        rl   "test_metrics_consistent_type_errorr    s     ))


#C	6(Q,&A-V	<B	Q	(BGG	y	0 4{+B34 4 4s   BB#zmetric, y_pred_thresholddtype_y_strc                    t         j                  j                  d      }t        j                  dgdz  dgdz  z   |      }|j	                  dd|j
                        }|st        j                  ddg|      |   }d	}d
}t        |       j                  d   j                  }|dk(  r|n|}	t        j                  t        |	      5   | ||       d d d        y # 1 sw Y   y xY w)Nr  r  r2  r  rt   rt  r   r   zy_true takes value in {'eggs', 'spam'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitzHpos_label=1 is not a valid label. It should be one of \['eggs', 'spam'\]r  rc   r   )rh   r  r  r   r   r   r   
parametersdefaultr   r   r   )
r   y_pred_thresholdr  r  r   r   err_msg_pos_label_Noneerr_msg_pos_label_1pos_label_defaultr   s
             rl    test_metrics_pos_label_error_strr  $  s    $ ))


#C	6(Q,&A-[	AB	Q	(BXXvv&k:2>	"  	T  "&)44[AII%6!%;!AWG	z	1 r2  s   
CC$c                 d   t        ||      }|j                  ||      }|j                  ||      }	 | ||fi |}
|j                  d      |j                  |d   |      |d<   |j                  d      }t        |t        j
                        r|j                  ||      |d<   	 t	        j                  |       t	        j                  |	       d}|rc | ||	fi |}t        ||
t        |              | ||	fi |}t        ||
t        |              | ||fi |}t        ||
t        |             t        d      5   | ||	fi |}t        t        |j                  |      |      |
t        |             d d d        y # t        t        t        f$ r d}Y w xY w# 1 sw Y   y xY w)N)devicer  rV   TF)atol)array_api_dispatch)rI   asarraygetrh  rh   ndarrayr  RuntimeErrorr   rJ   rE   r   rF   )r   array_namespacer	  
dtype_namea_npb_npmetric_kwargsxpa_xpb_xp	metric_nprV   numpy_as_array_works	metric_xpmetric_xp_mixed_1metric_xp_mixed_2s                   rl   check_array_api_metricr  M  s    
ov	6B::d6:*D::d6:*DtT3]3I)5)+/*6 *4 *
o&  ##M2K+rzz*')zz+fz'Mm$	%


4


4# 477	
+	

 #4??
+	

 #4??
+	
 
4	0 
477	bjj3R8
+	

 
7 |Z0 %
  %%6
 
s   ),F
 ;F&
F#"F#&F/c           	          t        j                  g d      }t        j                  g d      }t        | |||||d        t        j                  g d|      }t        | ||||||       y )Nr  )r   rc   r   rc   r  r  r          r?         @      ?rt  rh   r   r  r   r  r	  r  	y_true_np	y_pred_npr  s          rl   ,check_array_api_binary_classification_metricr(    sm     &I&I HH1DM#rn   c                    t        j                  g d      }t        j                  g d      }ddd}t        | |      }|D ]A  }t        | |||f||d d| t        j                  g d|	      }	t        | |||f|||	d| C y )
N)r   rc   rt   r2  )r   rc   r   rt   r   r   rz   r@  rw   g?r{   r   paramsr  r   rt  rh   r   (_get_metric_kwargs_for_array_api_testingr  
r   r  r	  r  r&  r'  additional_paramsmetric_kwargs_combinationsr  r  s
             rl   0check_array_api_multiclass_classification_metricr3    s     &I&I 2 "J " 4 
			

 		
 		
 !5ZH			

 '		
 		

rn   c                 4   t        j                  ddgddgddgg|      }t        j                  ddgddgddgg|      }ddd}t        | |      }|D ]A  }t        | |||f||d d| t        j                  g d	|      }	t        | |||f|||	d| C y )
Nrc   r   rt  r*  r+  r{   r,  r  )r!  r?  r"  r.  r0  s
             rl   0check_array_api_multilabel_classification_metricr5    s     1a&1a&1a&1DI1a&1a&1a&1DI 2 "J " 4 
			

 		
 		
 
C			

 '		
 		

rn   c                    t        | t              r| j                  j                  n| j                  }|dk(  r't        t        d      k  rt        j                  d       t        j                  g d|      }t        j                  g d|      }i }t        |       j                  }d|v rd |d<   t        | |||f||d| d|v r/t        j                  g d	|      |d<   t        | |||f||d| y y )
Nr&   z1.14.0zJmean_poisson_deviance's dependency `xlogy` is available as of scipy 1.14.0)r"  r?  r#  g      @rt  )rw   rw   rt   rt   r  r  r  )r?  r"        ?rw   )rh  r   funcrj  rQ   rP   r   skiprh   r   r   r  r  )	r   r  r	  r  	func_namer&  r'  r  metric_paramss	            rl   !check_array_api_regression_metricr=    s   (267(C$$I++
]8=T0TX	
 -Z@I)<IMf%00M-')-o&	
   -')+ 
*
o& 			

 	
 	
 (rn   c                 h   t        j                  g dg dg|      }t        j                  g dg dg|      }t        | |||||d        t        j                  ddg|      }t        | ||||||       t        | |||||t        j                  g d	|      
       t        | |||||d
       y )N)rc   r2  rt   )rc   rt   rt   rt  )rc   rK  rK  )rc   rc   rc   r  r?  r"  )r?  rA  ffffff?)r  r  rV   
raw_valuesr$  r%  s          rl   -check_array_api_regression_metric_multioutputrA  $  s     )Y/zBI)Y/zBI HHc3Zz:M# HH_J?  rn   c                    t        j                  g dg dg|      }t        j                  g dg dg|      }i }dt        |       j                  v rd|d<   t	        | |||f||d| d	|d<   t	        | |||f||d| y )
Nr>  )皙?rw   333333?rt  )r@  rA  rC  )rw   rD  r?  dense_outputFr7  T)rh   r   r   r  r  )r   r  r	  r  X_npY_npr  s          rl   check_array_api_metric_pairwiserH  U  s    88_o6jID88_o6jIDM6*555(-n%		

 	
 	
 )-n%	
  rn   g      r8  c              #   V   K   | j                         D ]  \  }}|D ]  }||f 
  y wr   )items)metric_checkersr   checkerscheckers       rl   !yield_metric_checker_combinationsrN    s<     +113 " 	"G'/!	""s   ')z#array_namespace, device, dtype_name)idszmetric, check_funcc                      || |||       y r   r   )r   r  r	  r  
check_funcs        rl   test_array_api_compliancerR    s     v
;rn   df_lib_namepandaspolarsc                 L   t        j                  |      }|j                  g d      }|j                  g d      }t        |    }	  ||j	                         |j	                               }t         |||             y # t
        $ r t        j                  |  d       Y 7w xY w)N)r!  r#  r   r#  )r#  r!  r!  r!  z can not deal with 1d inputs)r   importorskipSeriesr   to_numpyr   r:  rJ   )r  rS  df_libr   r   r   expected_metrics          rl   test_metrics_dataframe_seriesr\    s       -F]]-.F]]/0F%FB !2FOO4EF F66*O<  B{m#?@ABs   %A? ?!B#"B#c                     i g}|j                         D ]U  \  }}|t        |       j                  vrg }|D ]/  }|D ](  }|j                         }|||<   |j	                  |       * 1 |}W |S )zHelper function to enable specifying a variety of additional params and
    their corresponding values, so that they can be passed to a metric function
    when testing for array api compliance.)rJ  r   r  r  append)	r   r-  r2  paramrF  new_combinationsrk   value
new_kwargss	            rl   r/  r/    s     #% 6v	&)4440 	4F 4#[[]
$)
5! ''
34	4 &6"6 &%rn   c                 Z   t         j                  j                  d      }|j                  ddd      }|j                  ddd      }| t        v rt        ||      \  }}| t        v r(|j                  ddd      }|j                  ddd      }t        |    } |||      }t        |t        t         j                  t        f      sJ t        |t         j                  t         j                  f      rJ t        |t              r(t        d |D              st        d |D              sJ yyy)	zEnsure that the returned values of all metrics are consistent.

    It can either be a float, a numpy array, or a tuple of floats or numpy arrays.
    It should not be a numpy float64 or float32.
    r   rt   r   r   r  c              3   <   K   | ]  }t        |t                y wr   )rh  rb   .0vs     rl   	<genexpr>z2test_returned_value_consistency.<locals>.<genexpr>*	  s     7A:a'7s   c              3   P   K   | ]  }t        |t        j                           y wr   )rh  rh   r  re  s     rl   rh  z2test_returned_value_consistency.<locals>.<genexpr>*	  s       ?
*+Jq"**%?
s   $&N)rh   r  r  r   r   r   r   r   rh  rb   r  tupler   float32r6  )r   r  r   r   r   r  s         rl   test_returned_value_consistencyrl  	  s    ))


"C[[AE[*F[[AE[*F))266B&&Q0Q0F66"EeeRZZ7888%"**bjj!9:::%7773 ?
/4?
 <
 	
 
 <
7  rn   )r  	functoolsr   inspectr   	itertoolsr   r   r   numpyrh   r   sklearn._configr   sklearn.datasetsr	   sklearn.exceptionsr
   sklearn.metricsr   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&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   sklearn.metrics._baser7   sklearn.metrics.pairwiser8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   sklearn.preprocessingrC   sklearn.utilsrD   sklearn.utils._array_apirE   rF   rG   rH   sklearn.utils._testingrI   rJ   rK   rL   rM   rN   sklearn.utils.fixesrO   rP   rQ   sklearn.utils.multiclassrR   sklearn.utils.validationrS   rT   REGRESSION_METRICSr!  r   CURVE_METRICSr   dictr   updater   METRIC_UNDEFINED_MULTICLASSunionr   r  r  r"  r$  METRICS_WITH_NORMALIZE_OPTIONr   r   r  r   r   METRICS_WITHOUT_SAMPLE_WEIGHTr   r   r   r   r   markparametrizesortedr   r   r   r   r   r  r  r-  r/  infr   invalids_nan_infrF  r1  r:  rB  rI  rN  filterwarningsrR  rT  rW  r]  rq  rx  r  r  intersectionr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  strrs  r  r  r(  r3  r5  r=  rA  rH  array_api_metric_checkersrN  rR  r\  r/  rl  r   rn   rl   <module>r     s      2 2   * ; 5- - - - - - - - - - - -\ 8    1 !   J I 3 EF. , 4	
 * 2 %&D  8 .AB 6 "#> G$9C 2 . %g.C3&O   0<!" (#$ 6% *6n666 '0GRV(W6 "7>U#K	6 $%56 " $6 /0K6 6w#86$ L%6& ]'6( !'-5"I)6, ]-6. /60 L162 364 !,566 '+C0768 096: 7;
M;6< :>=6> jqI?6@  LA6B W\:FC6D gmZHE6F W3GG6H gh8I6J gk7CK6L W_gFM6N ',@O6P 7='BQ6R W3GS6T gh8U6V gk7CW6X W_gFY6Z ",@"='B!+ysK)<YQG&	J#L)D$]IF*k6 r@ F n ,    WX?	 
 *  (  ]  zB  w}i@  W]G<  7='uM  Gzu  7='uM   Gzu! & w}c:' ( 6) * ')+ 0 (/( &--Dg%V-R0?  D f   & '   ) *   % &   = !   ( &=%B%B& "
 & " (# L! " * D "  H  H!   ! 	@ (9!:;
 <
B (=!>?: @:4'  
F3{#&HHI

**
Z 
F3{#&HHI{+{+| 
F3-.1SST22j !45'/ 6'/V VbffbffVbffbffVbffbffVbffa[Vbffa[  e'..02D2K2K2MN *,<=  >  #9#@#@#BC &&!Q#
&&!Q#  D , #9#@#@#BC  D $7 H%

K -	- !
"		#		 &
 H%(;>Q(Q!RS* T &* (;!<= > (;!<=
 >
$ OP.9H
 : QH
V (;!<= >  (E!FG H8 (E!FG H8 
F0==>QRS,,^32lO" (>!?@U AU 
F),NNOUU$ (>!?@U AU& (>!?@U AU^PB 

K%%c*<&=>
'	(AA 

K%%c*<&=>
'	(<<& 

K
 
!	"
'	( "	"EE 

K
 
!	"
'	( -	-EE" 

	=	=
'	(EE. 

!>>?A	AD2 
F&*T)UUV22$ 
F14GGH66B 
F3*+.PPQ22* (>?	4 @	4 	 $'	4 	5	1	%u-		&	% 	u	D
 f6 74=
@:%
P%
P'
T.b:e488e 488e 88e 488e(  488")e2 4883e< 488=eF 488GeP 488QeZ =>[e\ !.1R0S]e^ !-0Q/R_e` )5aeh 78iej )5ker )5sez )5{eB )5CeJ )5KeR )SeX =>YeZ =>[e\ :;]e^ ;<_e` 12aeb #)5%cej 12kel !@ Amen 67oep 9:qer 34set 78uev 01wex )5ye@  )5" 45Ie P 7P " )-/'  
 -/P/RS< T< 8(<={(;<= = >=&* !45
 6
rn   