
    Pi:                     
   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d Z ed           Zd	Zd
ZdZe                    eef          Ze                    eef          Ze                    d          Z e                    d          Z! eeeg          \  Z"Z#edk                         ej$                  Z%edk                         ej$                  Z& ee%e&g          \  Z'Z(e                    eef          Z) ej*        e)e)j+                  Z,di fdi fd e-d          fdi fd e-e                    e          f          fd e-e,f          fdi fdi fdi fd e-de                    e          f          fg
Z.ej/        0                    de.d            ej/        0                    d!eefe e!fe"e#fg          ej/        0                    d"e          d#                                     Z1ej/        0                    d$e          ej/        0                    d%e%e&fe'e(fg          ej/        0                    d"e          d&                                     Z2ej/        0                    de.d'            ej/        0                    d(ee e"g          ej/        0                    d"e          d)                                     Z3ej/        0                    de.d*            d+             Z4ej/        0                    d$e          ej/        0                    d,e%e'g          ej/        0                    d"e          d-                                     Z5ej/        0                    d.d/d0g          ej/        0                    de.d1            ej/        0                    d(ee g          d2                                     Z6ej/        0                    d$e          ej/        0                    d,e%e'g          d3                         Z7ej/        0                    d!eefe e!fe"e#fg          ej/        0                    d"e          d4                         Z8d5 Z9d6 Z:d7 Z;ej/        0                    d8 ej<        g d9          e=d:f ej<        d;d<ej>        g          e=d=fgd> eD              ej<        g d?          e=d@f ej<        g           e=dAf          dB             Z?dC Z@ej/        0                    dDe.          ej/        0                    dEejA        ej$        f          dF                         ZBdG ZCdH ZDdS )I    N)cdist)DistanceMetric)BOOL_METRICSDEPRECATED_METRICSDistanceMetric32DistanceMetric64)check_random_state)assert_allclosecreate_memmap_backed_dataignore_warnings)CSR_CONTAINERSc                 B    t          j        | |z
  |z            d|z  z  S )Ng      ?)npsum)x1x2ps      {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/metrics/tests/test_dist_metrics.py	dist_funcr      s#    627q.!!cAg..             float32g333333?gffffff?	euclidean	cityblock	minkowski)      ?         ?      r   	chebyshev
seuclideanVmahalanobisVIhammingcanberra
braycurtis)r   r   r    r"   r   wmetric_param_gridc                     | d         S Nr    paramss    r   <lambda>r6   A   
    F1I r   )idszX, Ycsr_containerc                    | \  }}|                                 } ||           ||          }}t          j        |                                 D ]0}	t	          t          ||	                    }
i }|dk    r|j        t          j        k    rddi}t          |||fi |
}t          j        ||j        fi |
}|                    ||          }|j        j        sJ t          ||fi | |                    ||          }|j        j        sJ t          ||fi | |                    ||          }|j        j        sJ t          ||fi | |                    ||          }|j        j        sJ t          ||fi | 2d S Nr(   rtolư>keys	itertoolsproductvaluesdictzipdtyper   r   r   r   
get_metricpairwiseflagsc_contiguousr
   )r0   XYr9   metric
param_gridr?   X_csrY_csrvalskwargs	rtol_dictD_scipy_cdistdm	D_sklearns                  r   
test_cdistrV   @   s    +FJ??D =##]]1%5%55E!:#4#4#6#67 ? ?c$oo&&	]""qw"*'<'<  IaF55f55&vqwAA&AA KK1%%	++++	=>>I>>>KKu--	++++	=>>I>>>KKq))	++++	=>>I>>>KK5))	++++	=>>I>>>>?? ?r   rL   zX_bool, Y_boolc                    | t           v r?t          t                    5  t          |||           }d d d            n# 1 swxY w Y   nt          |||           }t	          j        |           }|                    ||          }t          ||            ||           ||          }}|                    ||          }|j        j	        sJ t          ||           |                    ||          }|j        j	        sJ t          ||           |                    ||          }|j        j	        sJ t          ||           |                    ||          }|j        j	        sJ t          ||           d S N)category)
r   r   DeprecationWarningr   r   rF   rG   r
   rH   rI   )	rL   X_boolY_boolr9   rS   rT   rU   
