
    rh:                     
   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j9                  eef      Zej9                  eef      Zej?                  d      Z ej?                  d      Z! eeeg      \  Z"Z#edk  j?                  ejH                        Z%edk  j?                  ejH                        Z& ee%e&g      \  Z'Z(ej9                  eef      Z) ejT                  e)e)jV                        Z,di fdi fd e-d      fdi fd e-ej9                  e      f      fd e-e,f      fdi fdi fdi fd e-dej9                  e      f      fg
Z.ej^                  ja                  de.d        ej^                  ja                  d!eefe e!fe"e#fg      ej^                  ja                  d"e      d#                      Z1ej^                  ja                  d$e      ej^                  ja                  d%e%e&fe'e(fg      ej^                  ja                  d"e      d&                      Z2ej^                  ja                  de.d'        ej^                  ja                  d(ee e"g      ej^                  ja                  d"e      d)                      Z3ej^                  ja                  de.d*        d+        Z4ej^                  ja                  d$e      ej^                  ja                  d,e%e'g      ej^                  ja                  d"e      d-                      Z5ej^                  ja                  d.d/d0g      ej^                  ja                  de.d1        ej^                  ja                  d(ee g      d2                      Z6ej^                  ja                  d$e      ej^                  ja                  d,e%e'g      d3               Z7ej^                  ja                  d!eefe e!fe"e#fg      ej^                  ja                  d"e      d4               Z8d5 Z9d6 Z:d7 Z;ej^                  ja                  d8 ejx                  g d9      e=d:f ejx                  d;d<ej|                  g      e=d=fgeD  cg c]  }  | g d>g      e?d?f c}  ejx                  g d@      e=dAf ejx                  g       e=dBf      dC        Z@dD ZAej^                  ja                  dEe.      ej^                  ja                  dFej                  ejH                  f      dG               ZCdH ZDdI ZEyc c} w )J    N)cdist)DistanceMetric)BOOL_METRICSDEPRECATED_METRICSDistanceMetric32DistanceMetric64)check_random_state)assert_allclosecreate_memmap_backed_dataignore_warnings)CSR_CONTAINERSc                 D    t        j                  | |z
  |z        d|z  z  S )Ng      ?)npsum)x1x2ps      z/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_dist_metrics.py	dist_funcr      s"    662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                 ,   | \  }}|j                         } ||       ||      }}t        j                  |j                          D ]K  }	t	        t        ||	            }
i }|dk(  r!|j                  t        j                  k(  rddi}t        |||fi |
}t        j                  ||j                  fi |
}|j                  ||      }|j                  j                  sJ t        ||fi | |j                  ||      }|j                  j                  sJ t        ||fi | |j                  ||      }|j                  j                  sJ t        ||fi | |j                  ||      }|j                  j                  sJ t        ||fi | N y 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%55E!!:#4#4#67 ?c$o&	]"qww"**'<  IaF5f5&&vqww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t        |||       }t	        j
                  |       }|j                  ||      }t        |        ||       ||      }}|j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       y # 1 sw Y   &xY w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   sC    ##&89 	:
 "&&&9M	: 	: fff5		"	"6	*BFF+II}- +62M&4I
JFF+I??''''I}-J
3I??''''I}-FJ/I??''''I}-J/I??''''I}-?	: 	:s   EE#c                     | d   S r2   r3   r4   s    r   r6   r6      r7   r   rJ   c                    | \  }}|j                         } ||      }t        j                  |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                  j                  sJ t        ||
fi |	 |j                  |      }|j                  j                  sJ t        ||
fi |	 |j                  ||      }|j                  j                  sJ t        ||
fi |	  y r;   r>   )r0   rJ   r9   rL   rM   r?   rN   rP   rQ   rR   D_scipy_pdistrT   rU   D_sklearn_csrs                 r   
test_pdistrd      s?    +FJ??D!E!!:#4#4#67 Cc$o&	]"qww"**'<  IaF5f5&&vqwwA&AKKN	++++	=>I>E*++++}B	BE51++++}B	B1Cr   c                     | d   S r2   r3   r4   s    r   r6   r6      r7   r   c                    | \  }}|j                         }d}t        j                  |j                          D ]  }t	        t        ||            }t        j                  |t        j                  fi |}t        j                  |t        j                  fi |}|j                  t              }	|j                  t              }
|	j                  t        j                  k(  sJ |
j                  t        j                  k(  sJ t        |	|
|       |j                  t        t               }	|j                  t        t"              }
t        |	|
|        y )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_consistencyrq      s    +FJ??D D!!:#4#4#67 -c$o&((FvF((FvFmmC mmC yyBJJ&&&yyBJJ&&&
 	St,mmC%mmC%St,%-r   r[   c                 B   | t         v r't        t              5  t        |||       }d d d        nt        |||       }t	        j
                  |       }|j                  |      }t        |        ||      }|j                  |      }t        ||       y # 1 sw Y   axY wrX   )r   r   rZ   r   r   rF   rG   r
   )rL   r[   r9   rb   rT   rU   r]   s          r   test_pdist_bool_metricsrs      s     ##&89 	:
 "&&&9M	: 	: fff5		"	"6	*BF#II}-v&JJ'II}-	: 	:s   BBwritable_kwargsTFc                     | d   S r2   r3   r4   s    r   r6   r6      r7   r   c                 F   |\  }}|j                         }t        j                  |j                          D ]  }t	        d |D              rIt        j                  |      }|D ]/  }t        |t        j                        s|j                  |        1 t        t        ||            }t        j                  ||j                  fi |}	|	j!                  |      }