X_bool_csr
Y_bool_csrs	            r   test_cdist_bool_metricr_   k   s    ###&8999 	: 	:
 "&&&99M	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: fff55		"6	*	*BFF++II}--- +]622MM&4I4I
JFF++I?''''I}---J
33I?''''I}---FJ//I?''''I}---J//I?''''I}-----   =AAc                     | d         S r2   r3   r4   s    r   r6   r6      r7   r   rJ   c                    | \  }}|                                 } ||          }t          j        |                                 D ]}t	          t          ||                    }i }	|dk    r|j        t          j        k    rddi}	t          |||fi |}
t          j        ||j        fi |}|                    |          }|j        j        sJ t          ||
fi |	 |                    |          }|j        j        sJ t          ||
fi |	 |                    ||          }|j        j        sJ t          ||
fi |	 d S r;   r>   )r0   rJ   r9   rL   rM   r?   rN   rP   rQ   rR   D_scipy_pdistrT   rU   D_sklearn_csrs                 r   
test_pdistre      s    +FJ??DM!E!:#4#4#6#67 C Cc$oo&&	]""qw"*'<'<  IaF55f55&vqwAA&AAKKNN	++++	=>>I>>>E**++++}BB	BBBE511++++}BB	BBBB1C Cr   c                     | d         S r2   r3   r4   s    r   r6   r6      r7   r   c                    | \  }}|                                 }d}t          j        |                                 D ] }t	          t          ||                    }t          j        |t          j	        fi |}t          j        |t          j
        fi |}|                    t                    }	|                    t                    }
|	j        t          j	        k    sJ |
j        t          j
        k    sJ t          |	|
|           |                    t          t                     }	|                    t          t"                    }
t          |	|
|           "d S )Ngh㈵>r<   )r?   r@   rA   rB   rC   rD   r   rF   r   float64r   rG   X64X32rE   r
   Y64Y32)r0   rL   rM   r?   r<   rP   rQ   dm64dm32D64D32s              r   'test_distance_metrics_dtype_consistencyrr      s?    +FJ??D D!:#4#4#6#67 - -c$oo&&(FFvFF(FFvFFmmC  mmC  yBJ&&&&yBJ&&&&
 	St,,,,mmC%%mmC%%St,,,,,%- -r   r[   c                    | t           v r?t          t                    5  t          |||           }d d d            n# 1 swxY w Y   nt          |||           }t	          j        |           }|                    |          }t          ||            ||          }|                    |          }t          ||           d S rX   )r   r   rZ   r   r   rF   rG   r
   )rL   r[   r9   rc   rT   rU   r]   s          r   test_pdist_bool_metricsrt      s    ###&8999 	: 	:
 "&&&99M	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: fff55		"6	*	*BF##II}---v&&JJ''II}-----r`   writable_kwargsTFc                     | d         S r2   r3   r4   s    r   r6   r6      r7   r   c                 l   |\  }}|                                 }t          j        |                                 D ]}t	          d |D                       rIt          j        |          }|D ]2}t          |t          j	                  r|
                    |            3t          t          ||                    }t          j        ||j        fi |}	|	                    |          }
t#          j        t#          j        |	                    }|                    |          }t)          |
|           d S )Nc              3   J   K   | ]}t          |t          j                  V  d S N)
isinstancer   ndarray).0vals     r   	<genexpr>ztest_pickle.<locals>.<genexpr>   s.      ;;sz#rz**;;;;;;r   write)r?   r@   rA   rB   anycopydeepcopyrz   r   r{   setflagsrC   rD   r   rF   rE   rG   pickleloadsdumpsr
   )ru   r0   rJ   rL   rM   r?   rP   r}   rQ   rT   D1dm2D2s                r   test_pickler      s+    +FJ??D!:#4#4#6#67    ;;d;;;;; 	8=&&D 8 8c2:.. 8LLL777c$oo&&&vqwAA&AA[[^^l6<++,,\\!__B   r   c                     t          j        |           }|                    |          }t          j        t          j        |                    }|                    |          }t          ||           d S ry   )r   rF   rG   r   r   r   r
   )rL   r[   rT   r   r   r   s         r   test_pickle_bool_metricsr     se     
	"6	*	*B	V		B
,v|B''
(
(C	f		BBr   c                    t          j        | d d d df                   } t          j        |d d d df                   } ||            ||          }}d }t          j        |j        d         |j        d         f          }t	          |           D ]+\  }}t	          |          D ]\  }	}
 |||
          |||	f<   ,t          j        d| j                  }|                    | |          }t          |
                    |          t          j        d|z            dz  d           t          ||           |                    ||          }|j        j        sJ t          ||           |                    ||          }|j        j        sJ t          ||           |                    | |          }|j        j        sJ t          ||           d S )Nr!   c                 b   dt          j        t          j        t          j        d| d         |d         z
  z            dz  t          j        | d                   t          j        |d                   z  t          j        d| d         |d         z
  z            dz  z  z                       z  S )Nr!   r   r   r   )r   arcsinsqrtsincos)r   r   s     r   haversine_slowz-test_haversine_metric.<locals>.haversine_slow  s    29Gsbebem,--2&A--"&A--/"&119N2O2OST2TTU 
 
 
 	
r   r   	haversiner   r=   rh   )r   asarrayzerosshape	enumerater   rF   rE   rG   r
   dist_to_rdistr   rH   rI   )rJ   rK   r9   rN   rO   r   D_referenceixijyjr   rU   s                r   test_haversine_metricr     s
    	
1QQQU8A