t#        j$                  t#        j&                  |	            }|j!                  |      }t)        |
|        y )Nc              3   P   K   | ]  }t        |t        j                           y wN)
isinstancer   ndarray).0vals     r   	<genexpr>ztest_pickle.<locals>.<genexpr>   s     ;sz#rzz*;s   $&write)r?   r@   rA   rB   anycopydeepcopyry   r   rz   setflagsrC   rD   r   rF   rE   rG   pickleloadsdumpsr
   )rt   r0   rJ   rL   rM   r?   rP   r|   rQ   rT   D1dm2D2s                r   test_pickler      s     +FJ??D!!:#4#4#67  ;d;;==&D 8c2::.LLL78 c$o&&&vqwwA&A[[^ll6<<+,\\!_B r   c                     t        j                  |       }|j                  |      }t        j                  t        j
                  |            }|j                  |      }t        ||       y rx   )r   rF   rG   r   r   r   r
   )rL   r[   rT   r   r   r   s         r   test_pickle_bool_metricsr     sQ     
	"	"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                        }|j                  | |      }t        |j                  |      t        j                  d|z        dz  d       t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  | |      }|j                  j                  sJ t        ||       y )Nr!   c                 J   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    299GGsbebem,-2&&A-"&&A-/"&&119N2OST2TTU
 
 	
r   r   	haversiner   r=   rg   )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    	

1QU8A


1QU8A #]1%55E
 ((EKKNEKKN;<K1 72q\ 	7EAr .r2 6K1	77 ))+qww?I""1a(I	*BFF33D,E,JQU I{+""5%0I??''''I{+""5!,I??''''I{+""1e,I??''''I{+r   c                     t         j                  j                  d      } t        j                  d      }t        j                  dt        d      }t        j                  t        j                  |            }t        j                  t        j                  |            }|j                  |       }|j                  |       }|j                  |       }|j                  |       }t        ||       t        ||       y )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))+6I&&xi1EF LLi!89Mfll623J			A	B		B##A&F  #FBFF#r   c                      d } t        d      }|j                  dd      }t        j                  d|       }t        j                  d      }t	        |j                  |      |j                  |      dz         y )	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-    wwqzQvvq1ul##r   r   r   r"   r   )r   r   r!   )r	   randr   rF   r
   rG   )r   rngrJ   r   eucls        r   test_input_data_sizer   T  se    $ Q
CQA&&xmDF$$[1DFOOA&a(8A(=>r   c                     t        d      } | j                  d      }| j                  dd      }|j                  d       |j                  d       t        j                  d|       t        j                  d|	       y )
Nr   d   r   Fr~   r%   r&   r(   r)   )r	   r   r   r   rF   )r   weightsr*   s      r   test_readonly_kwargsr   c  sl     Q
ChhsmG	"b	B5!KKeK lg6m3r   zw, err_type, err_msg)r   r    iz!w cannot contain negative weightsr   r    zw contains NaN)r   r    r   z8Sparse data was passed for w, but dense data is required)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        y # 1 sw Y   y xY w)Nmatchr   r"   r.   )pytestraisesr   rF   )r/   err_typeerr_msgs      r   -test_minkowski_metric_validate_weights_valuesr   s  s9    $ 
xw	/ 9!!+a89 9 9s	   :Ac                  N   t         j                  t        dz         } t        j                  dd|       }dt
        j                  d    d| j                  d    d}t        j                  t        |	      5  |j                  t
        t               d d d        y # 1 sw Y   y xY w)
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   ri   r   r   r   
ValueErrorrG   rk   )w2rT   msgs      r   +test_minkowski_metric_validate_weights_sizer     s    			1q5	!B		"	";!r	:B	%%(YYq\N 3  "}A	/ 
 
z	- 
C  s   7BB$zmetric, metric_kwargsrE   c                 :   t         j                  t        t         j                  t        i|   }|j                         D ci c]  \  }}||d    }}}t        t        j                  | |fi |      }t         |j                  | fi |      }||u sJ y c c}}w r2   )	r   r   r   rh   r   itemstyper   rF   )rL   metric_kwargsrE   specialized_clskvgeneric_typespecialized_types           r   test_get_metric_dtyper     s     	

$


$ O *7)<)<)>?AQ!W?M?11&%Q=QRL6O66vOOP++++	 @s   Bc                      t         j                  } d}t        j                  t        |      5  t        j                  d|        d d d        y # 1 sw Y   y xY w)Nz8Unexpected dtype .* provided. Please select a dtype fromr   	manhattan)r   int32r   r   r   r   rF   )rE   r   s     r   test_get_metric_bad_dtyper     sC    HHE
EC	z	- 6!!+u56 6 6s   AAc                      d} t        j                  t        |       5  t        j                  dd       d d d        y # 1 sw Y   y xY w)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!!+34 4 4s	   ?A)Fr   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   ri   rk   astyperj   rl   X_mmapY_mmaprh   r[   r\   X_bool_mmapY_bool_mmapr'   dotTr*   rC   METRICS_DEFAULT_PARAMSmarkparametrizerV   r_   rd   rq   rs   r   r   r   r   r   r   arrayr   nan	TypeErrorr   r   r   r   r   r   )r9   s   0r   <module>r      s        ( *  - 
 // 	Q 	Q 	jj	jj,c3Z8  )		BJJ	'
)		BJJ	'67GH k q!fRVVAqss^ ""$,-."43,,Q/123DREN#O2$)c.?.?.B-DEF  /5M   3*sCj66:J!KL.9#? : M
#?L <0'+{)CD .9!. : 1
!.H /5M   sC01.9C : 2
C> /5M  --> <0FK#89.9. : : 1.( *T5M:/5M   sCj)  * ;
 " <0FK#89 : 1 3*sCj66:J!KL.9), : M),X$*?4  	-	 *.QR	1c266"	#Z1AB "0

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

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

s   T>