1QQQU8A =##]]1%5%55E
 
 
 (EKNEKN;<<K1 7 72q\\ 	7 	7EAr .r2 6 6K1	7 )+qw??I""1a((I	**BF33D,E,E,JQU    I{+++""5%00I?''''I{+++""5!,,I?''''I{+++""1e,,I?''''I{+++++r   c                  $   t           j                            d          } t          j        d          }t          j        dt          d          }t          j        t          j        |                    }t          j        t          j        |                    }|                    |           }|                    |           }|                    |           }|                    |           }t          ||           t          ||           d S )N)
   r"   r   pyfuncr!   )funcr   )
r   randomr   rF   r   r   r   r   rG   r
   )	rJ   r   r   euclidean_pkl
pyfunc_pklr   r   D1_pklD2_pkls	            r   test_pyfunc_metricr   ?  s    
	!!A)+66I&xi1EEEF Li!8!899Mfl62233J			A		B			B##A&&F  ##FBFF#####r   c                     d } t          d          }|                    dd          }t          j        d|           }t          j        d          }t	          |                    |          |                    |          dz             d S )	Nc                 \    | j         d         dk    sJ t          j        | |z
  dz            S )Nr   r"   r!   )r   r   r   )xys     r   custom_metricz+test_input_data_size.<locals>.custom_metricW  s-    wqzQvq1ul###r   r   r   r"   r   )r   r   r!   )r	   randr   rF   r
   rG   )r   rngrJ   r   eucls        r   test_input_data_sizer   T  s    $ $ $ Q

CQA&xmDDDF$[11DFOOA&&a(8(8A(=>>>>>r   c                  *   t          d          } |                     d          }|                     dd          }|                    d           |                    d           t          j        d|           t          j        d|	           d S )
Nr   d   r   Fr   r%   r&   r(   r)   )r	   r   r   r   rF   )r   weightsr*   s      r   test_readonly_kwargsr   c  s     Q

ChhsmmG	"b		B5!!!KKeK lg6666m333333r   zw, err_type, err_msg)r   r    iz!w cannot contain negative weightsr   r    zw contains NaNc                 :    g | ]} |g d g          t           dfS ))r   r    r   z8Sparse data was passed for w, but dense data is required)	TypeError)r|   r9   s     r   
<listcomp>r   x  sE     

 

 

 	 {{{m,,J

 

 

r   )abcz!could not convert string to floatza minimum of 1 is requiredc                     t          j        ||          5  t          j        dd|            d d d            d S # 1 swxY w Y   d S )Nmatchr   r"   r.   )pytestraisesr   rF   )r/   err_typeerr_msgs      r   -test_minkowski_metric_validate_weights_valuesr   s  s    $ 
xw	/	/	/ 9 9!+a88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   <A A c                  h   t                               t          dz             } t          j        dd|           }dt
          j        d          d| j        d          d}t          j        t          |	          5  |
                    t
          t                     d d d            d S # 1 swxY w Y   d S )
Nr   r   r"   r.   zEMinkowskiDistance: the size of w must match the number of features \(z\). Currently len\(w\)=r   .r   )r   random_sampledr   rF   rj   r   r   r   
ValueErrorrG   rl   )w2rT   msgs      r   +test_minkowski_metric_validate_weights_sizer     s    			1q5	!	!B		";!r	:	:	:B	/%(Yq\	/ 	/ "	/ 	/ 	/ 
 
z	-	-	-  
C                 s   9!B''B+.B+zmetric, metric_kwargsrE   c                    t           j        t          t           j        t          i|         }d |                                D             }t          t          j        | |fi |          }t           |j        | fi |          }||u sJ d S )Nc                 &    i | ]\  }}||d          S )r   r3   )r|   kvs      r   
<dictcomp>z)test_get_metric_dtype.<locals>.<dictcomp>  s"    ???AQ!???r   )	r   r   r   ri   r   itemstyper   rF   )rL   metric_kwargsrE   specialized_clsgeneric_typespecialized_types         r   test_get_metric_dtyper     s     	
$

$ O @?)<)<)>)>???M1&%QQ=QQRRL6O6vOOOOPP+++++++r   c                      t           j        } d}t          j        t          |          5  t          j        d|            d d d            d S # 1 swxY w Y   d S )Nz8Unexpected dtype .* provided. Please select a dtype fromr   	manhattan)r   int32r   r   r   r   rF   )rE   r   s     r   test_get_metric_bad_dtyper     s    HE
EC	z	-	-	- 6 6!+u5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   AAAc                      d} t          j        t          |           5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nzp must be greater than 0r   r   r   r#   )r   r   r   r   rF   )r   s    r   .test_minkowski_metric_validate_bad_p_parameterr     s    
$C	z	-	-	- 4 4!+33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   AA	A)Er   r@   r   numpyr   r   scipy.spatial.distancer   sklearn.metricsr   sklearn.metrics._dist_metricsr   r   r   r   sklearn.utilsr	   sklearn.utils._testingr
   r   r   sklearn.utils.fixesr   r   r   r   n1n2r   rj   rl   astyperk   rm   X_mmapY_mmapri   r[   r\   X_bool_mmapY_bool_mmapr'   dotTr*   rC   METRICS_DEFAULT_PARAMSmarkparametrizerV   r_   re   rr   rt   r   r   r   r   r   r   arrayr   nanr   r   r   r   r   r   r3   r   r   <module>r      s              ( ( ( ( ( ( * * * * * *            - , , , , ,         
 / . . . . ./ / / 	Q  	Q  	jj	jj,,c3Z88  )		BJ	'	'
)		BJ	'	'667GHH k q!fRVAqs^^ ""$$,---."443,,Q//12223DDRENNN#O2$$)c.?.?.B.B-DEEEF  /5M5M    3*sCj66:J!KLL.99#? #? :9 ML 
#?L <00'+{)CD  .99!. !. :9  10
!.H /5M5M    sC011.99C C :9 21 
C> /5M5M   - - -> <00FK#899.99. . :9 :9 10.( *T5M::/5M5M    sCj))    *)  ;:
 " <00FK#899  :9 10 3*sCj66:J!KLL.99), ), :9 ML),X$ $ $*? ? ?4 4 4  	---	 	 *.QR	1c26"	#	#Z1AB

 

 "0

 

 

 
///	"	"J0ST 
"z#?@ "9 9# "9
	 	 	 02HII2:rz":;;, , <; JI,6 6 64 4 4 4 4r   